問題タブ [avvideocomposition]

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 に答える
64 参照

ios - AVPlayerItemVideoOutput がビデオ コンポジションでのシーク後にフレームの配信を停止する

動画を再生し、Core Image フィルターを使用して処理したいと考えています。私は次の設定をしています:

  • としてのビデオAVAsset
  • AVPlayerビデオの再生を制御するための
  • はプレーヤーにAVAsset渡されますAVPlayerItem
  • Core Image フィルタは、AVMutableVideoCompositionで初期化init(asset:applyingCIFiltersWithHandler:)され、プレーヤー アイテムに割り当てられたを使用して適用されます。
  • AVPlayerItemVideoOutput使用して処理されたフレームを取得するために使用されますcopyPixelBuffer(forItemTime:itemTimeForDisplay:)

これは期待どおりに機能します。ただし、 を使用してプレーヤーを逆方向にシークすると、奇妙な動作が観察されます。新しいピクセル バッファseek(to:completionHandler:)の配信がAVPlayerItemVideoOutput突然停止し、hasNewPixelBuffer(forItemTime:)が返されますfalseただし、これは、ビデオ構成に適用されるフィルターが少し高価な場合にのみ発生します。非常に単純なフィルターを使用する場合、またはフィルターをまったく使用しない場合、シークは期待どおりに機能します。

このテクニカル ノートに触発されて、完成後にコンポジションをプレーヤー アイテムに再割り当てする回避策を見つけましたseekが、これは非常にハックに感じられます。特に単純なフィルター パイプラインで機能しているためです。

誰もこれに遭遇したことがありますか?別の方法で構成する必要があるものはありますか?

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

swift - AVVideoComposition によるフレームの事前レンダリングを停止するにはどうすればよいですか?

フィルターを適用しながらフレームをレンダリングするカスタム コンポジターがあります。スライダーでフィルター プロパティを変更すると、ビデオ コンポジションが事前にレンダリングされ、事前にレンダリングされたフレームの古いフィルター値が保持されるため、変更が遅れます。videoComposition - をリセットすることでこれを修正できますplayerItem.videoComposition = videoComposition。これはうまく機能し、上記の問題は修正されますが、新しい問題が発生します。スライダーのようなものを使用すると、変化が非常に速く発生するため、この操作によって CPU が過負荷になり、ビデオがぎくしゃくします。Slider にステップを追加し、より大きな増分だけ変更することでこれを改善できますが、これはまだ完全ではなく、顕著なラグが生じます。また、ユーザーがこれらのごくわずかな変更を行えるようにしたいので、この修正はそれだけの価値がありません。この機能を無効にする良い方法を知っている人はいますかAVVideoCompositionまたはカスタムコンポジター?それはお尻の痛みでした。