结合码率和pcr来发送组播数据

来源:互联网 发布:卖情侣装好的淘宝店 编辑:程序博客网 时间:2024/06/05 11:46
根据pcr来发送的.
当看了vlc的code后,基本上是结合码率和pcr来发送的.

1,在调试过程中,我监测了vlc的发出的码率,基本上每16毫秒都有数据,最大不会超过32毫秒. 
而版主的方法, 要wait很多,这个已经造成了stb的报告同步丢失.就是数据包不均匀.

目前的做法是, 先根据码率算出每16ms大约发多少个 7 *188的包. (这个时候码率准不准无所谓,这是粗调,将来可以通过pcr来细调)
比如码率是18Mbps的高清码率.(h264和mepg2相同) 每16ms大约发的包数为: 18000000 / 8 / (7 * 188) / (1000 * 16),假设等于XX
这个时候一般都肯定比如是8.369,我们就取8. 也就是说,每16ms大约发的包数为8,这个是比时间的码率低些.
然后我们每16ms找一个pcr, 然后比较系统时间(这个需要转换,详情请参考vlc),
如果这个pcr小于发系统时间,那下次就发 (xx++) * 7 * 188, 
如果下次找到的pcr还小那下次就发 (xx++) * 7 * 188,

如果下次pcr大于发系统时间,那下次就发 (xx--) * 7 * 188, 
注意xx--的最小值也是8.太小了不好.

结果我们的stb就可以和vlc推出的流媲美了. stb也不会报错,(以前,如果我每50ms发一次,stb就有马塞克, 但vlc发,stb是没有的.)
0 0
原创粉丝点击