快速探索,音视频技术再也不神秘

欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~html

本文由goo发表于云+社区专栏算法

与生活紧密相连的音视频,为什么有那么多格式?直播、点播以及即时视频其中又有怎样的机制支撑?面对纷繁复杂的音视频知识,应该如何学起?快速探索,音视频技术再也不神秘。浏览器

前言

面对一门技术,咱们熟悉而陌生,咱们可以熟练的基于平台的API完成各类各样的需求,掌握平台特性、框架与原理。但随着技术点不断深刻,却发现本身存在基础性与深度性的知识盲区。bash

局限于平台API开发,并不能使咱们走的很远。突破技术成长必经的瓶颈期,关键在于技术沉淀与对业务方向相结合,须要咱们对知识积累与深刻。本文分享了笔者对音视频技术知识网络的探索路径,但愿能给你们带来帮助。服务器

img

1、采集 - 数据从哪里来?

1.1 采样原理

定义:对连续变化图像在空间坐标上作离散化处理,将模拟信号转变成数字信号的过程,即为图像进行采样。网络

**通俗来讲:**采集就是将看到的东西转成二进制流的过程。框架

1.2 基础概念

1.2.1 图像

「图像」是个集合的概念,帧、顶场、底场均可以称为图像。机器学习

  • 帧 一帧一般是一幅完整图像,当采用逐行扫描方式扫描,每次扫描获得的信号就是一帧。
  • 顶场与底场 采集视频信号时,扫描方式分为逐行扫描与隔行扫描。若是采用逐行扫描,获得的则是一幅完整的图像;而采用隔行扫描(奇、偶数行),则扫描下来的一帧图像就被分为了两个部分,这每一部分就称为「场」,根据次序分为:「顶场」和「底场」
  • 隔行扫描 每一帧被分割为两场画面交替显示。每一帧被分割为顶场与底场,一般是先扫描奇数行获得第一场,而后扫描偶数行获得第二场。因为视觉暂留效应,人眼将会看到平滑的运动而不是闪动的半帧半帧的图像。可是这时会有闪烁出现,尽管不容易被察觉,但会使得人眼容易疲劳。当屏幕的内容是横条纹时,这种闪烁特别容易被注意到,而且会有锯齿瑕疵。
  • 逐行扫描 则是将每帧的全部画面同时显示。每次都显示整个扫描帧,若是逐行扫描的帧率和隔行扫描的场率相同,人眼将看到比隔行扫描更平滑的图像,相对于隔行扫描来讲闪烁较小。每一帧图像均是由电子束顺序地一行接着一行连续扫描而成,这种扫描方式称为逐行扫描。
  • 二者区别 举个栗子,25fps 100行帧图像,那么隔行扫描须要一秒扫描50次,但每次只须要扫描50行。而逐行扫描则只须要扫描25次,但每次须要扫描100行。 结论:隔行扫描扫描频率为逐行扫描双倍,信道带宽为逐行扫描的一半。在图像体验下降很少的状况下,信道带宽减小了一半,使得设备成本减小,所以,早期大多数显示器都采用隔行扫描。
  • 传送门:逐行扫描、隔行扫描详细讲解

img
逐行扫描与隔行扫描

img
顶场与底场,隔行扫描锯齿瑕疵

1.2.2 颜色模型

RGB颜色模型

img
RGB模型

RGB分别表明红绿蓝,每种颜色须要用3个数字表示,一个数字占用1字节,一种颜色则须要3字节,24位。ide

更高效的颜色模型?YUV性能

YCbCr颜色模型

YCbCr颜色模型是YUV家族的一员,关键特色在于它亮度信号Y与色度信号U、V相互分离。当缺失U、V,仅有Y信号时,也可以表示出黑白图像。

Y = kr\*R + kg\*G + kb\*B
复制代码

Y 即「亮度」,kr、kg、kb 即 R、G、B 的权重值。

Cr = R – Y; Cg = G – Y; Cb = B – Y;
复制代码

疑问:对比RGB模型,YCbCr模型每一个像素也须要3个信号表示,为何说该模型更高效?

优化思路

