iOS:avassetwriterを使用した一連の画像で映画を作る方法
-
27-10-2019 - |
質問
この質問は、ここと他のフォーラムの両方でさまざまな形で何度も尋ねたのを見てきました。質問のいくつかは答えられます、いくつかはそうではありません。回答者や著者が成功したと主張するいくつかの場所があります。私は、成功を主張するが、同じ結果をまだ見ていないものから例を実装しました。
サンプルバッファーがAvcaptureSessionから取得されたときに、AvassetWriter(およびAvassetWriterPutpixElbufferAdaptor)を使用して画像データとオーディオデータを同時に記述することができます。ただし、他の方法で生成されたcgimagerefがあり、cvpixelbufferrefを「ゼロから」構築する場合、appendpixelbuffer:with presentationtime method of avassetwriterpixelbufferadaptorはいくつかのフレームで成功し、その後のすべてのフレームで失敗します。結果の映画ファイルはもちろん無効です。
私のサンプルコードを次のように見ることができます。 http://pastebin.com/fcjzjmmi
画像は有効であり、デバッグウィンドウに表示することで画像が検証されます(50〜53行目を参照)。アプリは機器でテストされており、アプリの実行中はメモリの使用率が低くなっています。メモリ警告はありません。
私が知る限り、私は利用可能なドキュメントに従っています。サンプルコードが失敗するのはなぜですか?それを修正するために何をする必要がありますか?
誰かがAvassetWriterInputPixelBufferAdaptorを自分の画像で扱うことに成功した場合は、Chimeでお願いします。
解決 2
この作業を行うために必要な2つのことがあります。
独自のavassetwriterinputpixelbufferadaptorをデバッグしている場合は、CMTimeをスキップしないことを確認し、CMTimeを繰り返さないように注意してください(常に時間に1つのフレームがあります)。
他のヒント
例からavassetwriterを使用して、一連の画像で映画を作ります - https://github.com/caferrara/img-to-video