如何做到首帧秒开?
前几天面试碰到的题目,怎么尽可能缩短网络视频的加载时间,尽快播放?
特意记录一下
简介
视频直播技术发展到今天,延迟和卡顿对用户造成不良的观看体验的概率已经非常小了。今天主要说一下首屏耗时,没有人愿意打开一个直播,等视频出来等个几分钟,这对人来说简直是种折磨。为了给人们观看视频打造良好的体验,所以,现在视频秒开已经成为直播界的标配。
而首屏耗时指第一次点击播放后,肉眼看到画面所等待的时间。技术上指播放器解码第一帧渲染显示画面所花的耗时。通常说的 “秒开”,指点击播放后,一秒内即可看到播放画面。首屏打开越快,说明用户体验越好。
实现方案:
1:FFmpeg函数优化
探测流信息,拿到流编码的编码格式,不探测流信息则其流编码器拿到的编码类型可能为空,后续进行数据转换的时候就无法知晓原始格式,导致错误。
而这个过程比较耗时,因此可以进行优化减少过多的探测,缩短缓冲时间
2:清晰度切换
先以低分辨率播放,再切换为高分辨率
3:I帧
大部分播放器都是拿到一个完成的 GOP 后才能解码播放,基于 FFmpeg 移植的播放器甚至需要等待音画时间戳同步后才能播放(如果一个直播里边没有音频只有视频相当于要等待音频超时后才能播放画面)。可以改写播放器逻辑,让播放器拿到第一个关键帧后就显示成像,不再是等待音画时间戳同步后再播放了。而GOP 的第一帧通常都是关键帧,加载的数据又少,更加有利于“秒开”的实现。
4:网络环境
CDN网络的建立。现在基本各大视频服务商都有2套以上的CDN网络,更多服务器、更大的带宽让数据的传输畅行无阻。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果