iOS:如何使用AVAssetWriter制作一系列影像

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

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

你可以在http://pastebin.com/FCJZJmMi看到我的示例代码

图像是有效的,并通过在debugging窗口中显示来validation(见第50-53行)。 该应用程序已经过testing仪器,并在整个应用程序的运行内存利用率低。 它没有得到任何内存警告。

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

如果有人成功地获得AVAssetWriterInputPixelBufferAdaptor使用自己的图像,请join。

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

有两件事情需要做这个工作。

如果您正在debugging您自己的AVAssetWriterInputPixelBufferAdaptor,请小心确保不要跳过CMTime,也请确保不要重复CMTime(每次只有一帧慢)。