使用事例:
ビデオ ストリーミング用の 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
ありがとう