基础
视频
GRAY 色彩空间 YUV 色彩空间 RGB 色彩空间 HSL 和 HSV 色彩空间
YUV 表示原始数据.
H.264 表示视频的编码格式.
MP4 表示封装格式,可以直接观看.
RTMP:常用的直播传输协议。
一般获取到裸数据后(YUV),需要先进行 codec 编码(H.264),然后进行 muxer 封装(mp4)。 就可以在播放器中进行视频播放了。
yuv(原始数据)-> h264(编码数据)-> rtmp(传输协议,直播) yuv(原始数据)-> h264(编码数据)-> mp4(封装)
音频
采样格式、音频采样率、音频声道及其布局、采样位深度,计算音频码率
声音的频率一般会以赫兹(Hz)表示,指每秒钟周期性振动的次数。
而声音的强度单位则用分贝(dB)来表示
先采集到模拟信号,然后通过 ADC(模数转换)将模拟信号转换成数字信 号以后,再通过 PCM(Pulse Code Modulation)脉冲编码调制对连续变化的模拟信号进行采样、量化和编码转换成离散的数字信号,从而实现音频信号的采集。另外,也可以将采集的音频信号输出到扬声器、耳机之类的设备。
通常我们人耳能够听到的频率范围是在 20Hz~20kHz 之间,为了保证音频不失真,音频的采样频率通常应该在 40kHz 以上,而理论上采样率大于 40kHz 的音 频格式都可以称之为无损格式。现在一般的专业设备的采样频率为 44100Hz(也称之为44.1kHz)。并且 44.1kHz 是专业音频中的最低采样率。
音频采样位深度
采样的位深度,也叫采样位深,它决定了声音的动态范围。平时,我们常见的 16 位(16bit)可以记录大概 96 分贝(96dB)的动态范围。也可以理解为每一个比特大约可以记录 6dB 的声音。同理,20bit 可记录的动态范围大概是 120dB,24bit 就大概是 144dB。
44dB 属于人类可以接受的程度,55dB 会使人感觉到烦躁,60dB 会让人没有睡意,70dB 会 令人精神紧张,85dB 长时间听会让人感觉刺耳,100dB 会使人暂时失去听觉,120dB 可以瞬 间刺穿你的耳膜,160dB 会通过空气振波震碎玻璃,200dB 可以使人死亡。
音频的码率
例如我们有一个双声道立体声、采样率是 48000、采样位深是 16 位、时长为 1 分钟的音频,它的存储空间占用计算应该是:
声道数 × 采样率 × 采样位深 × 时长= 2 × 48000 × 16 × 60 = 92160000b
文件名后面有 MP3、AAC 这样的后缀,其实这些都是音频编码的格式。因为音频在传输和存储时,如果直接存储 PCM 音频数据的话,消耗的带宽或者存储空间会比较多
转码
视频转码主要涉及编码压缩算法(Encoding)、格式封装操作 (Muxing)、数据传输 (例如 RTMP、RTP)、格式解封装(Demuxing)、解码解压缩算法(Decoding)几方面的操作
推流
fffmpeg -re -f lavfi -i testsrc=s=1280x720:r=25 -pix_fmt yuv420p -vcodec libx264 -f flv rtmp://publish.x.com/live/stream
视频封装信息(容器格式分析)
ffprobe -show_format
流信息
ffprobe -show_streams
包信息
ffprobe - show_packets
帧信息
ffprobe -show_frames