"There is not a valid medialib id!"与解析wav文件格式

使用xxd命令将文件转换为16进制文本。然后观察header字节格式。

要求音频格式14H: 0001即PCM   此时采样率18H: AA4C即44100或22050或11025或8000这几个,不能为16000.

音频格式也可为0X55 mp3,但这里未测试过。


header info:

AVE文件格式说明表  偏移地址 字节数 数据类型 内 容  
文件头
00H 4 char "RIFF"标志
04H 4 long int 文件长度
08H 4 char "WAVE"标志
0CH 4 char "fmt"标志
10H 4   过渡字节(不定)
14H 2 int 格式类别(10H为PCM形式的声音数据)
16H 2 int 通道数,单声道为1,双声道为2
18H 2 int 采样率(每秒样本数),表示每个通道的播放速度, (Hz) sample frequency
1CH 4 long int 波形音频数据传送速率,其值为通道数×每秒样本数×每样本的数据位数(bit)/8。播放软件利用此值可以估计缓冲区的大小。
20H 2 int 数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。
22H 2   每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。


对于14H,两字节的格式类别:

在xmms2/src/plugin/wave/wave.c中,只认识0x0001(PCM)和0x0055(MP3),其他类型不识别。会产生"There is not a valid medialib id!"报错。

http://blog.sina.com.cn/s/blog_520a69ac0100otpp.html

http://blog.youkuaiyun.com/poechant/article/details/7436710

Format Code

PreProcessor Symbol

Data

0x0001

WAVE_FORMAT_PCM

PCM

0x0003

WAVE_FORMAT_IEEE_FLOAT

IEEE float

0x0006

WAVE_FORMAT_ALAW

8-bit ITU-T G.711 A-law

0x0007

WAVE_FORMAT_MULAW

8-bit ITU-T G.711 µ-law

0xFFFE

WAVE_FORMAT_EXTENSIBLE

Determined by SubFormat


xxd  file.wav > file.bin

然后比对wav文件格式协议,确保你明白了你对照bin文件明白了wav文件格式的意义
剩下的就是open出来一个个分析出来print了
如果是mp3文件是有现成的开源的project,不过估计wav的可能也有code,sf上找找看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值