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
分类:
流媒体服务器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术