EasyDarwin手机直播是如何实现的快速显示视频的方法
2023-09-14 08:59:59 时间
前言
经常有人提到最近比较火的映客直播、花椒直播这种,是如何做到在打开手机直播中的某一个主播房间后,立即就能显示出主播视频,非常非常快,而且延时也比较小,是怎么做到的?
其实,这并不是什么高深的技术,就是最基本的关键帧索引/推送,在用户打开直播,请求直播流的时候,服务器将缓存中最新的关键帧开始推送给客户端,那么客户端收到关键帧就能够立即解码显示,一个720p的关键帧,一般的十几k,即使在网速不好的情况下,也是秒秒钟内就能下载完成,下载完成就能立即显示,这样就是快速第一时间出画面的效果了;
服务器端处理
我们在EasyDarwin服务端将接收到的推送端推送的数据都以队列的形式进行缓冲,我们在缓冲的同时,对帧进行过滤,区分音/视频RTP包和I/P视频帧,我们每次都将最新的I帧位置在Queue中进行标记,这样在每一个直播推送分发的时候,我们都从最新的I关键帧开始推送,这样既保证了能够第一时间显示画面,又能够非常低延时低进行直播分发,具体算法如图所示:
显示效果
版本及源码下载
- 流媒体服务器EasyDarwin:https://github.com/EasyDarwin/EasyDarwin
- 手机直播推送端EasyPusher:https://github.com/EasyDarwin/EasyPusher
- 手机直播客户端EasyClient:https://github.com/EasyDarwin/EasyClient
遗留问题
其实这里还有一个问题遗留,就是在视频检索到最新的关键帧开始发送的时候,而且音频队列还是从头开始发送给客户端的,这样当缓冲区开的比较大的时候,就会有很多无用的音频数据分发到客户端了,其实这里在做视频帧定位的时候,也要做一下音频帧的定位,不过这个还没想好怎么做,后续再完善!
获取更多信息
Copyright © EasyDarwin.org 2012-2016
相关文章
- 【直播分享】实现LOL小地图英雄头像分析案例【华为云分享】
- 201604深圳云栖大会Workshop - 使用推流软件加入视频直播
- 大咖直播第八期问答整理:有货李健讲解六层混合云架构打造中国最潮生态圈
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器功能简介---视频直播、直播鉴权(如何完美将EasyDSS过渡到新版)
- EasyNVR智能云终端硬件使用说明(EasyNVR无插件直播服务硬件的具体使用方法)
- 关于公网摄像机直播公网视频直播的基本思考方法
- rtmp直播拉流客户端EasyRTMPClient TCP窗口大小设计方法
- EasyPlayer安卓Android流媒体播放器实现直播过程中客户端快照功能
- 直播技术初探
- 直播兴起的军功章上也有你的一半——Redis实践及在直播行业的应用
- AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)
- 音视频直播推流和拉流到底是什么意思?
- 华为云·云享专家公开课:45分钟掌握Python项目部署与调度核心逻辑直播
- webrtc直播框架