我正在处理一个从网络接收H264流并将该流写入MOV文件的应用程序。为了写入MOV,我使用的是AVAssetWriter(AVAssetWriterInput设置为nil)。虽然我能够在Quicktime中使用AVAsssetWriter以MOV格式转储和播放流,但如果在播放电影时在QUicktime中搜索电影,则会在下一个I帧发生之前完全失真。使用MOV文件不会出现这种行为。
还尝试将AVAssetWriterInput设置指定为QuicktimeMovie,Width,Height,Bitrate。但是从第一帧写入时失败了。还观察到如果使用原始帧而不是H264流并指定输出设置,则看到正常工作。
还尝试在将CMSampleBuffer提供给AVAssetWriterInput之前指定以下附件。但仍然在寻找MOV文件不合适。
kCMSampleAttachmentKey_IsDependedOnByOthers
表示I frame和
kCMSampleAttachmentKey_DependsOnOthers
kCMSampleAttachmentKey_NotSync
表示P帧
请提供有关如何使用AVAssetWriter更正搜索MOV文件的建议。我猜对于已经编码的H264帧使用AVAssetWriter时会出现一些同步帧偏移表问题。