我知道已经有一个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
答案 0 :(得分:1)
容器主要用于定时信息。时序信息对于许多应用程序至关重要,例如同步音频。或者,如果您使用可变帧速率,或者帧被丢弃,则视频可能比预期更快或更慢。如果您不需要这些功能,将来也不需要它们,那么您可能不需要开销。