1.1 什么是视频?

首先我们需要理解一个最基本的概念:视频。从感性的角度来看,视频就是一部充满趣味的影片,

可以是电影,可以是短片,是一连贯的视觉冲击力表现丰富的画面和音频。

但从理性的角度来看,视频是一种有结构的数据, 我们可以把视频剖析成如下结构:

内容元素 ( Content )

图像 ( Image )

音频 ( Audio )

1.2 视频是如何播放的

视频要播放它肯定是有视频数据,把视频数据放到解码器,然后解码器把这个视频数据解码出来,  解成图片,然后播放到显示器上,这是一个基本的播放流程。一般来讲,大家现在主流的用H.264编码。对于H.264编码来说,我们会有三个不同的帧,所谓帧是什么呢?就是你看到的每一个图像。我们看  到动态的视频,大家知道电影最开始用胶片拍的时候,每秒是25帧,是每秒25个图片在切换。

对于H.264来讲,我们常见的有I帧,P帧,和B帧。

I帧

  1. 它是一个完整信息帧,你可以理解为它就类似一个jpg图片,它里头所有的数 据,你解出来之 后,它就是一整张图片。

  2. 它压缩比是最小的,因为它要包括整个图片所有的数据在里头。

I帧可以直接解析

P帧

P帧就是保留变的部分,不变的部分你去上一个或者几个帧里面找就行。P帧只是负责向前引用,  也就是任何一个P帧,它只看它往前的这些帧的数据。

P帧不可以直接解析

B帧

B帧比较特别,它要引用前面P帧某一部分的图像数据同时B帧后面的数据也会引用,这个是B帧的特  点,它要引用前面的数据,也要引用后面的数据。那么它的优势就是压缩比比P帧还大,大概是I帧的25%,也就是我们B帧用的特别多的话,它会把视频的大小降的比较低,因为它的压缩比更大一些。

B帧不可以直接解析

I帧,B帧,P帧它是怎么组成一个视频流呢?我们管这个东西叫Group Of Picture,简称叫GoP

GOP实际上是两个I帧之间的序列帧

1.3 阿里移动端直播场景其他优化措施

1.3.1 为什么直播会等待

对于直播来讲,它是一个流,它不像点播,大家都从0秒开始,任何一个视频文件,0秒第一个帧肯  定都是关键帧。

那么对于直播来讲,我是一个随机的时间点接到这个视频流进行播放,那么我接入的这个时间点的帧有

可能拿到的第一个帧的数据是I帧,也有可能是B也有可能是P。这是一个随机的。

在这种情况下,我们大概率会出现一个黑屏的状态。因为我拿到的是个P帧,对于P帧来讲,解码器面  那个Buffer是空的,它不知道这个P帧如何进行解码,所以它只能丢弃这个帧。

意味着无法在第一帧拿到I帧,则必须等待,哪怕是拿到了数据,也必须地球

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

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

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

服务器只需存储上一个GOP即可,主播端在推最新的视频流时,会实时更新服务器保存的上一个 GOP,以便客户端会拿到上一次完整GOP,而完整GOP第一帧就是I帧

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

1.3.3 关键帧设置频率一般是多少?有没有根据接入动态设置?过长首屏秒会很难做到。

关键帧间隔越长,也就是 GOP 越长,理论上画面越高清。但是生成 HLS 直播时,最小切割粒度也是一个 GOP,所以针对交互直播,通常不建议 GOP 设置太长。直播一般 2 个关键帧间隔即可。比如帧率是 24fps, 那么 2 个关键帧的间隔就是 48fps ,这个 GOP 就是2s。

为了帮助大家学习H65版直播技术,特别邀请了前华为、OPPO 、阿里资深架构师 David老师,为大家带来哔哩哔哩直播实战,手写直播实现到全方位优化》,

