この質問が、ここと他のフォーラムの両方でさまざまな形で何度も出されているのを見てきました。質問には答えられるものもあれば、答えられないものもあります。回答者または著者が成功したと主張する場所がいくつかあります。私は成功を主張する例を実装しましたが、同じ結果はまだ見ていません。
サンプル バッファが AVCaptureSession から取得されたときに、AVAssetWriter (および AVAssetWriterInputPixelBufferAdaptor) を使用して、画像データと音声データを同時に書き込むことができました。ただし、別の方法で生成された CGImageRef があり、CVPixelBufferRef を「ゼロから」作成すると、AVAssetWriterInputPixelBufferAdaptor の appendPixelBuffer:withPresentationTime メソッドが数フレーム成功し、その後のすべてのフレームで失敗します。結果のムービー ファイルはもちろん有効ではありません。
サンプル コードはhttp://pastebin.com/FCJZJmMiで確認できます。
イメージは有効であり、デバッグ ウィンドウに表示することで検証されます (50 ~ 53 行を参照)。アプリは Instruments でテストされており、アプリの実行中のメモリ使用率は低くなっています。メモリ警告は表示されません。
私が知る限り、利用可能なドキュメントに従っています。サンプル コードが失敗するのはなぜですか? それを修正するために何をする必要がありますか?
AVAssetWriterInputPixelBufferAdaptor を自分の画像で正常に動作させた人がいる場合は、声をかけてください。