设为首页 加入收藏

TOP

快速探索,音视频技术不再神秘(一)
2019-09-01 23:27:39 】 浏览:83
Tags:快速 探索 视频技术 不再 神秘

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

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

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

前言

面对一门技术,我们熟悉而陌生,我们能够熟练的基于平台的API完成各种各样的需求,掌握平台特性、框架与原理。但随着技术点不断深入,却发现自己存在基础性与深度性的知识盲区。

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

img

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

1.1 采样原理

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

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

1.2 基础概念

1.2.1 图像

「图像」是个集合的概念,帧、顶场、底场都可以称为图像。

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

img逐行扫描与隔行扫描

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

1.2.2 颜色模型

RGB颜色模型

imgRGB模型

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

更高效的颜色模型?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显示器扫描显示原理

继续举个栗子:

imgYCbCr像素点

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

img原始像素阵列

imgYCbCr 4:4:4

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

img4:2:2优化后像素阵列

img4:2:2取样方式

img4:2:0优化后像素阵列

img4:2:0取样方式

上图可以很直观的看出:采用YCbCr颜色模型后,并不需要每个像素都存有3个分量,颜色分量通过“色度取样”后,有效的减少了颜色分量的存储。

1.3 图像感知与获取

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

1.4 取样与量化

举个栗子,对于黑白图像图(a)为连续图像,如果需要转换成数字形式,需要几步主要操作:

img取样与量化

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

  2. 量化:

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

    img

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

二、渲染 - 数据如何展现?

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.261、H.262、H.263、H.264、H.265。

  • H.261,主要用于老的视频会议和视频电话系统。是第一个使用的数字视频压缩标准。实质上说,之后的所有的标准视频编解码器都是基于它设计的。
  • H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
  • H.263,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263 比它之前
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android如何实现超级棒的沉浸式体.. 下一篇WebView断网提示

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目