アプリの 1 つのビデオ エクスポート機能を構築しています。本質的に、このビデオは、異なる (短い) 期間持続する 6 つの異なる画像のうちの 1 つのシリーズです。
さまざまな期間の 283 枚の画像を含むものをエクスポートすると、エクスポートは正常に機能しますが、803 枚のうちの 1 つをエクスポートしようとすると、恐ろしい「操作を完了できませんでした」というエラーが表示されます (別名「何が爆発したのかわかりません。 AVFoundation のエラー報告はひどいものです」)。
my を使用して 754 番目のフレーム (常に 754 番目のフレーム) を追加しようとするとAVAssetWriterInputPixelBufferAdaptor
、appendPixelBuffer: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 で失敗することを除いて)、誰にもわかりません。
誰かがこれが何であるか考えていますか?