为什么我应该使用传输协议(mpeg-ts)通过网络发送h264格式?

时间:2015-11-03 16:14:05

标签: video-streaming gstreamer

我知道已经有一个NAL单元可以分隔h264中的帧。如果我使用可靠的TCP连接,为什么我需要mpeg-ts格式来通过网络发送数据?

我使用gstreamer试过了。但是使用mpeg-ts的情况才有效。 tcpsrc和tcpsink只是通过网络发送所有数据。似乎在使用TCP和在本地读取文件之间没有区别。

使用mpeg-ts

gst-launch-1.0 videotestsrc horizontal-speed=5 ! x264enc tune="zerolatency" threads=1 ! mpegtsmux ! tcpserversink host=192.168.0.211 port=8554
gst-launch-1.0 tcpclientsrc port=8554 host=192.168.0.211 ! tsdemux ! h264parse ! avdec_h264 ! xvimagesink 

没有mpeg-ts

gst-launch-1.0 videotestsrc horizontal-speed=5 ! x264enc tune="zerolatency" threads=1 !  tcpserversink host=192.168.0.211 port=8554
gst-launch-1.0 tcpclientsrc port=8554 host=192.168.0.211 ! h264parse ! "video/x-h264, format=byte-stream" ! avdec_h264 ! ximagesink 

1 个答案:

答案 0 :(得分:1)

容器主要用于定时信息。时序信息对于许多应用程序至关重要,例如同步音频。或者,如果您使用可变帧速率,或者帧被丢弃,则视频可能比预期更快或更慢。如果您不需要这些功能,将来也不需要它们,那么您可能不需要开销。