前言
前面的文章学习了一些关于C/C++和NDK相关的知识点,那么现在就来简单的入门一些关于音视频的相关概念,万层高楼平地起,还是从最基础开始。
正文
查看音视频文件的封装格式
这里要明确一个概念,就是封装格式,比如我们熟悉的mp4、avi等,这些是封装格式,而不是什么音频或者视频编码格式,具体看下图:
使用MediaInfo工具
前面我们使用播放器通过查看属性来分析音视频文件的内容,这里可以使用一个软件叫做MediaInfo来做同样的事,这样可以更快、更清晰地查看文件信息,看下图:
通过MediaInfo查看的音视频信息如下:
视频播放器原理
对于播放播放器的原理,其实就对应着音视频的生成过程,主要包括封装技术、视频压缩编码技术、音频压缩编码技术,如果考虑网络传输的话,还包括流媒体协议技术。
看上图,我们就能看出播放器的大致原理。
这里给做了个总结,主要就是了解一下基本步骤,以及常见的格式。
流媒体协议
既然上图给我们说明了一些基本步骤和协议,那就分别了解一些,先看一些主要流媒体协议。
这里主要就这2个方向,其中RTSP+RTP经常用于IPTV领域,因为其采用UDP传输音视频,支持组播,效率高,缺点就是网络不好的情况下会丢包。所以互联网网络环境的不稳定性,所以互联网视频服务经常采用TCP作为其流媒体传输层协议,所以像RTMP、HTTP这类协议广泛用于互联网音视频服务之中。
封装格式
封装格式在前面也说了,就是把视频码流和音频码流按照一定的格式存储在一个文件中。
名称 | 推出机构 | 是否支持流媒体 | 支持的视频编码 | 支持的音频编码 | 目前使用领域 |
---|---|---|---|---|---|
AVI | Microsoft Inc | 不支持 | 几乎所有格式 | 几乎所有格式 | BT下载影视 |
MP4 | MPEG | 支持 | MPEG-2, MPEG-4, H.264, H.263等 | AAC, MPEG-1 Layers I, II, III, AC-3等 | 互联网视频网站 |
TS | MPEG | 支持 | MPEG-1, MPEG-2, MPEG-4, H.264 | MPEG-1 Layers I, II, III, AAC, | IPTV,数字电视 |
FLV | Adobe | 支持 | Sorenson, VP6, H.264 | MP3, ADPCM, Linear PCM, AAC等 | 互联网视频网站 |
MKV | CoreCodec | 支持 | 几乎所有格式 | 几乎所有格式 | 互联网视频网站 |
RMVB | Real Networks Inc. | 支持 | RealVideo 8, 9, 10 | AAC, Cook Codec, RealAudio Lossless | BT下载影视 |
这里就罗列了一些常用的,这里只有AVI是不支持流媒体的,也就是不能边下边播,有的封装格式支持的音视频多,有的支持的格式少,这里具体细节不一一细说了,后面有机会再说。
视频编码
视频编码的作用就是将像素数据(RGB、YUV等)压缩成视频码流,从而降低视频的数据量。
如果视频不经过压缩编码的话,体积非常大,一部电影都有上百G的大小,所以视频编码是非常重要的技术。
下面还是罗列一些最常用的视频编码:
名称 | 推出机构 | 推出时间 | 使用领域 |
---|---|---|---|
HEVC(H.265) | MPEG/ITU-T | 2013 | H.265目的是在有限的带宽下传输更高质量的网络视频,仅需要原来一半的带宽可以播放相同质量的视频,是4K、8k等超高清领域的主要使用地方 |
H.264 | MPEG/ITU-T | 2003 | H.264是目前使用最广泛的一个视频编解码协议 |
VP9 | 2013 | VP9目前不稳定,用于替代VP8 | |
VP8 | 2008 | VP8是WebRTC的默认视频编解码器 |
音频编码
音频编码的主要作用就是将音频采样数据比如PCM等压缩成音频码流,从而降低音频的数据量。音频编码也是非常重要的技术,但是一般情况下音频的数据远小于视频的数据,所以即使使用稍微落后的音频编码标准,导致音频数据量增加一点,也不会对音视频的总数据量产生大的影响。
下面也是罗列一些常用的音频编码:
名称 | 推出机构 | 推出时间 | 使用领域 |
---|---|---|---|
AAC | MPEG | 1997 | AAC目前使用到各个领域 |
AC-3 | Dolby Inc. | 1992 | 电影 |
MP3 | MPEG | 1993 | 各个领域(旧),大部分被AAC替代 |
网络视频服务平台对比
目前网络音视频服务主要有2种,一种就是直播平台,比如网络电视台、各种直播APP等,还有就是点播平台,可以根据用户的需要播放相应的视频节目,比如视频网站等。
其中直播平台主要架构就是RTMP+FLV+H.264+AAC这个技术方案,而点播平台一般都是HTTP+FLV+H.264+AAC这个架构,这些知识点到后面更深入的学习我们将进一步了解。
总结
这篇文章主要就是大概介绍一些关于音视频的基础和常见名称,有个印象即可,后面将更多的分析。
最后,给大家分享一个B站学习音视频开发的宝藏教程。
音视频开发全系列教程:https://www.bilibili.com/video/BV1fb4y1d7JU?spm_id_from=333.999.0.0