我现在正做RTP协议的网络播放器,文件传输已经成功,但不知道RTP协议中如何实时的控制视频流;请高手指点;

解决方案 »

  1.   


    learn and attention and up
      

  2.   

    gz,please!
    请参加讨论,
    [email protected]
      

  3.   

    zhuchangquan_0(小泉):你的要求是不可能在rtp上实现的,你可能没有看过rtp的特点,他是建立在一个不稳定连接上的,你不可能保证所有的包都能按时的完好的发送到接收端!如果要实现你的特点就好比要搭建一个完美的,绝对没有故障的支持rtp协议的通信系统。这样的要求就是专线系统都不一定能达到,要是放到真正的internet环境中就更不可能了。
    如果考虑缓冲区加大,可以减少停顿和马赛克,但要完全没有也是不实际的,除非你把文件全缓冲完了再播放,这样又不符合实时的要求了。
    (个人看法)
    我想只要能根据需要保证链路的比较通畅,把故障控制到一个比较小的范围就可以了,否则你的系统是不经济也是不可能实现的。
      

  4.   

    其实网络播放器,流媒体之类的并不用做到实时,你可以看mediaplayer\realplayer,他们都是先缓冲一段时间然后在播放的,这样的话,就不必要用rtp协议,用简单的tcp协议就可以,客户端可以先从服务器读取一定时间的视频作为缓冲,然后就可以播放了,边播放边继续从服务器读取视频数据
      

  5.   

    在电子工业出版社出版的《TCP/IP协议》第三卷有RTP协议的主要源代码,具体书名我记不情了,不过该书属于国外计算机系列教科书
    网上也有,你进google网站搜索一下吧
      

  6.   

    还 有 相关的 协议处理媒体通道资源的 ,你看看QOS处理
      

  7.   

    谁能告诉我怎样实时控制RTP中的视频流,我现在是一头雾水,已经两个星期都没有结果。我用的是RTPLIB_VC库中的函数,请熟悉RTP协议的高手指点迷津。急,急,在线...        [email protected].
          或[email protected]
      

  8.   

    请教高手:
        我在服务器端发包(RTP协议)是这样的:
                while(1)
                {
                        .......
                     sess.SendPacket(data,2324);
                         .......
                       Sleep(7);
                  }
              如果加大Sleep时间,客户端画面停顿,如果减少Sleep时间,客户 端出现马赛克,要保持图象比较平稳,RTP协议该怎样做,请高手指点迷津....
      

  9.   

    要实现实时不光是控制rtp就可以完成的,前面以及谈到在带宽和数据压缩/解压缩的能力没有大幅提高的情况下,这几乎是不可能的,你唯一能作的就是减少数据量,如果不在压缩算法上提高,减少数据量的唯一途径就是降低图像质量了,还有就是采用缓冲技术,完全的实时是不可能的,就是现场直播还有时间延迟呢!!!
    你通过数据的缓冲能使客户端的播放数据流达到一定的平衡,缓冲数据时间对应长度相当于时间延迟。
      

  10.   

    问几个关于数据包丢弃策略简单的问题:
    经过MPEG压缩的视频流式前后桢相关的,还是每一桢独立的?
    如果是前后桢相关的,那么如果我要在传送时丢弃一个UDP包,是否将意味着后面的桢无法解码?
    如果我使用Directshow进行编程。当我制作了一个filter获得ISampleGrabber后,是否能将1个ISampleGrabber视作为一个图像桢,丢弃一个也无所谓?
    如果能回答上述问题,可以开贴给分。
      

  11.   

    简单来说Mpeg压缩的是有关键帧概念的,所谓关键帧就是相对独立的一个对视频画面的比较完整描述一般还提供时间同步基准,在两个关键帧之间又插入一些非关键帧来描述变化过程,这样的方法可以有效的减少数据流量,一般来说在能够保持时间同步时如果损失一个非关键帧信息则造成图像的局部马赛克,如果掉了一个关键帧而时间仍然同步则就是两个关键帧之间的图像没有了,画面闪动,如果时间信息也丢失了则就可能让播放停止,因为播放器不知怎么去同步了!
      

  12.   

    一谈到媒体流就生气。自己编码吧,小波分析学不会。用DirectShow吧,不知到得到的数据是什么东西,能不能丢弃。
      

  13.   

    Sleep(7);
                  }
              如果加大Sleep时间,客户端画面停顿,如果减少Sleep时间,客户 端出现马赛克,要保持图象比较平稳,RTP协议该怎样做,请高手指点迷津....你没有实现判断一桢是否buffer完毕的机制,可以根据rtsp来控制负债平衡
      

  14.   

    回 那在编程时怎样找到关键帧呢?
       对视频进行压缩编码方式的不同,采用的标准不同,关键帧的具体是哪一个是不同的,而且这些实现都是在前端,即采集编码的部分就已经完成了,此外它在播放时是由播放器来判断的,几乎你找不到严格按关键帧来划分网络传输数据包的实时视频网络传输实现方式。采集数据的编码输出的就是经过编码的数字化视频信息数据编码流,它包含了压缩后的视频信息和时间控制信息(如果有的话),你再传输时直接用就可以了,不过现在许多的数字视频压缩实现上没有对网络传输进行优化,所以在实际开发中要选择有优化的编码方式或进行再编码(比如现在流行的ASF就是对一般视频数据流方便网络传输的再次编码,它的实际数据压缩编码可以是多种方式)。其实楼主可以考虑用成熟的实现方式,比如real或ms的实现,他们的技术都是商品化的,而且效果也不错,此外还支持同时的多路视频传输到一个终端客户(由于现在的计算机系统的原因,一般采集前端和发送还是由多台计算机实现)
      

  15.   

    一帧完总的信息有多大
        这要看你的视频大小和颜色深度了,比如一个320×240×16位色的视频帧在未压缩的情况下的大小就是同样大小和颜色的未压缩位图内存大小再加上时间控制信息,起码是320×240×2字节 约150k字节
        而视频的数据量之所以大还因为未压缩一秒的完整帧数一般是大于15帧的,再加上一些时间控制信息,则一秒大概的数据量(也以上面的图像大小和颜色,15帧/秒 的视频) > 320×240×2×15字节 即约2m字节