Vad*_*ick 8 iphone codec ios avcapture
AVCaptureVideoDataOutput有一个字段availableVideoCodecTypes,它应该告诉你可以用来录制视频的编解码器,但它总是空的.为什么是这样?
我在创建VideoDataOutput后立即检查了它的值,并在将其添加到会话后,但它是空的.我尝试使用运行iOS 10的iPhone 5s和运行iOS 11的iPhone 7 Plus,两者都是空的.
这个问题是关于AVCaptureVideoDataOutput.AVCaptureMovieFileOutput有另一个具有相同名称的字段,但是问题与此无关.
可以说VideoDataOutput为您提供帧而不是记录到文件,因此不涉及编解码器,这就是属性为零的原因,但在这种情况下,为什么要拥有该属性?
小智 1
我不知道为什么它是空的。我自己也遇到了同样的问题,但是您可以在 AVCaptureVideoDataOutput 上调用以下方法并获得有效结果:
- (NSArray<AVVideoCodecType> *)availableVideoCodecTypesForAssetWriterWithOutputFileType:(AVFileType)outputFileType;
Run Code Online (Sandbox Code Playgroud)
用法示例:
NSArray *availableVideoCodecTypes = [videoDataOutput availableVideoCodecTypesForAssetWriterWithOutputFileType:AVFileTypeQuickTimeMovie];
Run Code Online (Sandbox Code Playgroud)
在运行 iOS 12 的 iPhone XR 上,此返回
hvc1, // AKA HVEC or H.265
avc1, // AKA H.264
jpeg
Run Code Online (Sandbox Code Playgroud)
在运行 iOS 12 的 iPhone 6s+ 上它会返回
avc1, // AKA H.264
jpeg
Run Code Online (Sandbox Code Playgroud)