标签:需求 访问 封装格式 容器 tencent center 高精度 比特率 rtmp
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~与生活紧密相连的音视频,为何有那么多格式?直播、点播以及即时视频其中又有怎样的机制支撑?面对纷繁复杂的音视频知识,应该如何学起?快速探索,音视频技术不再神秘。
面对一门技术,我们熟悉而陌生,我们能够熟练的基于平台的API完成各种各样的需求,掌握平台特性、框架与原理。但随着技术点不断深入,却发现自己存在基础性与深度性的知识盲区。
局限于平台API开发,并不能使我们走的很远。突破技术成长必经的瓶颈期,关键在于技术沉淀与对业务方向相结合,需要我们对知识积累与深入。本文分享了笔者对音视频技术知识网络的探索路径,希望能给大家带来帮助。
定义:对连续变化图像在空间坐标上做离散化处理,将模拟信号转变成数字信号的过程,即为图像进行采样。
通俗来说:采集就是将看到的东西转成二进制流的过程。
「图像」是个集合的概念,帧、顶场、底场都可以称为图像。
逐行扫描与隔行扫描
顶场与底场,隔行扫描锯齿瑕疵
RGB模型
RGB分别代表红绿蓝,每种颜色需要用3个数字表示,一个数字占用1字节,一种颜色则需要3字节,24位。
更高效的颜色模型?YUV
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个信号表示,为什么说该模型更高效?
人眼对亮度分辨率敏感度高于色彩敏感度。
视觉特性
基于人眼视觉特性,很明显,我们需要从颜色方面入手,于是提出“色度取样”,使颜色存储减半或者更多。容易实现,编码压力较小,收益较高。
色度取样
我们知道显示器扫描原理分为逐行扫描与隔行扫描,每条扫描线被扫描时,色度数值传送频率会比亮度低,颜色取样方式有多种,取样方式通常基于亮度值,以4:X:Y的形式描述,X和Y是每两个色度通道中的数值的相对数量:
显示器扫描显示原理
继续举个栗子:
YCbCr像素点
我们有这样一幅图片,上面有像素阵列:
原始像素阵列
YCbCr 4:4:4
会有以下几种采样优化方式:
4:2:2优化后像素阵列
4:2:2取样方式
4:2:0优化后像素阵列
4:2:0取样方式
上图可以很直观的看出:采用YCbCr颜色模型后,并不需要每个像素都存有3个分量,颜色分量通过“色度取样”后,有效的减少了颜色分量的存储。
<center>
<img src="https://ask.qcloudimg.com/draft/2557878/yjqoq9qlhg.png"
width="70%" />
成像传感器
</center>
举个栗子,对于黑白图像图(a)为连续图像,如果需要转换成数字形式,需要几步主要操作:
取样与量化
取样:(a)图上沿AB线段等间隔对该图像取样,得到灰度级曲线(b)
量化:
(c)图右侧将灰度分为8个灰度级,再横向每一取样的连续灰度值,量化为8个灰度之一,最终得到(d)图,感知器输出的量化完成流产生数字图像的过程。
a. 图像投影至传感器阵列 b. 图像取样与量化结果
播放器播放从互联网上播放视频,需要经过:解协议、解封装、解码、音视频同步这几个核心步骤。<center>
互联网播放视频流程
视频编解码过程是数字视频压缩与解压缩的过程。
选取音视频编码方案时,需要考虑:视频的质量、码率、编码算法和解码算法的复杂度、针对数据丢失和错误的鲁棒性(Robustness)、编辑的方便性、随机访问、编码算法设计的完美性、端到端的延时以及其它一些因素。
H.26X 系列,由国际电传视讯联盟远程通信标准化组织(ITU-T)主导,包括 H.261、H.262、H.263、H.264、H.265。
MPEG 系列,由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。
除了视频,音频当然也需要编码,而音频常用编码格式:
音视频加工处理,是业务的核心需求,对开发者自由度最大的一个环节,通过音视频处理,可以实现各种各样炫酷的特效。
图像、视频常见处理方式:美化、裁剪、缩放、旋转、叠加、编解码等。
音频常见处理方式:重采样、去噪,回声消除,混音、编解码等
常见框架:
(传送门:音视频开发开源码工程汇总)
流媒体,指通过互联网以流式传输方式的媒体。流媒体协议,则是服务器与客户端之间通信遵循但规定。说到音视频传输,我们不得不提流媒体协议,常见流媒体协议有:
协议 | 概述 | 特点 | 应用场景 |
---|---|---|---|
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)提供音视频直播和点播方案。 |
公司 | 协议 | 封装 | 视频编码 | 音频编码 | 播放器 |
---|---|---|---|---|---|
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 有两方面优势:
对于封装格式:MP4,FLV,F4V 几者只是容器,带来的差异不大,而关键的是音视频解码方式:H.264与AAC,这两种编码标准目前仍被最广泛的应用。
公司 | 协议 | 封装 | 视频编码 | 音频编码 | 播放器 |
---|---|---|---|---|---|
华数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.264、AAC、Flash。FLV、RTMP、Flash 都是 Adobe 公司的产品,天生有着良好的结合性。
以上为PC时代旧数据,现移动互联网已爆发,H5 以及客户端应用的普及,行业中对视频业务技术方案的选择也逐渐在发生着变化,而我们则需要结合眼下的实际情况和技术发展的趋势去做出合适的技术选型。
音视频技术道路很长,本文旨在搭建音视频知识知识网,许多知识未能深入,后续仍需要我们不断学习与实践,抱着追求极致的精神去探索发现,加油,我们共同快速成长!
此文已由作者授权腾讯云+社区发布,更多原文请点击
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!
标签:需求 访问 封装格式 容器 tencent center 高精度 比特率 rtmp
原文地址:http://blog.51cto.com/13957478/2315184