Qt/C++音视频开发04-保存音频文件(pcm/wav/aac)

本文介绍了Qt/C++音视频开发中如何保存音频到pcm、wav和aac格式。pcm是原始音频数据,wav在pcm基础上添加了文件头,aac是压缩格式。根据需求可以选择不同格式存储,使用ffmpeg处理音频数据,并提供相关代码和功能特点。
摘要由CSDN通过智能技术生成

一、前言

音频的保存相对来说比视频的要简单,具有通用性,不需要经过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格式即可。

公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。

公众号&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值