将缓冲区附加到 AVAssetWriterInputPixelBufferAdaptor *不* 按时间顺序排列?
Append buffers to an AVAssetWriterInputPixelBufferAdaptor *not* chronologically?
我将 CVPixelBufferRefs 附加到连接到 AVAssetWriterInput 的 AVAssetWriterInputPixelBufferAdaptor 以使用 AVAssetWriter 写入文件。
那么,我打电话给
[pixelAdaptor appendPixelBuffer:pxbuffer withPresentationTime:someCMTime];
并且它正常工作。
现在,我按顺序执行此操作,因此在 CMTimeZero,我添加第一帧,在 0.5 秒添加另一帧,在 1 秒添加另一帧,依此类推。
我想知道,我是必须按顺序做,还是也可以随机做?为了争论,反过来呢?比如,先在 1s 处添加一个缓冲区,然后在 0.5s 处,然后在 0s 处?
我问的原因是,我试过了,它崩溃了,但我不确定它崩溃是因为我试图随机追加(非顺序),还是有其他原因(像异步追加)?
只有当输入告诉我(readyForMoreMediaData)时,我才会在串行调度队列上追加。
问题是:非顺序附加是否应该起作用,还是设计使它不起作用?
谢谢,
马蒂亚斯
我刚收到 Apple 媒体工程师的回复:
"AVAssetWriter requires receiving the frames in order."
这就清楚了:)
我将 CVPixelBufferRefs 附加到连接到 AVAssetWriterInput 的 AVAssetWriterInputPixelBufferAdaptor 以使用 AVAssetWriter 写入文件。
那么,我打电话给
[pixelAdaptor appendPixelBuffer:pxbuffer withPresentationTime:someCMTime];
并且它正常工作。
现在,我按顺序执行此操作,因此在 CMTimeZero,我添加第一帧,在 0.5 秒添加另一帧,在 1 秒添加另一帧,依此类推。
我想知道,我是必须按顺序做,还是也可以随机做?为了争论,反过来呢?比如,先在 1s 处添加一个缓冲区,然后在 0.5s 处,然后在 0s 处?
我问的原因是,我试过了,它崩溃了,但我不确定它崩溃是因为我试图随机追加(非顺序),还是有其他原因(像异步追加)?
只有当输入告诉我(readyForMoreMediaData)时,我才会在串行调度队列上追加。
问题是:非顺序附加是否应该起作用,还是设计使它不起作用?
谢谢, 马蒂亚斯
我刚收到 Apple 媒体工程师的回复:
"AVAssetWriter requires receiving the frames in order."
这就清楚了:)