RTSP播放中的关键技术和测试点

来源:互联网 发布:承接软件外包 编辑:程序博客网 时间:2024/05/18 12:39

  播放器在功能和性能上具有较高的要求,具体的实现上,需要主要解决的关键技术点主要包括有:多路高清解码、兼顾低时延与流畅性、音视频同步.


多路高清解码
  多路高清解码播放每路都由多个线程配合来完成整个数据的处理流程,在多路播放的情况下则更为复杂。因此需要在系统的实现上具有高效的多线程管理机制,以及对各模块的组织、内部互联互通上做出良好的设计:

  • 将繁琐的数据处理流程统一成了标准的数据接口,控制管理上方便有效;
  • 通过engine机制,对单路数据以及播放的管理提供了统一接口,对于多路播放实际上只需要管理多个engine即可;

低时延与流畅
在性能提高上通过减少对内存数据的拷贝以及额外的内存分配开销:

  • 设计回环数据缓冲机制,对应用层输入的数据进行高效的缓存,在传输decode模块时,避免了数据拷贝;
  • 在数据解码中使用了ffmpeg的directbuffer机制,进一步的避免了数据的拷贝动作;
  • 数据再各模块之间传递时使用数据缓冲池,避免了额外的内存分配操作,同时也减少了因内存分配操作而带来的内存碎片;

      在低时延与流畅的平衡性上,通过设置最大缓冲帧数和最小缓冲帧数来实现控制,具体实现策略为:
      通过比较待解码缓冲区和解码后还未显示的缓冲区里数据包的个数的和值,如果该值大于最大缓冲帧数,说明有很多数据在缓存里,延迟大了,这时就要加快显示速度(减小output模块的休眠时间),最大缓冲帧数就是影响延迟的;反之一样, 最小缓冲帧数就是流畅的保证,该值越大就越流畅;通过改变这个最大值最小值就可以平衡延迟与流畅。


音视频同步
  由于声音对时间的敏感性,所以在同步的处理上,系统以声音作为基准来参考,对视频的输出来进行调整,从而保证音视频的同步性,具体实现为:

通过比较音频和视频的时间戳(pts)来对视频的显示速度进行调整,如当前的视频的pts比音频pts大于最小偏差值(目前设置为200MS),说明视频快了,就放慢是视频的显示速度;反之就加快视频的显示速度;但是,如果差距太大(目前设置为1000MS), 大于最大偏差值时,加快视频的显示速度的效果不明显就采用丢帧方式,这个一般出现再刚开启的是时候。

0 0