2

用例:

我正在尝试使用 VideoToolbox 硬件编码器实时编码视频流以进行视频流。

问题:

VTCompressionOutputCallback 仅在 2 帧或更多帧被传递到编码器后才被调用。最后发送的帧存储在编码器缓冲区中,只有在下一帧进入后才会发出。这种行为会导致解码器端出现 1 帧延迟,因此没有实时流。我检查了各种编码器属性:kVTCompressionPropertyKey_RealTime、kVTCompressionPropertyKey_MaxFrameDelayCount、kVTCompressionPropertyKey_MoreFramesAfterEnd,但似乎都没有解决问题。我也知道 CompleteFrames 函数,但在每帧强制编码器仅发出关键帧之后调用它。

问题:

是否有可能将内部编码器帧缓冲区大小减小到 0 并将编码器设置为以 1 进 1 出方式运行?

我的默认编码器设置:

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

谢谢

4

0 回答 0