声波三要素:频率、振幅和波形。频率代表音阶的高低,振幅代表响度,波形代表音色。
采样、量化和编码
奈奎斯特定理(采样定理):按比声音最高频率高2倍以上的频率对声音进行采样(也称为AD转换)。人耳能听到的频率范围是20Hz~20kHz,所以采样频率一般为44.1kHz(1秒采样44100次)。
通常所说的音频的祼数据格式就是脉冲编码调制(Pulse Code Modulation, PCM)数据。描述 PCM 需用到的概念:量化格式(sampleFormat)、采样率(sampleRate)、声道数(channel)。
比特率(以 CD 音质为例,量化格式或称位深度为16比特、采样率为44100,声道数为2),CD的数据比特率
44100 * 16 * 2 = 1378.125kbps
1分钟内所占的存储空间:
1378.125 * 60 / 8 / 1024 = 10.09MB
分贝
N= 10 * lg(A1 / A0)
其中A0是基准量(或参考量), A1是被量度量
压缩编码的基本指标之一就是压缩比,压缩算法包括有损压缩和无损压缩。压缩编码算法,如PCM、WAV(多媒体开发的中间文件、保存音乐和音效素材)、AAC(128Kbit/s以下的音频编码,多用于视频中音频轨的编码)、MP3(高比特率下对兼容性有要求的音乐欣赏)、Ogg(比MP3更小的码率实现比MP3更好的音质,适用语音聊天的音频消息场景)等。压缩编码的原理是压缩掉冗余信号(耳听觉范围之外的音频信号以及被掩蔽掉的音频信号等),掩蔽掉的音频信号则主要是因为人耳的掩蔽效应,主要表现为频域掩蔽效应与时域掩蔽效应。
三原色光:红光(R)、绿光(G)、蓝光(B)。子像素表示方式
- 浮点表示:取值范围为0.0~1.0,比如,在OpenGL ES中对每一个子像素点的表示使用的就是这种表达方式。
- 整数表示:取值范围为0~255或者00~FF,8个比特表示一个子像素,32个比特表示一个像素,这就是类似于某些平台上表示图像格式的RGBA_8888数据格式。比如,Android平台上RGB_565的表示方法为16比特模式表示一个像素,R用5个比特来表示,G用6个比特来表示,B用5个比特来表示。
1280×720的RGBA_8888图像的大小:1280 * 720 * 4 / 1024 / 1024 = 3.516MB
YUV数据格式,其中“Y”表示明亮度(Luminance或Luma),也称灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma)。Y的取值范围都是16~235, UV的取值范围都是16~240。YUV最常用的采样格式是4:2:0,即如果某一行是4:2:0(4Y-2U-0V),那么其下一行就是4:0:2(4Y-0U-2V)…对非压缩的8比特量化的视频来说,8×4的一张图片需要占用48字节的内存:
1280×720的视频帧,用YUV420P的格式来表示,数据量的大小:
(1280 * 720 * 1 + 1280 * 720 * 0.5) / 1024 / 1024 = 1.318MB
1.318MB * 24fps * 90min * 60s = 166.8GB
YUV转换到RGB的公式
视频压缩使用帧间编码技术可以去除时间上的冗余信息
- 运动补偿
- 运动表示
- 运动估计
ISO标准:Motion JPEG即MPEG,主要版本:Mpeg1(用于VCD)、Mpeg2(用于DVD)、Mpeg4 AVC(当前大多流媒体使用)。
ITU-T标准:H.261、H.262、H.263、H.264
编码概念
- IPB帧
- I帧:帧内编码帧(intra picture)
- P帧:前向预测编码帧(predictive-frame)
- B帧:双向预测内插编码帧(bi-directional interpolated prediction frame)
- H264中有一个帧称为IDR帧,IDR的英文全称instantaneous decoding refresh picture
- PTS与DTS
- DTS主要用于视频的解码,英文全称是Decoding Time Stamp
- PTS主要用于在解码阶段进行视频的同步和输出,全称是Presentation Time Stamp
- GOP(Group Of Picture)两个I帧之间形成的一组图片
通常I的压缩率是7(与JPG差不多), P是20, B可以达到50
https://github.com/zhanxiaokai
转码推荐值
Quality | Resolution | Video Bitrate | Audio Bitrate | Audio Sample Rate | Frames Per Second | Video Codec | h.264 Profile | Keyframe interval | Audio Codec | Audio Channels |
---|---|---|---|---|---|---|---|---|---|---|
HD 720 | 1280x720 | 1,200 - 4,000 kbps | 128kbps | 48kHz | 25/30/60 | h.264 | Main | 1 Second | AAC-LC | Mono or Stereo |
HD 1080 | 1920x1080 | 4,000-8,000 kbps | 192kbps | 48kHz | 25/30/60 | h.264 | Main or High | 1 Second | AAC-LC | Stereo |
4K | 3840x2160 | 8,000-14,000 kbps | 192kbps | 48kHz | 25/30 | h.264 | High | 1 Second | AAC-LC | Stereo |