人眼对亮度分辨率敏感度高于色彩敏感度。

img
视觉特性

基于人眼视觉特性,很明显,咱们须要从颜色方面入手,因而提出“色度取样”,使颜色存储减半或者更多。容易实现,编码压力较小,收益较高。

img
色度取样

优化实现

咱们知道显示器扫描原理分为逐行扫描与隔行扫描,每条扫描线被扫描时,色度数值传送频率会比亮度低,颜色取样方式有多种,取样方式一般基于亮度值,以4:X:Y的形式描述,X和Y是每两个色度通道中的数值的相对数量:

img
显示器扫描显示原理

继续举个栗子:

img
YCbCr像素点

咱们有这样一幅图片,上面有像素阵列:

img
原始像素阵列

img
YCbCr 4:4:4

会有如下几种采样优化方式:

img
4:2:2优化后像素阵列

img
4:2:2取样方式

img
4:2:0优化后像素阵列

img
4:2:0取样方式

上图能够很直观的看出:采用YCbCr颜色模型后,并不须要每一个像素都存有3个份量,颜色份量经过“色度取样”后,有效的减小了颜色份量的存储。

1.3 图像感知与获取

<img src="ask.qcloudimg.com/draft/25578…"

width="70%" />

成像传感器

  1. 经过电功率和对特殊类型检测能源敏感的传感器材料组合。
  2. 将输入的光照能量变为特殊的电压波形。
  3. 波形的幅度和空间特性都与感知的物理现象有关。为了产生数字图像,接下来须要进行取样与量化处理。

1.4 取样与量化

举个栗子,对于黑白图像图(a)为连续图像,若是须要转换成数字形式,须要几步主要操做:

img
取样与量化

  1. 取样:(a)图上沿AB线段等间隔对该图像取样,获得灰度级曲线(b)

  2. 量化:

    (c)图右侧将灰度分为8个灰度级,再横向每一取样的连续灰度值,量化为8个灰度之一,最终获得(d)图,感知器输出的量化完成流产生数字图像的过程。

    img

    a. 图像投影至传感器阵列 b. 图像取样与量化结果

2、渲染 - 数据如何展示?

2.1 播放器原理

播放器播放从互联网上播放视频,须要通过:解协议、解封装、解码、音视频同步这几个核心步骤。

img
互联网播放视频流程

  1. **解协议:**将流媒体协议数据,解析为标准封装格式数据。流媒体协议传输音视频数据同时,也会传输一些信令数据,其中包括:播放控制、网络状态描述等。常见流媒体协议如HTTP、RTMP或MMS等。
  2. **解封装:**将解协议获得的标准封装格式数据,分离为音频流压缩编码数据与视频流压缩编码数据。封装格式也称为容器,便是将已经编码压缩好的视频轨与音频轨按照必定格式放到一个文件中。 **须要注意的是:**就算是同一个封装格式,其编码方式并不必定同样,咱们能够从后缀名中直观的看到视频文件到封装格式。常见封装格式:avi,rmvb,mp4,flv,mkv等。
  3. **解码:**就是将音视频压缩编码数据,解码成为非压缩的音视频原始数据。音频编码标准有AAC,MP3,AC-3等;视频编码标准包含H.264,MPEG2,VC-1等。编解码是整个流程最核心与最复杂的环节。
  4. **音视频同步:**根据解封装过程获取的参数信息,将解码出来的音视频数据进行同步对其,最终将数据传送到系统,由系统调用硬件进行播放。

2.2 视频编码方式

视频编解码过程是数字视频压缩与解压缩的过程。

选取音视频编码方案时,须要考虑:视频的质量、码率、编码算法和解码算法的复杂度、针对数据丢失和错误的鲁棒性(Robustness)、编辑的方便性、随机访问、编码算法设计的完美性、端到端的延时以及其它一些因素。

2.2.1 H.26X系列概述

