对于TS流的产生和到组成UDP包的发送,通过一下图,大家有个直观的了解:
1、TS流的产生:
2、TS流组包为RTP数据包,通过UDP发送出去:
3、针对MPEG2-TS协议包格式及头参数介绍如下:
针对RTP协议及MPEG2-TS具体的详细介绍,下面几篇文章下的很好:
http://blog.youkuaiyun.com/rootusers/article/details/42772657
http://blog.youkuaiyun.com/rootusers/article/details/42970859
http://blog.chinaunix.net/uid-24922718-id-3686257.html
http://blog.youkuaiyun.com/leixiaohua1020/article/details/50535230
这里要说明下,在MPEG2-TS相关开发的时候注意两点:
1、对于RTP协议头,由于大小端对结构体的位域也有影响,定义的时候要考虑大小端问题。
2、对于每次发送UDP包中TS包的个数。
考虑到以太网数据帧的最大长度为1500,所以一般规定,每7个TS数据包封装在一起进行发送。
另外我在测试的过程中通过ffmpeg进行ts数据包推流,每次socket接受到的UDP数据包大小为1328byte,
也就是7*188+12,这里12为rtp协议头大小。