iOS-视频编码技术
在学习视频编码技术之前,需要先了解什么是帧:
帧
就是影像动画中最小单位的单幅影像画面;
一帧就是一副静止的画面,连续的帧就形成动画;
简单地说,就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用FPS(Frames Per Second)表示;
每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象;
高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅。
例如:一个 GIF 图,就是由若干张图片组合而成,每张图像相当于一帧
1秒钟之内至少需要16帧画面,播放起来才不会出现卡顿
正常开发视频播放通常会采集30帧
这个 GIF 图是由若干张图片组成:
数据流传输
数据在网络上是以很小的称为帧(Frame)的单位传输的;
未经压缩的视频的数据量巨大,根本没办法保存,更不适合网络中的传输;
所以一般情况下,在音视频传输之前,需要进行压缩,也就是编码;
数据流的传输过程:视频录制 –> 编码 –> 传输 –> 解码 –>播放。
编码定义:
从信息论的观点来看,描述信源的数据是信息和数据冗余之和, 即:数据 = 信息+数据冗余
所以要想获取到真实有用的信息,必须去掉 “数据冗余“,这样数据的大小也会减少很多,这种去除冗余信息的过程,我们就称之为压缩编码
空间冗余:图像相邻像素之间有较强的相关性
同一景物表面上采样点的颜色之间通常存在着空间相关性,相邻各点的取值往往相近或者相同,这就是空间冗余。
- 例如,图像中有一片连续的区域,这个区域的像素都是相同的颜色,那么空间冗余就产生了。
- 如果对每一个像素进行单独的存储,必然会非常浪费空间。
时间冗余:视频序列的相邻图像之间内容相似
在视频、动画图像中,相邻帧之间往往存在着时间和空间的相关性。
- 例如,人们在会议室中开会,随着会议的进行,时间在改变,但是背景(房间、家具等)一直是相同的、而且没有移动,变化的只是人们的动作和位置。这里的背景就反映为时间冗余。
同样,由于人在说话时产生的音频也是连续和渐变的,因此声音信息中也会存在时间冗余。
所以如果对每张图像进行单独的像素存储,在下一张图片中又出现了相同的。那么相当于很多像素都存储了多份,必然会非常浪费空间。
视觉冗余:人的视觉系统对某些细节不敏感
在多媒体技术的应用领域中,人的眼睛是图像信息的接收端。
视觉冗余是相对于人眼的视觉特性而言的,人类的视觉系统并不能对图像画面的任何变化都能感觉到。
通常情况下具有以下特点:
- 对亮度的变化敏感,对色度的变化相对不敏感。
- 对静止图像敏感,对运动图像相对不敏感。
- 对图像的水平线条和竖直线条敏感,对斜线相对不敏感。
- 对整体结构敏感,对内部细节相对不敏感。
- 对低频信号敏感,对高频信号相对不敏感(如:对边沿或者突变附近的细节不敏感)
- ……
因此,包含在色度信号、运动图像、图像高频信号中的一些数据,相对于人眼而言,并不能对增加图像的清晰度作出贡献,被人眼视为多余的,这就是 视觉冗余。
压缩编码的标准
标准化组织:
ITU:International Telecommunications Union VECG:Video Coding Experts Group(国际电传视讯联盟)
- H.26X系列
- H.261:主要在老的视频会议和视频电话产品中使用
- H.263:主要用在视频会议、视频电话和网络视频上
- H.264:H.264/MPEG-4第十部分,或称AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。
- H.265:高效率视频编码(High Efficiency Video Coding,简称HEVC)是一种视频压缩标准,H.264/MPEG-4 AVC的继任者。可支持4K分辨率甚至到超高画质电视,最高分辨率可达到8192×4320(8K分辨率),这是目前发展的趋势,尚未有大众化编码软件出现
ISO:International Standards Organization MPEG:Motion Picture Experts Group(国际标准组织机构)
- MPEG系列(由ISO[国际标准组织机构]下属的MPEG[运动图象专家组]开发)
- MPEG-1第二部分:MPEG-1第二部分主要使用在VCD上,有些在线视频也使用这种格式
- MPEG-2第二部分(MPEG-2第二部分等同于H.262,使用在DVD、SVCD和大多数数字视频广播系统中
- MPEG-4第二部分(MPEG-4第二部分标准可以使用在网络传输、广播和媒体存储上。
目前应用最广泛的H.264(AVC)
特点:高压缩高质量和支持多种网络的流媒体传输
在H264协议里定义了三种帧
- I帧:完整编码的帧叫I帧
- P帧:参考之前的I帧生成的只包含差异部分编码的帧叫P帧
- B帧:参考前后的帧编码的帧叫B帧
H264采用的核心算法是帧内压缩和帧间压缩
- 帧内压缩是生成I帧的算法
- 帧间压缩是生成B帧和P帧的算法
H264的压缩方法:
- 分组: 把几帧图像分为一组(GOP:Group of picture(图像组),也就是一个序列),为防止运动变化,帧数不宜取多;
- 定义帧: 将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;
- 预测帧: 以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
- 数据传输: 最后将I帧数据与预测的差值信息进行存储和传输。
H264分层设计
- 视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示;
- 网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。
编码方式
编码的方式有两种:
- 软编码:使用 CPU 进行编码,软编码通常使用:ffmpeg+x264
- 硬编码:使用非 CPU 进行编码,如显卡 GPU、专用的 DSP、FPGA、ASIC 芯片等
PS:
ffmpeg:是一套开源的、用于对音视频进行编码&解码&转化计算机程序
x264:x264是一种免费的、开源的、具有更优秀算法的H.264/MPEG-4 AVC视频压缩编码方式
对比:
- 软编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低
- 硬编码: 性能高,对CPU没有压力,但是对其他硬件要求较高(如GPU等)
iOS中编码方式:
- 在iOS8之前,苹果并没有开放硬编码的接口,所以只能采用ffpeng+x624进行软编码
- 在iOS8之后,苹果开放了接口,并且封装了
VideoToolBox&AudioToolbox
两个框架,分别用于对视频&音频进行硬编码
iOS-视频编码技术相关推荐
- iOS 视频直播技术
iOS 视频直播技术 直播难:直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的. 直播易:市场已经有很多成熟的案例了.最常 ...
- 音视频编码技术与格式大全
来自Video.com.cn(视频网) 一.常见视频格式中采用的技术 当PC开始拥有FPU(浮点处理器)后,PC如何处理多媒体信息的问题也被摆上台面.无数专家开始为音频视频编码技术运用在PC上开始忙碌 ...
- 技术系列课|从NE264到NE265:视频编码技术缔造美好生活
在网易,我们一直致力于用好的技术服务用户,为用户提供优质的体验,实现美好生活缔造者的愿景.而视频编码技术作为底层驱动技术,将如何改变我们的生活?如何通过视频将分隔两地的人连接起来?如何通过视频记录生活 ...
- 中南大学张昊:我非常期待基于AI的图像视频编码技术的创新
点击上方"LiveVideoStack"关注我们 策划:包研.Alex 编辑:Alex 张昊 年终访谈 #002# 编者按:本周是2021年的最后一周,在这个迎接新年的日子里,Li ...
- 拥抱智能,AI视频编码技术的新探索
随着视频与交互在日常生活中的作用日益突显,愈发多样的视频场景与不断提高的视觉追求对视频编码提出更高的挑战.相较于人们手工设计的多种视频编码技术,AI编码可以从大数据中自我学习到更广泛的信号内在编码规律 ...
- 下一代视频编码技术的云视频应用探索
本文由华为云资深产品专家左雯在LiveVideoStackCon2020线上峰会的演讲内容整理而成,本文从视频编解码技术的趋势.难点和挑战以及华为云视频产品的编解码关键技术实践与成果两方面介绍下一代视 ...
- 低成本更清晰,下一代视频编码技术将如何实现这一目标?
摘要:下一代的视频编码技术仍是采用传统的演进思路--在经典架构上做模块增强. 随着短视频.直播的兴起,在线视频领域用户使用时长已超过社交领域,而5G时代视频在互联网的流量占比将会增长至85~90%.面 ...
- 视频编码技术 -1.2色彩原理
视频编码技术 -1.2色彩原理 我们平时所看到的五颜六色的物体,是被光照射的结果,光可以依照光清或者波长分解.白光通过校镜后可以被分解成七种不同颜色的单色光,这些光的颜色从上到下排列依次为:红.桥.黄 ...
- MPEG4视频编码技术介绍
MPEG全称是Moving Pictures Experts Group,它是"动态图象专家组"的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原 ...
- SVC和视频通信 ——用于实时多方视频的可伸缩视频编码技术
作者 / Alex Eleftheriadis, Ph.D., Chief Scientist of Vidyo 翻译 / 小极狗 可以说,可伸缩视频编码技术(SVC)在视频会议行业和视频通信中有着重 ...
最新文章
- linux bash输入输出重定向
- async js 返回值_JS异步编程 | Async / Await / Generator 实现原理解析
- 【转】程序员健康建议
- 【接口测试】【postman】postman通过脚本获取Token并自动加入请求头实现Token的参数化
- 阻塞与非阻塞、同步与异步 I/O模型
- [凯立德]2013夏季卓豪华版2686-2E23J0Dsp1自适应程序懒人包
- BZOJ 1503: [NOI2004]郁闷的出纳员
- 系统开发中的时间类型的处理问题
- 马尔可夫过程及其例题分析
- 猴子意念打字,有可能敲出莎士比亚全集
- 内网远程控制软件哪个好用
- web表格控件FineReport作为企业web表格制作软件的核心优势
- 宜家订单JSON_怎么评价宜家(IKEA)?
- 命不好,因为你同床共枕的人
- Bootstrap初识
- flowci php,我和flow.ci的第一次亲密接触
- 计算机网络设备路由器折旧年限,(新修订事业单位会计制度)事业单位固定资产折旧年限表.pdf...
- [BISTU校赛]12月12日校赛题解
- 【Opencv图像处理】BGB转HSV与颜色检测
- 2021 第十二届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B 组
热门文章
- 850. 矩形面积 II:扫描线+离散化+线段树
- 2017年(Lunar Year)读书与看剧
- PPT动画教程:插入声音(转)
- UML类图中符号的含义
- 【华为ICT备赛】生成树基础
- 计算机研究生 在职2018,在职人员选择报考2018年五月计算机技术在职研究生的原因是什么...
- 裸辞三个月后,哭诉亲身经历,建议还想换工作的Java程序员不要辞职
- HDS推出HUS中端阵列 文件、块和对象统一存储
- [收藏]个人助理-公元农历
- 四驾马车:从“制造之城”到“智能制造之都”的长沙缘何飞速前进