問題タブ [avcomposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
110 参照

swift - AVAsset にタイムラプス ビデオが含まれている場合、AV エクスポート セッションが黒いビデオをエクスポートするのはなぜですか? 問題を解決するには?

AVAsset の期間とコンテンツに応じて avcompostion を生成する関数を作成しました。

ビデオがスローモーションまたは通常の場合は完全に正常に動作しますが、videoType がタイムラプスの場合、エクスポート後に黒い画面が表示されます。

avplayer で AVAsset を再生すると、完璧なタイムラプスが表示されます。問題はエクスポート中にのみ発生します。

0 投票する
0 に答える
299 参照

ios - ビデオ フレームの読み取り中に AVVideoComposition が失敗する

ソースビデオがあり、ソースビデオの各フレームの領域を取得して、そこから新しいビデオを生成したいと考えています。たとえば、解像度Ax B、コンテンツ サイズXx Y、出力解像度Cxのビデオがある場合、元のビデオの各フレームの最初のxピクセルをコンテンツとする解像度xDのビデオを作成します。CDXY

これを実現するためにAVAssetReader、ソース ビデオの読み取りには を使用しAVAssetWriter、新しいビデオの書き込みには を使用しています。ソース ビデオの領域Xxだけを抽出するために、アセット リーダーの出力としてオブジェクトを使用しています。セットアップ コードは次のようなものです。YAVAssetReaderVideoCompositionOutput

次に、ビデオ コンテンツをトリミングするためのロジックは、次のカスタム初期化子で発生します。

このコードは、コンテンツのサイズなど、場合によっては正常に機能します(origin = (x = 0, y = 0), size = (width = 1416, height = 1920))。ただし、幅を 1417 に変更すると機能せず、次のエラー メッセージが表示されます。

Error Domain=AVFoundationErrorDomain Code=-11858 "Source frame unsupported format" UserInfo={NSUnderlyingError=0x283e689c0 {Error Domain=NSOSStatusErrorDomain Code=-12502 "(null)"}, NSLocalizedFailureReason=ビデオを合成できませんでした., NSDebugDescription=ソース フレームサポートされていない形式、NSLocalizedDescription=操作停止}

これは、エラーが発生したテスト ビデオを含むサンプル プロジェクトへのリンクです。幅1416、1421、1422、1423、1429で機能し、1416と1429の間の他のすべての幅値で失敗するため、これがランダムに見える場合があります。ここで何が問題で、どうすれば問題を解決できますか?

なぜこのアプローチを使用するのですか?

を使用するAVAssetReaderVideoCompositionOutput代わりに を使用してAVAssetReaderTrackOutput手動でクロッピングを行う理由は、前者を使用するとアプリのメモリ フットプリントを削減できるためです。サイズ。これは、同時に複数のビデオを処理している場合に関係します。