【问题标题】:Why is VideoDataOutput's availableVideoCodecTypes empty?为什么 VideoDataOutput 的 availableVideoCodecTypes 为空?
【发布时间】:2018-04-01 07:33:58
【问题描述】:

AVCaptureVideoDataOutput 有一个字段availableVideoCodecTypes,它应该告诉您可以使用哪些编解码器来录制视频,但它始终是空的。这是为什么呢?

我在创建 VideoDataOutput 并将其添加到会话后立即检查了它的值,但它是空的。我在运行 iOS 10 的 iPhone 5s 和运行 iOS 11 的 iPhone 7 Plus 上试过,但两者都是空的。

这个问题是关于 AVCaptureVideoDataOutput。 AVCaptureMovieFileOutput 有 another field 同名,这有效,但问题不在于这个。

有人可以说 VideoDataOutput 为您提供帧而不是记录到文件中,因此不涉及编解码器,这就是该属性为 nil 的原因,但在这种情况下,为什么要拥有该属性?

【问题讨论】:

    标签: ios iphone codec avcapture


    【解决方案1】:

    我不知道为什么它是空的。我自己也遇到了同样的问题,但是您可以在 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
    

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 2015-06-30
      • 2016-07-11
      • 2012-12-17
      • 2013-09-21
      • 2012-02-15
      • 1970-01-01
      • 2020-08-22
      • 2018-11-04
      相关资源
      最近更新 更多