gstreamer视频在UDP上每帧多个片段撕裂

时间:2018-03-07 09:17:13

标签: udp gstreamer h.264 rtp tegra

出于带宽原因,我修改了切片标题间距,以便每个I帧使用更多切片,会导致接收端撕裂。

问题看起来好像单个切片正在解码而没有整个I帧被缓冲为omxh264dec?这有点奇怪,因为Tegra解码器应该只在帧级上工作。

也许通过在接收端正确同步GstBuffer:s可以缓解这个问题吗?

Repro案例:( Jetson TX2)

# Sender:
gst-launch-1.0 nvcamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)I420, framerate=(fraction)60/1' ! nvvidconv flip-method=0 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh264enc iframeinterval=1 bit-packetization=TRUE slice-header-spacing=450000 control-rate=2 preset-level=0 profile=1 qp-range=-1,-1:10,10:-1,-1 ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! rtph264pay mtu=60000 ! udpsink host=127.0.0.1 port=5000

# Reciever:
gst-launch-1.0 udpsrc port=5000 ! "application/x-rtp,encoding-name=H264,payload=96" ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! xvimagesink async=TRUE sync=TRUE

1 个答案:

答案 0 :(得分:0)

正如Florian Zwoch所说,rtpjitterbuffer解决了这个问题。