视频传输在视频领域占有比较大的比重,想实现比较快速和可靠的视频传输是有一点难度的。

本文将介绍一些视频传输的技巧,但由于本人水平有限,可能有不足之处,请指正。

1、UDP和TCP之争。

    传输视频数据到底用TCP好呢?还是UDP?

    个人偏向于使用UDP,

    因为TCP的重传都是靠它本身,在网络比较好的情况下,譬如局域网,它的效果是比较好,但是在广域网,

当网络情况不太好的情况下,反而效果很差。

   也许你会说UDP传输不能保证传输质量,但其实只要控制得好,还是可以达到TCP,甚至比TCP更好的效果。

 

2、以下有几个技巧可以改善UDP的传输质量。

(1)流量控制。

       流量控制对UDP的传输质量有比较大的影响,特别是在广域网。

       如果发送的数据量超过网络所能负荷的流量的话,就有数据包会被丢掉。这样在接收端接收的数据就不完整。

 导致出现影像鬼影。

 

(2)包的控制。

       包传输最大长度如果过大的话,会导致丢包机率变大。过小又会浪费太大被UDP头占用的网络带宽。

        可以设定一个包为1K。因为UDP大约在大于1.5K时,就会被分组传输。

 

(3)重传控制。

        重传可以保证数据传输的完整性。

        重传算法是:为每个包附上一个唯一ID,每传输一个包ID加1。接收端发现前后两个包ID不是相差1的话,

                          说明可能出现丢包(也可能是出现数据包乱序)。从而,重发丢失的包。为了避免乱序导致

                          的丢包检测,可以在发现两个包ID不是相差1后,加个延时,延时之内如果预期应该到达的能到达的话,

                          则认为网络没有丢包。

                          当然,可以加上数据错误校验信息,这样当检测数据错误时也需要重传。

 

(4)前向纠错码。

为了提高视频传输的即时性,可以加上视频传输纠错码,这样接收端在接收到错误数据或检测到丢失数据后,就可以

         不用重发而实现数据恢复。对于错误数据恢复可以采用诸如海明码之类的校验码,对于数据丢失的恢复,可以采用

         RTCP采用的编码方式。

(待续....)