【发布时间】:2018-03-07 09:17:12
【问题描述】:
出于带宽原因,我修改了切片标头间距以在每个 I 帧中使用更多切片,这会导致接收端出现撕裂。
问题似乎是在解码单个切片时没有为 omxh264dec 缓冲整个 I 帧?这有点奇怪,因为 Tegra 解码器应该只在帧级别上工作..
也许这个问题可以通过在接收端正确同步 GstBuffer:s 来缓解?
复制案例:(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
【问题讨论】:
-
没有
rtpjitterbuffer?也许利用rtpbin便利元素? -
rtpjitterbuffer 解决了这个问题!
标签: udp gstreamer h.264 rtp tegra