我正在尝试流式传输编码为 h265 的 v4l2src 源,并打开低延迟模式。 以下是我使用的 gstreamer 命令。
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=60/1 ! omxh265enc target-bitrate=2000 control-rate=low-latency num-slices=15 periodicity-idr=10 skip-frame=false ! h265parse ! queue min-threshold-bytes=200 ! rtph265pay mtu=200 ! udpsink host=192.168.1.16 port=5004 sync=false buffer-size=200 blocksize=200
我正在尝试按照here的建议实现一个队列来传输固定长度的数据包。但是,我仍然可以在 Wireshark 中看到不同大小的数据包。 rtph265pay mtu=200 设置流的上限,但数据包的大小各不相同。我愿意牺牲一点延迟来实现恒定的数据包大小。
为了在流中获得恒定的数据包大小,应该修改什么?
我尝试更改管道中的队列位置。还尝试使用 rtph265pay 的属性 min-ptime 来实现恒定的数据包大小。
要在流中实现恒定的数据包大小,您可以调整“rtph265pay”元素的“min-ptime”属性。
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=60/1 ! omxh265enc target-bitrate=2000 control-rate=low-latency num-slices=15 periodicity-idr=10 skip-frame=false ! h265parse ! queue min-threshold-bytes=200 ! rtph265pay mtu=200 min-ptime=20 ! udpsink host=192.168.1.16 port=5004 sync=false buffer-size=200 blocksize=200
您可以调整“min-ptime”的值(以毫秒为单位)来控制分包时间,并有可能在流中实现更一致的数据包大小。