语音文件aac->raw->wav格式转换方法

标题中的三种音频格式介绍:
1、aac
是一种压缩音频的格式,经常由前端app生成,由于后台解码时需要用wav,所以需要将压缩的aac格式解压(不过解压会有损耗)

2、raw
相当于录制的音频源码
pcm:脉冲编码调制,作为对音频源码的编码方式
直接存储采样的数据,不经过压缩
pcm是声卡直接支持的数据格式,如果要让声卡播放其它压缩类型的声音数据,就要先把y压缩数据解压成pcm格式。

区别:
raw简单形容就是本设备不解码直接输出到下一个设备,让下一个设备解码。
PCM就是本机解码完成后输出给下一个设备。

3、wav
是微软封装的一种格式,以RIFF(资源交互文件格式)来组织内部结构,它可以由压缩音频或pcm封装而成,最常见的就是pcm加文件头封装,文件头包括文件格式、采样率、采样位数等信息。

一、aac到raw的解压操作
音频格式转换,用到了ffmpeg工具
首先Linux下安装ffmpeg,如果网速慢可以指定国内的源

sudo apt-get install ffmpeg

然后就可以直接在命令行使用ffmpeg工具

如果需要在python程序中使用ffmpeg,可以用subprocess开一个子进程调用ffmpeg命令
即:

import subprocess
subprocess.call(order,shell=True)

其中order是命令的字符串

具体的ffmpeg命令:

 ffmpeg -i  [输入acc文件] -f s16le -acodec pcm_s16le -ar 16000 -ac 1 [输出raw文件]

命令格式解析:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
主要参数:

-i 设定输入流
-f 设定输出格式
-ss 开始时间

-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频

s16le是指输出的pcm用有符号 16 位小端,即采样位数是16位
会生成解压后的raw音频文件

二、raw加文件头转换为wav格式
python下的wave库可以实现raw到wav的格式转换,需要指定的内容有:采样率、通道数、采样宽度(单位字节)
例如:

import wave

pcmfile = open(inf_str, 'rb')
pcmdata = pcmfile.read()
wavfile = wave.open(outf_str, 'wb')
wavfile.setframerate(sampleRate)
wavfile.setsampwidth(2)    #16位采样即为2字节
wavfile.setnchannels(1)
wavfile.writeframes(pcmdata)
wavfile.close()

就可以输出wav文件啦

对不起,我之前的回答有误。麦克风和摄像头采集语音和视频画面到在电视墙上播放的过程与声音采集 -> 数字化处理 -> 视频采集 -> 数字化处理 -> 视音频同步 -> 数据编码 -> 文件格式封装 -> 媒体文件生成的过程类似,但有些区别。 1. 麦克风和摄像头采集语音和视频画面:麦克风和摄像头采集到的语音和视频画面会被转换成模拟信号,然后经过模拟信号放大和处理后,转换成数字信号。 2. 数字化处理:数字信号经过采样、量化和编码等数字化处理,转换成计算机可处理的数字信号。 3. 视音频同步:将数字化后的语音和视频画面进行同步,确保声音和画面的时间轴一致。 4. 数据编码:将数字化后的声音和视频画面进行编码,将其转换为可以被计算机识别和处理的格式,如H.264、AAC等。 5. 文件格式封装:将编码后的声音和视频画面数据按照特定的格式进行封装,如MP4、AVI等格式,生成最终的媒体文件。 6. 信号传输:采集到的数字信号通过信号传输设备,如放大器、分配器等设备进行信号放大和分配,并通过数据线连接到电视墙。 7. 信号处理:传输到电视墙的信号需要进行处理,如降噪、增强、格式转换等处理,确保信号的质量。 8. 信号切换:电视墙可以通过控制面板对采集到的语音和视频画面进行切换和调度,根据需要将不同的信号输出到屏幕上。 9. 电视墙显示:电视墙将处理和切换后的信号转化成画面并在屏幕上显示。 整个过程可以用以下流程图表示: 麦克风和摄像头采集语音和视频画面 -> 模拟信号放大和处理 -> 数字化处理 -> 视音频同步 -> 数据编码 -> 文件格式封装 -> 信号传输 -> 信号处理 -> 信号切换 -> 电视墙显示
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值