iOS:如何使用AVAssetWriter制作包含一系列图像的电影

时间:2011-01-28 18:54:43

标签: iphone objective-c ios avassetwriter

我已经在这里和其他论坛中以不同的形式多次询问过这个问题。有些问题得到了解答,有些则没有。回答者或作者声称有一些成功的地方。我已经实现了那些声称成功的例子,但还没有看到相同的结果。

当从AVCaptureSession获取样本缓冲区时,我能够成功地使用AVAssetWriter(和AVAssetWriterInputPixelBufferAdaptor)同时写入图像数据和音频数据。但是,如果我有以其他方式生成的CGImageRef,并且“从头开始”构建CVPixelBufferRef,则AVAssetWriterInputPixelBufferAdaptor的appendPixelBuffer:withPresentationTime方法会成功几帧,然后对所有后续帧都会失败。生成的影片文件当然无效。

您可以在以下位置查看我的示例代码:http://pastebin.com/FCJZJmMi

图像有效,并通过在调试窗口中显示来验证(参见第50-53行)。该应用程序已经过仪器测试,在整个应用程序运行期间内存利用率很低。它没有得到任何内存警告。

据我所知,我已经遵循了可用的文档。为什么示例代码失败?需要做些什么来解决它?

如果有人成功获得了AVAssetWriterInputPixelBufferAdaptor来处理自己的图片,请加入。

2 个答案:

答案 0 :(得分:9)

使用示例中的AVAssetWriter制作包含一系列图像的电影 - https://github.com/caferrara/img-to-video

答案 1 :(得分:3)

完成这项工作需要两件事。

如果您正在调试自己的AVAssetWriterInputPixelBufferAdaptor,请注意确保不要跳过CMTime,并确保不再重复CMTime(每次只有一帧慢速总是)。