EasyDarwin手机直播转发快速显示问题之音频处理过程
前言
在我们前面一篇《EasyDarwin手机直播是如何实现的快速显示视频的方法》中,我们描述到了EasyDarwin流媒体服务器端是如何对视频H.264进行缓冲,再以最快的方式将最新的视频关键帧推送给客户端,以做到快速显示视频的效果,当时,我们遗留了一个音频缓冲发送滞后的问题:http://blog.csdn.net/xiejiashu/article/details/51247239#t4,那么我们今天就来讲解一下EasyDarwin这个阶段是如何对这个问题进行解决的;
解决方法
同样,当我们在缓冲区过滤检测到最新的视频关键帧推送的时候,立即进行标志位置位,置位后,第一个到达的音频RTP包就将作为音频的关键帧被记录,当有新的客户端加入到分发列表中的时候,我们就以当前音频帧为索引,第一个发送,这样就能够最大程度低保证音视频到达客户端是基本同步了;这里我们也考虑过记录视频关键帧的时间戳,然后再在音频缓冲队列中查找最接近的音频帧,但这种方式复杂度高,对效率的影响太大,而且基于标志位的形式进行音频关键帧定位,已经能够非常接近时间戳同步了;
版本及源码下载
- 流媒体服务器EasyDarwin:https://github.com/EasyDarwin/EasyDarwin
- 手机直播推送端EasyPusher:https://github.com/EasyDarwin/EasyPusher
- 手机直播客户端EasyClient:https://github.com/EasyDarwin/EasyClient
获取更多信息
Copyright © EasyDarwin.org 2012-2016