H.26X 系列,由国际电传视讯联盟远程通讯标准化组织(ITU-T)主导,包括 H.26一、H.26二、H.26三、H.26四、H.265。

  • H.261,主要用于老的视频会议和视频电话系统。是第一个使用的数字视频压缩标准。实质上说,以后的全部的标准视频编解码器都是基于它设计的。
  • H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
  • H.263,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263 比它以前的视频编码标准在性能上有了较大的提高。尤为是在低码率端,它能够在保证必定质量的前提下大大的节约码率。
  • H.264,等同于 MPEG-4 第十部分,也被称为高级视频编码(Advanced Video Coding,简称 AVC),是一种视频压缩标准,一种被普遍使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的可以大大提升压缩性能的技术,并可以同时在高码率端和低码率端大大超越之前的诸标准。
  • H.265,被称为高效率视频编码(High Efficiency Video Coding,简称 HEVC)是一种视频压缩标准,是 H.264 的继任者。HEVC 被认为不只提高图像质量,同时也能达到 H.264 两倍的压缩率(等同于一样画面质量下比特率减小了 50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×4320(8K 分辨率),这是目前发展的趋势。
  • 详解待整理另外文章

2.2.2 MPEG系列概述

MPEG 系列,由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。

  • MPEG-1 第二部分,主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大体上和原有的 VHS 录像带至关。
  • MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
  • MPEG-4 第二部分,可使用在网络传输、广播和媒体存储上。比起 MPEG-2 第二部分和初版的 H.263,它的压缩性能有所提升。
  • MPEG-4 第十部分,等同于 H.264,是这两个编码组织合做诞生的标准。
  • 详解待整理另外文章

2.3 音频编解码方式

除了视频,音频固然也须要编码,而音频经常使用编码格式:

  • AAC,英文全称 Advanced Audio Coding,是由 Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,在 1997 年推出的基于 MPEG-2 的音频编码技术。2000 年,MPEG-4 标准出现后,AAC 从新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC。(AAC详解待整理另外文章)
  • MP3,英文全称 MPEG-1 or MPEG-2 Audio Layer III,是当曾经很是流行的一种数字音频编码和有损压缩格式,它被设计来大幅下降音频数据量。它是在 1991 年,由位于德国埃尔朗根的研究组织 Fraunhofer-Gesellschaft 的一组工程师发明和标准化的。MP3 的普及,曾对音乐产业形成极大的冲击与影响。
  • WMA,英文全称 Windows Media Audio,由微软公司开发的一种数字音频压缩格式,自己包括有损和无损压缩格式。

3、处理 - 数据怎么加工?

音视频加工处理,是业务的核心需求,对开发者自由度最大的一个环节,经过音视频处理,能够实现各类各样炫酷的特效。

**图像、视频常见处理方式:**美化、裁剪、缩放、旋转、叠加、编解码等。

**音频常见处理方式:**重采样、去噪,回声消除,混音、编解码等

常见框架:

  1. 图像处理:OpenGL,OpenCV,libyuv,ffmpeg 等;
  2. 视频编解码:x264,OpenH264,ffmpeg 等;
  3. 音频处理:speexdsp,ffmpeg 等;
  4. 音频编解码:libfaac,opus,speex,ffmpeg 等。

(传送门:音视频开发开源码工程汇总

4、传输 - 数据如何传输?

4.1 流媒体协议

流媒体,指经过互联网以流式传输方式的媒体。流媒体协议,则是服务器与客户端之间通讯遵循但规定。说到音视频传输,咱们不得不提流媒体协议,常见流媒体协议有:

协议 概述 特色 应用场景
RTP (Real-time Transport Protocol)一种网络传输协议,RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。 基于UDP 协议实现 RTP协议经常使用于流媒体系统(配合 RTSP 协议)
RTCP (Real-time Transport Control Protoco)实时传输协议(RTP)的一个姐妹协议。 RTCP为RTP媒体流提供信道外(out-of-band)控制。RTCP 自己并不传输数据,但和 RTP 一块儿协做将多媒体数据打包和发送。RTCP 按期在流多媒体会话参加者之间传输控制数据。 为 RTP 所提供的服务质量(Quality of Service)提供反馈。
RTSP (Real Time Streaming Protocol)定义了一对多应用程序如何有效地经过 IP 网络传送多媒体数据。 RTSP 在体系结构上位于 RTP 和 RTCP 之上,使用 TCP 或 UDP 完成数据传输 使用 RTSP 时,客户机和服务器均可以发出请求,即 RTSP 能够是双向的。
RTMP (Real Time Messaging Protocol)Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。 协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。 一种设计用来进行实时数据通讯的网络协议,主要用来在 Flash/AIR 平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通讯。
RTMFP (Real Time Media Flow0 Protoco)Adobe 公司开发的一套新的通讯协议,全称 Real Time Media Flow Protocol 协议基于 UDP,支持 C/S 模式和 P2P 模式,即该协议可让使用 Adobe Flash Player 的终端用户之间进行直接通讯 Adobe Flash Player 的终端用户之间进行直接通讯
HTTP (HyperText Transfer Protoco)运行在 TCP 之上 这个协议是你们很是熟悉的,它也能够用到视频业务中来。
HLS (HTTP Live Streaming)是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 ,可支持流媒体的直播和点播 短时长的媒体文件(MPEG-TS 格式),客户端不断的下载并播放这些小文件。因为数据经过 HTTP 协议传输,因此彻底不用考虑防火墙或者代理的问题,并且分段文件的时长很短,客户端能够很快的选择和切换码率,以适应不一样带宽条件下的播放 HLS 的这种技术特色,决定了它的延迟通常老是会高于普通的流媒体直播协议 主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。

4.2 网络视频点播业务

公司 协议 封装 视频编码 音频编码 播放器
CNTV HTTP MP4 H.264 AAC Flash
CNTV(部分) RTMP FLV H.264 AAC Flash
华数 TV HTTP MP4 H.264 AAC Flash
优酷网 HTTP FLV H.264 AAC Flash
土豆网 HTTP F4V H.264 AAC Flash
56网 HTTP FLV H.264 AAC Flash
音悦台 HTTP MP4 H.264 AAC Flash
乐视网 HTTP FLV H.264 AAC Flash
新浪视频 HTTP FLV H.264 AAC Flash

网络视频点播业务采用 HTTP 有两方面优点:

  • HTTP 是基于 TCP 协议的应用层协议,媒体传输过程当中不会出现丢包等现象,从而保证了视频的质量。
  • HTTP 是绝大部分的 Web 服务器支持的协议,于是流媒体服务机构没必要投资购买额外的流媒体服务器,从而节约了开支。

对于封装格式:MP4,FLV,F4V 几者只是容器,带来的差别不大,而关键的是音视频解码方式:H.264与AAC,这两种编码标准目前仍被最普遍的应用。

4.3 网络视频直播业务

公司 协议 封装 视频编码 音频编码 播放器
华数TV RTMP FLV H.264 AAC Flash
六间房 RTMP FLV H.264 AAC Flash
中国教育电视台 RTMP FLV H.264 AAC Flash
北广传媒移动电视 RTMP FLV H.264 AAC Flash
上海IPTV RTSP+RTP TS H.264 MP2 机顶盒

网络视频直播服务采用 RTMP 做为直播协议的好处是能够直接被 Flash 播放器支持,而 Flash 播放器在 PC 时代有着极高的普及率,而且与浏览器结合的很好。所以这种流媒体直播平台基本上能够实现了「无插件直播」,极大下降了用户使用成本。

封装格式、视频编码、音频编码、播放器方面几乎所有采用了 FLV、H.26四、AAC、Flash。FLV、RTMP、Flash 都是 Adobe 公司的产品,天生有着良好的结合性。

4.4 总结

以上为PC时代旧数据,现移动互联网已爆发,H5 以及客户端应用的普及,行业中对视频业务技术方案的选择也逐渐在发生着变化,而咱们则须要结合眼下的实际状况和技术发展的趋势去作出合适的技术选型。

结语

音视频技术道路很长,本文旨在搭建音视频知识知识网,许多知识未能深刻,后续仍须要咱们不断学习与实践,抱着追求极致的精神去探索发现,加油,咱们共同快速成长!

相关阅读 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识

此文已由做者受权腾讯云+社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!

海量技术实践经验,尽在云加社区

相关文章
相关标签/搜索