iOS-FFmpeg音视频开发Android音视频系列Android开发

「音视频专题」 音视频基础概念介绍

2019-03-04  本文已影响4人  sprint

01 前言

大家好,从本文开始我们将从 Android 音视频专题开始探索,并按照 iOS/Android 音视频开发专题介绍 依次开始。iOS 音视频专题将在 Android 音视频专题结束后进行。  在进入实战之前,我们有必要了解下音视频相关术语。

02 音频视频编码

什么是音视频编码 ?

所谓音视频编码就是指通过特定的压缩技术,将某个音视频格式的文件转换成另一种音视频格式文件的格式。

音视频编码的意义 ?

音视频编码的最终目的是对音视频进行压缩,未经编码(压缩)的音视频数据量大,存储困难,不利于网络传输。如果视频不经过编码压缩,在直播场景下做不到实时传输的需求。

视频编码格式有哪些 ?

H.264 (AVC) 也被成为高级视频编码(Advanced Video Codding),是一种视频压缩视频标准,简称AVC,一种被广泛使用的高精度视频的录制,压缩和发布格式。

H.265 (HEVC) 也被称为高效视频编码(High Efficiency Video Coding),是一种视频压缩视频标准,简称 HEVC。可支持 4K 分辨率,最高分辨率可达到 8192x4320 (8K分辨率),目前的发展趋势。

音频编码格式有哪些 ?

AAC 也被成为高级音频编码 (Advanced Audio Codding) ,又被称为 MPEG-4 AAC,是一种有损压缩的音频编码集。其设计目的是为了替代原有的 MP3 编码标准,在相同码率下质量优于 MP3 编码。

MP3 全称 MEPG-1 or MEPG-2 Audio Layer III,曾经非常流行的一种数字音频编码和有损压缩格式。

WMA 全称 Windows Media Audio,是微软公司开发的一种数字音频编码格式,本身支持有损和无损压缩。

目前 H.264 和 AAC 是最流行的编码压缩技术,无论媒体文件还是实时媒体流,H.264 一般与 AAC 一起使用。

H.264 (AVC) 与 x264 是什么关系 ?

H.264  是一个视频编码标准,由国际上两个著名的视频专家组(VCEG 和 MPEG) 合作提出的,两个专家组既称它为 H.264,也称为 AVC。

x264 是一个编码器,它实现的参考标准就是 H.264,x264 是符合 H.264 的开源项目,是H.264 的简化版,不支持某些高级特性。常见的 H.264 的编解码器有 JM 和 x264。

音频视频编解码器的比较

上述的介绍的编码格式只是目前较为主流的编码格式,如果你想了解更多信息,可在公众号内回复资料获取。

DevTips

什么是封装格式 ?

AVI , 3GP ,MP4 都是一种视频封装格式, 是存储特定视频编码格式的容器,一般为文件扩展名。封装格式只是媒体数据的容器,不会影响视频画质,是把特定轨道按照特定格式存储到文件中。封装格式可以存储多种编码格式 ,如 QuickTime 几乎可以存储所有视频编码格式。

主流封装格式有哪些 ?

AVI

文件扩展名: .avi

缺点:体积大,只能存储一个视频轨道和音频轨道。不支持添加字幕。

优点:画质好

WMV

文件扩展名: .wmv

缺点:用户量少,普及低。

优点:高清编码格式,体积小,适合在线播放和传输。

MPEG

文件扩展名: .mpg , .mpeg , .3gp , .mp4 等

缺点:有损的文件格式

优点:支持字幕,可以封装多种编码的视频和音频。

另外,封装格式对音视频体积影响较小,体积主要由编码格式决定。

DevTips

04 其他知识点

帧率

帧率是视频显示帧数的量度,简称 fps 或者 赫兹 (Hz)。每秒显示帧数或者帧率表示 GPU 处理时每秒能够绘制的次数。帧率越高画面更逼真和流畅,一般 30 fps 可以满足大部分场景,如果帧率超过屏幕的刷新频率,只会浪费 GPU。

刷新率

刷新率是指屏幕每秒内刷新的次数,单位  赫兹 (Hz) ,频率越高越流畅。一般如果达到 80hz ,可以消除图像闪烁和抖动。

码率

码率俗称比特率,比特率是单位时间内连续媒体的比特数量。码率越高,文件体积越大。通过码率我们可以计算出文件的大小:

文件大小 (b) = 码率(b/s)* 时长(s)

一般情况下码率越大画质越好,但也和具体编码算法有关。

DTS 和 PTS

DTS : Decode Time Stamp ,一般用于标识该比特流在什么时候送入解码器解码。(因为之间有参考关系)

PTS : Presentation Time Stamp,一般用于解码后的视频帧什么时候被显示。

视频帧的类型

I 帧:表示为关键帧,I 帧可以独立解码,可以理解为一帧完整的画面,解码时不参考其他帧。

P 帧:表示这一帧和之前一个 I 帧或 P 帧的差别帧,只包含前一帧的差别数据,解码时需要用之前的 I 帧或 P 帧叠加和本帧的差别生成图像。

B 帧:表示双向差别帧,B 帧记录的是本帧和与前后帧差别,解码时需要使用本帧叠加前后帧。B 帧最小,但是解码时性能较低。

04 结束语

最近,有 iOS 开发者私信我说 Android 专题和 iOS 专题是否可以交叉介绍,这里向大家说明下  iOS 专题需要 Android 专题结束后才会讲解。

如果你熟悉 iOS AVFoundation ,那么通过 Android 专题的你会对 AVFoundation 有更深的理解。Android 专题中与 iOS 系统API 采用了相同的架构设计, API 名称大致相同。最终Android 专题结束后产出的API 截图如下 :

如果你想了解更多信息,可在微信公众号内回复 资料 获取。

往期内容:

iOS/Android 音视频开发专题介绍

下期预告:

使用 MediaExtractor 及 MediaCodec 解码音视频》

上一篇下一篇

猜你喜欢

热点阅读