【问题标题】:Setting AVMutableComposition's frameDuration设置 AVMutableComposition 的 frameDuration
【发布时间】:2012-03-15 17:41:31
【问题描述】:

我正在使用 Apple 的 WWDC 2010 示例包中的 AVEditDemo 项目,并且我正在尝试更改导出视频的帧速率。视频使用 AVMutableComposition 导出,其 frameDuration 设置如下:

videoComposition.frameDuration = CMTimeMake(1, 30); // 30 fps

出于某种原因,将 30 更改为 25 不会更改使用 AVAssetExportSession 导出的视频的 framerate。有谁知道为什么?

【问题讨论】:

    标签: iphone ios avfoundation avassetexportsession avmutablecomposition


    【解决方案1】:

    回复达特先生的回答: 我没有尝试AVEditDemo,但我在 iOS 8 上没有遇到此问题,在 iOS 7 上也没有。

    我正在使用 AVMutableVideoComposition 并将其设置为 AVAssetExportSession's videoComposition。

    .
    .
    AVMutableVideoCompositionInstruction * instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
    AVMutableVideoCompositionLayerInstruction *layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoTrack];
    AVMutableVideoComposition *compositionInstruction = [AVMutableVideoComposition videoComposition];
    compositionInstruction.instructions = @[instruction];
    compositionInstruction.frameDuration = CMTimeMake(1, 30);
    .
    .    
    AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:composition AVAssetExportPresetHighestQuality];
    exporter.videoComposition = compositionInstruction;
    

    videoTrack 是从资产创建的AVMutableCompositionTrack

    【讨论】:

      【解决方案2】:

      似乎AVAssetExportSession 预设优先于AVVideoComposition frameDuration。我打开了一个错误报告:

      http://openradar.appspot.com/11127156

      【讨论】:

      • 你知道这是否已经解决了吗?
      • 没有来自 Apple 的消息... :-(
      • 你在 iOS 8 或 OS X Yosemite 上测试过吗?
      • 不...如果有人这样做,我会对答案感兴趣。
      【解决方案3】:

      客户端可以将sourceTrackIDForFrameTiming 设置为kCMPersistentTrackID_InvalidframeDuration 为适当的值,以指定独立于源轨道时序的最大输出帧速率。

      videoComposition.sourceTrackIDForFrameTiming = kCMPersistentTrackID_Invalid;
      videoComposition.frameDuration = CMTimeMake(1, 30);
      

      【讨论】:

      • 您如何发现将 sourceTrackIDForFrameTiming 设置为 kCMPersistentTrackID_Invalid 是一种选择?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多