从GStreamer Webrtcbin进行H264视频解码时如何丢弃上下文重新初始化

时间:2018-10-23 16:03:11

标签: ffmpeg webrtc gstreamer h.264

Gstreamer管道通过这种方式接收视频:

webrtcbin-> rtph264depay-> avdec_h264-> ...

我已在webrtcbin的rtpbin上启用了do_nack以提高视频质量,但问题是RTP丢失的缓冲区导致“有时” h264解码器变为Reinit context to ...,这会使整个输出视频变灰(只有运动可见) ),直到收到下一个关键帧为止(但这可能会在几秒钟后发生)。

我注意到在上下文重新初始化之前发出了EVENT_GAP,但是删除它们并没有帮助。

如何使解码伪像“一如既往”地作用于损坏的视频,而不是用灰色填充整个视频?

1 个答案:

答案 0 :(得分:0)

我无法使用avdec_h264找到解决方案,但我自己编译了gst-plugins-bad,然后使用openh264dec解决了该问题(令人惊讶的是,它在Ubuntu / Debian上的存储库包中不可用)。