给大家带来一些音视频的面试题,或者说是一些开发思路吧,不希望它成为以后你面试的八股文...

这次主要是视频秒开方面。秒开是指用户点击播放到看到画面的时间非常短,在 1 秒之内。

为什么需要秒开?

目前主流的直播协议是 RTMP,HTTP-FLV 和 HLS,都是基于 TCP 的长连接。

在播放的过程中,若播放端所处的网络环境在一个较佳的状态,此时播放会很流畅。若网络环境不是很稳定,经常会发生抖动,如果播放端没有特殊处理,可能会经常发生卡顿,严重的甚至会出现黑屏。

而移动直播由于其便捷性,用户可以随时随地发起和观看直播,我们无法保证用户的网络一直处于非常好的状态,所以,在网络不稳定的情况下保证播放的流畅度是非常重要的。

解决思路

获取关键帧后显示,改写播放器逻辑让播放器拿到第一个关键帧后就给予显示。

GOP 的第一个帧通常都是关键帧,由于加载的数据较少,可以达到 "首帧秒开"。

如果直播服务器支持 GOP 缓存,意味着播放器在和服务器建立连接后可立即拿到数据,从而省却跨地域和跨运营商的回源传输时间。

GOP 体现了关键帧的周期,也就是两个关键帧之间的距离,即一个帧组的最大帧数。假设一个视频的恒定帧率是 24fps(即 1 秒 24 帧图像),关键帧周期为 2s,那么一个 GOP 就是 48 张图像。

一般而言,每一秒视频至少需要使用一个关键帧。增加关键帧个数可改善画质(GOP通常为 FPS 的倍数),但是同时增加了带宽和网络负载。这意味着,客户端播放器下载一个 GOP,毕竟该 GOP 存在一定的数据体积,如果播放端网络不佳,有可能不是能够快速在秒级以内下载完该 GOP,进而影响观感体验。

如果不能更改播放器行为逻辑为首帧秒开,直播服务器也可以做一些取巧处理,比如从缓存 GOP 改成缓存双关键帧(减少图像数量),这样可以极大程度地减少播放器加载 GOP 要传输的内容体积。

app 业务逻辑层面优化 比如提前做好 DNS 解析(省却几十毫秒),和提前做好测速选线(择取最优线路)。

经过这样的预处理之后,在点击播放按钮时,将极大提高下载性能。

一方面,可以围绕传输层面做性能优化;另一方面,可以围绕客户播放行为做业务逻辑优化。两者可以有效的互为补充,作为秒开的优化空间。

优化服务器策略

播放器接入服务器请求数据的时间点的视频不一定是关键帧,那么需要等到下一个关键帧的到来,如果关键帧的周期是 2s 的话,那么等待的时间可能会在 0~2s 的范围内,这段等待的时间会影响首屏的加载时间。

如果服务器有缓存,则播放端在接入的时候,服务器可以向前找最近的关键帧发给播放端,这样就可以省去等待的时间,可以大大的减少首屏的加载时间。

本文福利, 免费领取C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

播放端首屏时长的优化

首屏时间,指的是从进入直播间开始到第一次看到直播画面的时间。首屏时间过长极易导致用户失去对直播的耐心,降低用户的留存。但游戏直播对画面质量和连贯性的要求高,对应推流端编码后的数据量和其他类型直播相比大的多,如何降低首屏时间是一个不小的难题。

播放器的首屏过程中的几个步骤:

在播放端的首屏过程中,主要有以下三个操作需要进行:加载直播间 UI(包括播放器本身)、下载直播数据流(未解码)和解码数据播放。

其中数据解码播放又细分为以下几个步骤:

  • 检测传输协议类型(RTMP、RTSP、HTTP 等)并与服务器建立连接接收数据;

  • 视频流解复用得到音视频编码数据(H.264/H.265、AAC 等);

  • 音视频数据解码,音频数据同步至外设,视频数据渲染都屏幕,至此,视频开始播放,首屏时间结束。

总结:

  1. 首先,加载 UI 可以以单例的方式进行,能够一定程度地提升首屏展示速度;

  2. 其次,可以预设解码类型,减少数据类型检测时间;

  3. 再次,设定合理的下载缓冲区大小,尽可能减少下载的数据量,当检测到 I 帧数据,立即开始解码单帧画面进行播放,提高首屏展示时间。