原价298元的《哔哩哔哩直播实战,手写直播实现到全方位优化》训练营,现在限时优惠只需要0.1元即可加入学习(限量100个名额

大家手速要快,赶紧识别下方图中二维码加入学习!

报名学习后还将附赠一套系统的开发进阶资料,帮助大家在技术的道路上更进一步。

赶紧扫码报名获取资料,开启你的学习之旅!

(如遇扫码频繁+VX:woaini123susu

面试官:现在还有不会音视频的Android开发?相关推荐

  1. SRS流媒体服务器架构设计及源码分析丨音视频开发丨C/C++音视频丨Android开发丨嵌入式开发

    SRS流媒体服务器架构设计及源码分析 1.SRS流媒体服务器架构设计 2.协程-连接之间的关系 3.推流-转发-拉流之间的关系 4.如何手把手调试SRS源码 视频讲解如下,点击观看: SRS流媒体服务 ...

  2. 阿里P7面试官告诉你:3-5年以上的Android开发如何深入进阶?Android中高级开发必须掌握哪些?

    前言 Android确实不是当年盛况,已经不再像前几年前那么火爆.一个新行业如果经历过盛极一时,那么必然有这样的一条曲线,像我们学的正弦曲线先急速上升,然后到达顶点,然后再下降,最后再趋近一个平稳的值 ...

  3. 腾讯互动白板+即时通讯+实时音视频,Android学生端接入

    腾讯互动白板+即时通讯+实时音视频,Android学生端接入 一.简介 线上教学方案:腾讯云互动白板(Tencent Interactive Whiteboard,TIW)+即时通信(Instant ...

  4. Android移动端音视频的快速开发教程(五)

    接  Android移动端音视频的快速开发教程(四) 3.3. 数据传输事件接口 3.3.1. 接口定义 package com.bairuitech.anychat; // 数据传输通知接口 pub ...

  5. 04 Qt音视频多媒体播放器开发,Qt6.2.3 multimedia

    Q6.2.3 multimedia 音视频多媒体播放器开发 步骤: Qt6.2版本中已经有了播放器的Demo,亲测可用.先下载Qt并安装Qt6.2.3,或者更新到Qt6.2.3,直接在欢迎页找到Med ...

  6. 视频教程-Android WebRTC 实现1V1实时音视频通信-Android

    Android WebRTC 实现1V1实时音视频通信 从2012年开始从事移动互联网方面的开发工作,曾担任去哪儿网开发工程师,搜狗高级开发工程师,拥有多年一线实战开发经验. 擅长语言:Object- ...

  7. 今年Android面试有新要求,资深面试官口述了这几个点,android蓝牙开发教程

    高级音视频(音视频系列) ============ 从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必需品.除了在线教育.音视频会议.即时通讯这些必须使用音视频技术的产品外,其它 ...

  8. 从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧

    zoom(zoom.us) 是一款受到广泛使用的在线会议软件.相信各位一定在办公.会议.聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,zoom 提供了稳定的实时音视频通话质量,以及白板.聊天 ...

  9. 即时通讯 音视频聊天室开发建议

    目前网上视频聊天室.视频会议软件.可视IP电话软件随处可见,你是否想自己做一个玩玩?其实这类软件无非是视频加上网络而建成的.如果熟悉视频捕 捉和网络传输技术,根本就难不倒你.本文详细介绍了如何利用别人 ...

最新文章

  1. 解决:error: Cannot find libmysqlclient_r under /usr/local/mysql.
  2. ASP.NET网络编程中经常用到的27个函数集
  3. 星系超级计算机,Mira超级计算机“最后的旅程”:阿贡实验室进行了一次超大规模宇宙模拟...
  4. Outlook另类小技巧 批量处理图片大小
  5. Akka并发编程——第八节:Actor模型(七)
  6. java实现base64加密解密
  7. 个人和结对项目 - 英语单词词频统计
  8. BZOJ 1071组队
  9. 只工作不玩耍_不玩耍:独立游戏开发商的经验教训
  10. 新加坡区块链公司Tribe Accelerator完成7000万美元融资
  11. 为什么程序员都不愿意升级 Java 8?
  12. access性别字段_12、ACCESS数据表的筛选(ACCESS图解操作系列)
  13. 1到10选一个数字读心术_虾米启示录:理想音乐生活与现实之间 隔着一个草莓蛋糕的距离...
  14. python语言程序设计实践教程答案上海交通大学_计算机二级教程 Python语言程序设计 第5章基本数据类型...
  15. apkg格式怎么打开_jpg怎么转换成pdf?再不学就晚了!
  16. 解决打开excel报文件格式或文件扩展名无效的问题
  17. MySQL 8.0完美卸载(windows)
  18. OSChina 周三乱弹 ——找女朋友都是双胞胎
  19. Debian Cacti(仙人掌)
  20. 中医针灸学综合练习题库【4】

热门文章

  1. 树莓派4初次使用笔记(Pi OS ROS Kinetic安装)
  2. 华为在俄罗斯开设基于ARM技术的数据中心:技术之外,环境使然?
  3. YApi接口管理平台远程代码执行漏洞(含批量POC)
  4. TCP与UDP协议初步学习——网络环境中分布式进程通信的基本概念
  5. (C语言设计系统)利用EasyX完成学校工资管理系统
  6. 大数据是什么意思?大数据有哪些应用?
  7. 4G LTE浪潮何时席卷全球?
  8. ZT:【ROOT教程】S7/S7E 8890版root及替换recovery中文教程
  9. Java基础9----运算符2(关系,逻辑运算符)
  10. 软工1816 · 作业(十一)事后诸葛亮