13

アプリの 1 つのビデオ エクスポート機能を構築しています。本質的に、このビデオは、異なる (短い) 期間持続する 6 つの異なる画像のうちの 1 つのシリーズです。

さまざまな期間の 283 枚の画像を含むものをエクスポートすると、エクスポートは正常に機能しますが、803 枚のうちの 1 つをエクスポートしようとすると、恐ろしい「操作を完了できませんでした」というエラーが表示されます (別名「何が爆発したのかわかりません。 AVFoundation のエラー報告はひどいものです」)。

my を使用して 754 番目のフレーム (常に 754 番目のフレーム) を追加しようとするとAVAssetWriterInputPixelBufferAdaptorappendPixelBuffer:withPresentationTime:が返さNOれ、AVAssetWriterのステータスが失敗し、そのエラーは次のようになります。

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x17ab2050 {Error Domain=NSOSStatusErrorDomain Code=-16364 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-16364)}

私の人生では、その根本的なエラー ( OSStatus-16364) が何であるかを理解することはできません。www.osstatus.comは見当もつかないし、macerrorそのようなものは存在しないと言っているし、SDK ヘッダーを検索するためのこのPython スクリプトは何も見つけられない. また、いくつかの OSStatus エラーのような 4 文字のコードでもありません (これをチェックするのに失敗した場合を除きます)。

私が見つけた「操作を完了できません」というエラーの一般的な原因をすべて除外しました。ファイルシステムのアクセス許可や上書きとは関係ありません。 の 2 つの呼び出しがappendPixelBuffer同じプレゼンテーション時間を持つことはありません。

これはメモリの問題ではなく (ビデオのエクスポート中、メモリ使用量は 165MB で一定です)、CPU は 3% 近くにとどまります。

重要な場合は、毎回 sCVPixelBufferから新しい画像を作成するのではなく、6 つの画像に対して同じ 6 s を何度も再利用します。UIImageこれはパフォーマンスに役立つようで、毎回新しいものに変更しても何も変わらないように見えますが (代わりにフレーム 753 で失敗することを除いて)、誰にもわかりません。

誰かがこれが何であるか考えていますか?

4

2 に答える 2