3 分钟了解什么是视频编码
从只能坐在放映机旁、电影院里、电视机前看视频,到可以坐在电脑屏幕前看直播,再到拿着手机、Pad,跟人聊天。
大家与影像、视频交互的方式发生了翻天覆地的变化。
为了让大家能在各种设备上看到清晰的视频,背后的编解码技术也经历了多次演进。
不过视频编码是什么?
本期 RTC 科普,带你了解视频编码的原理。
在胶片时代,人们通过感光成像原理,把人眼看到的景色映照到了胶片上,这相当于我们现在所说的编码过程。
然后人们在通过放映机把胶片投影到幕布上,这就相当于我们现在的解码过程。
但胶片只能在电影院中看到,人们希望在家里也能看到电影。
后来,在 1951 年,脉冲调制编码与第一部数字电视和广播出现了。画面上的每一个像素都是一个数值,这个数值通过一个脉冲信号进行传输。
视频画面以广播的形式传到了千家万户的电视中,电视再基于同样的编解码标准,把视频播放出来。人们终于可以坐在沙发上看电影了。
尽管计算机的出现比电视早了 5 年,但直到 1957 年,计算机技术先驱 Russell Kirsch 通过扫描照片的形式成功地在计算机上显示出了自己 3 个月大的儿子,至此计算机上才真正出现了第一幅图像。
图:Russell Kirsch 的儿子(图片源自wafflesatnoon)
如果 Russell 的儿子现在还活着,应该也已经是个老爷爷了。
既然图像都能显示了,那么视频呢?
由于直接采集到的视频格式太大了,当时的电脑根本无法直接处理。正如我们在视频中举的例子,以一张 1920*1080 的图片为例,要传输这张照片就需要 1920*1080*8*3个bit,即 47Mb。 其中 3 代表的是 RGB(Red、Green、Blue) 。如果现在要传输一个每秒30帧的视频,每一帧都是这样的图片,那么一秒就需要传输 1.4Gb 的数据,你所需要的带宽就是1.4Gbps。普通家庭很难能有这样的带宽。 很多人可能还在看 720P 的视频。
所以视频需要经过压缩、编码才能传输。这个过程就是视频编码。
不过,由于输入到视频编码器的视频数据必须是 YUV 格式的。因为只有使用 YUV 格式才能极大地去除冗余信息,最大限度地节省网络带宽。
所以,如果目前你手上的视频数据是 RGB 格式的,就需要通过算法将 RGB 转换为 YUV 格式。
准备好输入的 YUV 数据后,视频就该进入编码器了。我们在这里以主流的 H.264 为例。H.264 的视频编码分为五个模块,帧类型分析、帧内/帧间预测、变换+量化、滤波、熵编码。
首先,YUV 格式的视频数据会先经过帧类型分析模块,确定当前这一帧是属于什么类型。
一般来讲,视频帧会分为 I、P、B 三种帧。
你可以把 I 帧理解为电影中的一段连续影像,里面包含了所有的图像信息,只要影像里的画面没有出现太多变化,基本不会出现新的 I 帧(除了超过GOP长度)。
如果在视频中,画面只是出现一些比较小的变化,那么这些变化的信息都会在 P、B 帧中体现出来。
理想情况下,一个视频流,从一个I帧开始后面轻微运动都是 P、B,直到遇到场景切换就再插一个 I,如此往复。一般来说,P/B 参考范围不会越过I帧。但也有特例,我们可以强行指定 P、B 参考不允许越过 I 帧,这样的I帧我们叫它 IDR(Instantaneous Decoding Refresh) 帧,每个 IDR 帧的间隔我们称作一个 GOP。
而实际上,在编码器中实现帧类型分析,通常会先将 YUV 一帧的数据做降采样处理,然后用降采样后的数据先进行帧内/帧间预测,估算出最能节省码流的方式,来确定当前帧的帧类型。
除此之外,也会有专门判断场景切换阈值的算法,或者固定 GOP 大小下每个 GOP 的开始强行指定 IDR、每个 GOP 结尾强行指定 P 帧的操作。
判断出视频帧类型后,这些帧会再经过帧内与帧间预测 ,以及变换、量化,进一步得到压缩。
由于这几步的处理,可能会出现块效应,比如马赛克就是块效应的一种表现。块效应会影响我们的观看感受,为了避免这种情况,优化视频质量,这些数据还会通过滤波模块。
经过了压缩、优化等处理,这些数据已经可以被传输出去了。
由于我们在真实网络传输的过程中肯定都是二进制码,所以我们需要将当前的像素值进一步压缩成二进制流。在编码中一共有两种熵编码方式:较为简单的 Cavlc,以及一种压缩率更高但运算更复杂的 Cabac。如果你感兴趣,可以详细查查这两算法。
最终编码器会输出这些适合传输的二进制码流,进入网络传输。
当这些数据传输到你的手机上时,解码器会通过熵解码、反量化、反变换等一系列操作,把图像重建出来。这时候你就看到了对方的视频画面。
如何让视频编码又快又好,这是一个难题。声网 Agora SDK 的视频编码器,让视频在拥有高清晰度的同时,还可一定程度上节省码率。用户就能获得身临其境、顺滑的视频体验。下载声网 Agora 的SDK,简单调用API,你就可以在自己的应用中获得超凡的视频通话功能。每月还有10000分钟的免费额度,快来试试吧。
3 分钟了解什么是视频编码相关推荐
- RTC 科普视频 | 3 分钟了解什么是视频编码
从只能坐在放映机旁.电影院里.电视机前看视频,到可以坐在电脑屏幕前看直播,再到拿着手机.Pad,跟人聊天. 大家与影像.视频交互的方式发生了翻天覆地的变化. 为了让大家能在各种设备上看到清晰的视频,背 ...
- Vulkan Video实现GPU加速视频编码/解码
正文字数:929 阅读时长:2分钟 Vulkan是一套跨平台的图形API,由Khronos组织牵头进行制定,普遍被看作是OpenGL的后继者,目前版本已经来到1.2.175,仍然在不停地进行更新,其 ...
- 边缘计算架构如何融合视频编码与存储
NETINT是一家在高性能存储和视频编码领域拥有多项世界前沿技术的芯片设计公司,在上海.温哥华.多伦多三地设有研发中心.NETINT公司的CodensityTM系列和EdgeFusionTM系列芯片和 ...
- NAB 2019见闻:CAE视频编码与QoE
资深编解码技术专家Jan Ozer撰文总结描述了其在NAB 2019大会中的见闻,文章介绍了CAE视频编码的几种阶梯展现,以及如何减少带宽并提高体验质量. 文/ Jan Ozer 译/ 元宝 原文 h ...
- 编码压缩新思路:面向QoE的感知视频编码
面向用户体验的感知视频编码即通过机器学习检测用户感兴趣的视觉感知区域,并重新分配以更多的码率与复杂度.本文来自北京航空航天大学副教授.博士生导师 徐迈在LiveVideoStack 线上交流分享,并由 ...
- 动态优化器—一种感知视频编码优化框架
Netflix提出了一种基于感知视频编码优化框架,在非峰值流时间期间,将此编码系统应用于AVC-High和VP9数据流,提高了用户的视频质量的同时并节省了带宽.LiveVideoStack对本文进行了 ...
- Netflix如何节省92%视频编码成本?
Netflix的IT基础设施完全搭建在AWS之上,尽管AWS一直在降价,但对于完全依赖AWS的Netflix而言,成本依然居高不下.视频编码是重度消耗CPU的业务,通过内部的二级市场,即将未充分利用的 ...
- ifix如何设画面大小_如何让你的视频又小又清晰?视频编码输出软件来了
如何让视频保持清晰 同时又让其体积尽可能的小? 这是很多小伙伴们都很头疼的问题 而且很多时候我们需要会在 微信或者朋友圈等社交平台 上传我们的作品 但它们对视频大小 有着比较严格的控制 所以蜜蜂菌就为 ...
- 常见视频编码比较大全 常见视频解码技术资料1
ASF ASF 是 Advanced Streaming format 的缩写,由字面(高级流格式)意思就应该看出这个格式的用处了吧.说穿了 ASF 就是 MICROSOFT 为了和现在的 Real ...
最新文章
- java 重用性_提高Java代码重用性的三个方法
- 解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法
- Python selenium巧用Javascript脚本注入解决按钮点选问题
- mysql backlog_一次优化引发的血案
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
- Google实用搜索秘技六则
- 【教程】Linux下MySQL 8.0安装配置
- DCMTK:可加载的DICOM数据字典
- PyCairo 后端
- 20应用统计考研复试要点(part5)--统计学
- HBase数据迁移到Kafka实战
- NLP系列学习:前向算法和后向算法
- 433M射频遥控灯、震动感应灯、WIFI避障小车
- 海南大学植物代谢组学技术开发与创新应用课题组博士后招聘
- 检查xml文件中包含非法xml字符的个数(
- MySQL之语法入门与基础命令
- 图像检索:CEDD(Color and Edge Directivity Descriptor)算法
- ubuntu16.04下ROS操作系统学习笔记(八)机器人SLAM与 Gmapping-Hector_slam-Cartographer--ORB_SLAM
- Iphone各个型号机型的详细参数,尺寸和dpr以及像素
- muduo base库学习笔记 10——日志类封装详解
热门文章
- 编辑电影字幕,编辑srt格式
- Bootstrap嵌入响应式视频(可无障碍浏览)的方法
- 一文读懂华为FIDO2指纹/3D 面容登录技术
- Elasticsearch(038):es中搜索之入门与分页搜索
- pyqtgraph基础入门(二):使用pyqtgraph绘制折线图(同一坐标轴包含多条折线)
- 弘辽科技:抖音小店功效虚假宣传行为有哪些?
- 瀚高数据库win版启动客户端连接提示拒绝连接,是否在主机xxx运行且准备接受在端口5866
- 20190613:多因子选股模型-思维导图
- 99%的网络安全人都没想到!办公网的第一道防线应该是它
- Ubuntu14.10 安装搜狗拼音输入法 google输入法