当前位置: 代码迷 >> 多媒体/流媒体开发 >> 请问-怎么用UDP发送TS流并且用PCR值控制速率
  详细解决方案

请问-怎么用UDP发送TS流并且用PCR值控制速率

热度:9756   发布时间:2013-02-26 00:00:00.0
请教-如何用UDP发送TS流并且用PCR值控制速率
最近在做一个视频服务器的项目,之前已经用ASI卡成功的推送TS流了。
现在导师要我用UDP的方式发TS流,并且要用PCR值来控制速率,并提示我说PCR值控制速率是难点。

目前我的现状是
1.知道如何用UDP发送和接收数据
2.知道PCR值这个东西

对于这个项目还是比较迷茫啊,期望高人指点

------解决方案--------------------------------------------------------
会用socket,就会用udp
所以第一个问题,需要先了解socket是个什么东西。

pcr是ts数据流中包含的时钟数据,专门用于时钟同步
第二个问题,具体关于pcr这个东西,可以参见mpeg2 ts数据封装的一些相关协议。

我泛泛讲点其他的东西,为什么要用pcr来控制发送速度:

通常硬件ASI卡传送ts数据,是依靠码率来控制速度。假设ts是2Mb的码率,那么ASI卡的发送速度就固定控制在2Mb。如果ts的码率有波动变化,就在ts中插入空白数据包,强行将ts的码率提高到一个固定的码率值。这是硬件ASI卡传送ts通常使用的方式。

在以太网上传送ts数据,考虑到以太网传输速度的不稳定性,udp的丢包性质,和socket的发送接收缓冲区,插入空包将ts码率提高到一个固定码率的做法已经没有了意义,因为上面那些因素,以太网的发送速度不能像ASI卡那样固定。插入空白数据包,把码率提高到一个固定值的做法也比较多此一举。

所以,根据ts流自己携带的pcr时钟信息,来进行同步控制发送速度,比根据码率来控制发送速度,更准确,也更有适应性。在ts码率有波动,并且波动比较大的情况下,根据码率来控制发送速度无疑是不准确的。


------解决方案--------------------------------------------------------
我有这个源码,并且使用IPQAM测过,效果不错,交流请加QQ5043043
  相关解决方案