Audio File Format
音频文件的内容
音频文件当然需要包括音频的采样,采样保存为未经压缩的PCM,或压缩后再保存
同时还需要保存音频本身的信息:
- 不压缩:采样率,位数,声道数
- 压缩:需要更多信息——编码,比特率
元数据:
- 艺术家姓名,音轨标题
- 专辑封面
- timestamp标记
WAV
wav是windows标准的音频格式
如果采样率、比特率、声道很多,音频内容超过4G是不能用wav保存的,可以用RF64 WAV。
wav不能用于网络传输,因为信息都保存在头部,如果只接收到中间部分,将不知道怎么播放
Mac使用类似于WAV的AIFF格式。注意WAV使用little-endian(Intel处理器),AIFF使用big-endian
MP3
比特率较低时,体积比PCM小很多。
使用ID3 tag(保存在mp3尾部),ID3v2 tag(保存在mp3头部)保存metadata。
ID3v2 tag后面就是一个个的mp3帧,每个mp3帧都由音频采样和格式信息组成,一个帧有几百个字节
MP3适合在网络传播,因为只要找到帧开头就可以继续播放。
MP3的重要参数是bitrate比特率,表示每秒有多少bit的数据,这些数据是已经压缩过的。
不压缩的CD立体声音频是1411kbps=44.1k*16*2
MP3从32~320kbps,一般128kbps就相当接近CD音质了,更高的音质是192kbps
比特率高,音质高,文件体积大
CBR-固定码率
VBR-可变码率,由编码器决定码率,体积会更小
Audio Codec
- Encoder编码器:把PCM压缩
- Decoder解码器:把压缩音频还原为PCM
- Transcoding转码:先解码称PCM,再编码为另一种格式或比特率
容器和编码的不同
文件格式规定了音频的信息和音频内容以何种格式保存
WAV是一种文件格式(容器),WAV可以保存不同编码的音频,例如WAV后缀里可能放的是MP3的音频
编码方式规定了如何编解码
MP3是一种编码方式,同时也是一种文件格式
Lo-Fi(Voice) Codecs
使用场景
- Telephony
- Radio
- VoIP
输入
- 16bit 8kHz mono PCM(128bkps)
- 16bit 16kHz mono PCM(256bkps)
priorities
- low bitrate
- low latency
- low CPU
- accpted quality
Hi-Fi
Users
- music
- film soundtracks
Typical input
- 44.1kHz stereo 16bit
Priorities
- reduces file size
- good audio quality
获得编解码器
单独的编解码可以获得 命令行工具(Lame)/库(libopus)
另外,windows自带有编解码器的API
- ACM(Audio Compression Manager)
- MFT(Media Foundation Transform) newer
- DMO(DIrectX Media Objects)
点MediaPlayer里的帮助-关于-技术支持信息 可以看到电脑上已经装了哪些编解码器。
选择编解码器
权衡比特率与质量
- 最高质量:PCM,FLAC
- 流音乐:MP3,AAC
- 低延迟:Opus,Speex
受众得有相应的解码器
mp3和711广泛使用的原因就是对应的解码器很普遍
授权,版税
有的编码器是需要付费的,所以很多音乐编辑器让客户自己下载编解码器