2

使用事例:

ビデオ ストリーミング用の VideoToolbox ハードウェア エンコーダーを使用して、ビデオ ストリームをリアルタイムでエンコードしようとしています。

問題:

VTCompressionOutputCallback は、2 つ以上のフレームがエンコーダーに渡された後にのみ呼び出されています。最後に送信されたフレームはエンコーダー バッファーに格納され、次のフレームが入った後にのみ送信されます。この動作により、デコーダー側で 1 フレームの遅延が発生するため、リアルタイム ストリーミングはありません。kVTCompressionPropertyKey_RealTime、kVTCompressionPropertyKey_MaxFrameDelayCount、kVTCompressionPropertyKey_MoreFramesAfterEnd のさまざまなエンコーダ プロパティを確認しましたが、いずれも問題を解決していないようです。私は CompleteFrames 関数も認識していますが、各フレームの後に呼び出すと、エンコーダーにキーフレームのみを強制的に発行させます。

質問:

内部エンコーダーのフレーム バッファー サイズを 0 に減らし、エンコーダーを 1-in-1-out 方式で動作するように設定する可能性はありますか?

私のデフォルトのエンコーダ設定:

EnableHardwareAcceleratedVideoEncoder = true
MoreFramesAfterEnd = false
MoreFramesBeforeStart = false
Profile = H264_Baseline_AutoLevel    
FrameReordering = false
RealTime = true
MaxFrameDelayCount = 0

ありがとう

4

0 に答える 0