标题:Qt音视频开发04-保存音频文件(pcm/wav/aac)
作者:liudianwu
日期:2022-12-04 15:22
内容:
## 一、前言
音频的保存相对来说比视频的要简单,具有通用性,不需要经过ffmpeg的编码,ffmpeg解码出来后一般会转换成pcm原始的数据用来播放,所以对数据直接写文件即可,但是这种格式是无法用播放器直接播放的,因为采样率、通道等参数未知,除非手动指定,所以就多出来一个wav格式,这个格式就是在pcm格式前面加上44字节的文件头,所以wav格式的音频文件永远比pcm的文件大44字节,简单来说pcm加上wav头文件就变成了wav。所以这些就好办了,在开始存储的时候先写入这个文件头就行,后面一直插入pcm音频数据即可。
由于wav文件体积很大,所以需要一个压缩的播放器可以直接播放的,这样就需要用aac格式存储。ffmpeg收到后还没有解码出来在没有转换前默认的数据一般以aac格式居多,也有部分的是mp3之类的,所以如果要存储为aac格式,直接存储最原始的packet的数据即可,这个数据是aac格式的压缩过的音频数据,每个数据包前面插入ADTS头即可。可能你会有疑问每个包都插入了头部字节,那不是文件体积更大,其实不是的,毕竟aac格式是一种声音数据的文件压缩格式,有着极高的压缩比,这点头部字节数据简直是毛毛雨。
终上所述,三种格式的音频数据可以满足所有的情况,如果检测到音频解码器用的aac则存储aac格式,非aac则全部存储成wav格式,如果不需要播放器支持就存储成pcm格式即可。
## 二、效果图
## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_demo/bin_linux_video。
## 四、相关代码
## 五、功能特点
### 5.1 基础功能
1. 支持各种音频视频文件格式,比如mp3、wav、mp4、asf、rm、rmvb、mkv等。
2. 支持本地摄像头设备,可指定分辨率、帧率。
3. 支持各种视频流格式,比如rtp、rtsp、rtmp、http等。
4. 本地音视频文件和网络音视频文件,自动识别文件长度、播放进度、音量大小、 ..
#1 [沉默小ai 12-04 23:35]
这一块属实被大佬玩明白了