音视频面试题:什么是秒开视频? 如何去秒开视频?相关推荐

  1. 音视频面试题集锦 2022.04

    下面是 2022.04 月音视频面试题集锦内容的节选: 1)RTMP 消息分优先级的设计有什么好处? RTMP 的消息优先级是:控制消息 > 音频消息 > 视频消息.当网络传输能力受限时, ...

  2. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...

  3. pr 文件结构不一致_PS和视频编辑试题

    牡丹区职业中专2012-2013年度第一学期期末试题 PS 和视频编辑试题 第一卷 一.选择题(本题50小题,每小题2分,共100分.在每小题列出的选项中,只有一项符合题目要求,请将符合题目要求的选项 ...

  4. 抖音开放平台用户授权获取用户的粉丝统计和短视频数据

    最近有朋友问起我有没有做过抖音开放平台,让我有了些思考,其实之前做过的.虽然抖音APP很火,但是毕竟不像微信开放平台那样,已沉淀多年,基本上每个API只要肯用心查找,网上都有很多资料可以参考.而抖音开 ...

  5. 抖音上热门有时间吗 先改md5再剪辑视频

              抖音上热门有时间吗 先改md5再剪辑视频          年初,抖音和微信的争执再一次掀起这个"争论".1月初微信疑似因抖音App涉及违规使用用户隐私问题暂停 ...

  6. Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等

    前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...

  7. FFmpeg音视频开发实战5 iOS/Android/windows/Linux -陈超-专题视频课程

    FFmpeg音视频开发实战5 iOS/Android/windows/Linux -159618人已学习 课程介绍          咨询QQ: 347181469. 本课程适合中,从事音视频,网络通 ...

  8. 2021年陕西省安全员C证新版试题及陕西省安全员C证实操考试视频

    题库来源:安全生产模拟考试一点通公众号小程序 陕西省安全员C证新版试题是安全生产模拟考试一点通生成的,陕西省安全员C证证模拟考试题库是根据陕西省安全员C证最新版教材汇编出陕西省安全员C证仿真模拟考试. ...

  9. 安防视频上云的趋势、痛点及华为云视频接入服务探索及实践

    随着视频资源与内容在互联网所占比重不断提升,相应的在视频资源利用水平以及不断提高的业务和产品需求之间的矛盾也会愈加突出.本文来自华为云视频接入服务产品经理齐彦昆在线上分享中的演讲,结合在视频接入服务的 ...

最新文章

  1. freemark简单事例
  2. 号召,有兴趣做博客园自己的网络游戏的请举手..
  3. AMAP-TECH算法大赛开赛!基于车载视频图像的动态路况分析
  4. samba实现linux之间文件共享,使用 samba 实现文件共享
  5. 5G NR协议栈----总体架构
  6. python编译成汇编语言_查看C语言/C++编译器生成的汇编语言代码
  7. Java字符串排序后输出
  8. mysql 查询最早 表_MySQL-如何查询表中最早时间和最晚时间
  9. idea社区版创建springboot_idea社区版+spring boot
  10. ios 网速监控_iOS 监测网络状态
  11. 学员管理系统(完整版附带源码)
  12. Python TIN网生成(Delaunay三角形)
  13. Windows 组件服务我的电脑出现红色向下箭头
  14. vue 文件上传下载报 文件损坏
  15. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典
  16. 电商物流系统技术架构进化史
  17. zip压缩包带有密码如何解压
  18. 十天小白训练营day02—古诗作业
  19. SQL面试中的常见问题
  20. sas java_Sas java环境变量配置

热门文章

  1. js的七大设计原则--迪米特原则
  2. Vue学习笔记:路由详解
  3. 世界名校公开课网络资料
  4. jQuery循环一个列表,并将其数值合并在一个数组中
  5. PointNet代码详解
  6. 【MyBatis】高级特性(三):MBG、通用Mapper、Mybatis-plus
  7. .Net Core微服务架构
  8. 论文阅读“Embedding Graph Auto-Encoder for Graph Clustering”(TNNLS2022)
  9. Charles windows使用教程 (手机:安卓系统,如Nexus 6P)
  10. CMake I 编译静态库、动态库和对象库