作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
AVCaptureVideoDataOutput 有一个字段 availableVideoCodecTypes它应该告诉您可以使用哪些编解码器来录制视频,但它总是空的。这是为什么?
我在创建 VideoDataOutput 并将其添加到 session 后立即检查了它的值,但它是空的。我尝试了运行 iOS 10 的 iPhone 5s 和运行 iOS 11 的 iPhone 7 Plus,两者都是空的。
这个问题是关于 AVCaptureVideoDataOutput 的。 AVCaptureMovieFileOutput 有 another field使用相同的名称,这可以工作,但问题不在于此。
有人可能会说 VideoDataOutput 为您提供帧而不是记录到文件,因此不涉及编解码器,这就是该属性为零的原因,但在这种情况下,为什么要拥有该属性呢?
最佳答案
不知道为什么是空的。我自己也遇到了同样的问题,但是您可以在 AVCaptureVideoDataOutput 上调用以下方法并获得有效结果:
- (NSArray<AVVideoCodecType> *)availableVideoCodecTypesForAssetWriterWithOutputFileType:(AVFileType)outputFileType;
用法示例:
NSArray *availableVideoCodecTypes = [videoDataOutput availableVideoCodecTypesForAssetWriterWithOutputFileType:AVFileTypeQuickTimeMovie];
在运行 iOS 12 的 iPhone XR 上,此返回
hvc1, // AKA HVEC or H.265
avc1, // AKA H.264
jpeg
在运行 iOS 12 的 iPhone 6s+ 上,它会返回
avc1, // AKA H.264
jpeg
关于ios - 为什么VideoDataOutput的availableVideoCodecTypes为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46843849/
我是一名优秀的程序员,十分优秀!