NAudio中AudioFileReader的一个小坑

1 篇文章 0 订阅

近日在使用NAudio开源音频库做音频文件分析,业务流程是读取音频文件,然后将音频样本数据推送到第三方,做的过程中遇到一个坑,在此记录。

PCM音频格式的主要数据包括:

名称

偏移地址

字节数

端序

内容

当前值

AudioFormat

0x08

2Byte

小端

音频格式

1PCM音频数据的值为1。则当前没有Fact chunk

NumChannels

0x0A

2Byte

小端

声道数

2,表示音频数据的声道数,1:单声道,2:双声道。

SampleRate

0x0C

4Byte

小端

采样率

44100,每秒采样数量

ByteRate

0x10

4Byte

小端

每秒数据字节数

176400SampleRate * NumChannels * BitsPerSample / 8

BlockAlign

0x14

2Byte

小端

数据块对齐,每个采样所需的字节数

4NumChannels * BitsPerSample / 8

BitsPerSample

0x16

2Byte

小端

每个采样保存的位数,

采样深度16bit88bit1616bit3232bit

第三方接口需要同时推送NumChannels,SampleRate,ByteRate,BitsPerSample等数据,我在推送后,发觉声音在对端不正常。

我使用了NAudio提供的通用读取程序 AudioFileReader,他可以读wav、mp3等多种格式的音频,以此作为解析源。

在仔细排查之后,发现我的文件BitsPerSample原本是16bit,但在提供程序返回的数据中变成了32bit,导致对端识别声音数据失败,播放异常。想来应该是NAudioWie了最大程度兼容不同格式执行了数据的自动转换。

得出结论,AudioFileReader返回的音频格式不完全是源音频的格式,如果要获取源音频的格式数据,使用Mp3FileReader或者WavFileReader,或者自己用文件流读取源文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值