出于带宽原因,我修改了切片标题间距,以便每个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
答案 0 :(得分:0)
正如Florian Zwoch所说,rtpjitterbuffer解决了这个问题。