首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libsox转换wav文件采样率等。

libsox转换wav文件采样率等。
EN

Stack Overflow用户
提问于 2009-02-05 00:45:02
回答 2查看 2.5K关注 0票数 1

编辑:我想使用libsox程序转换一个wav文件的样本率,音频格式,频道等。

在libsox手册页面中,有很多函数我可以使用,但是我对该做什么一无所知。有人能告诉我怎么做吗?

帮助?

有人能解释一下吗?

代码语言:javascript
复制
   The  function  sox_write  writes  len samples from buf using the format
   handler specified by ft. Data in buf must be 32-bit signed samples  and
   will  be converted during the write process. The value of len is speci-
   fied in total samples. If its value is not evenly divisable by the num-
   ber of channels, undefined behavior will occur.
EN

回答 2

Stack Overflow用户

发布于 2009-10-18 23:28:33

我建议使用libsndfile和libsamplerate的组合。

http://www.mega-nerd.com/SRC

SRC提供了一组小的转换器,以使质量可以与计算成本进行权衡。在给定的输入和输出采样率下,电流最佳转换器提供的信噪比为145 DC,通带范围为-3dB,从理论上的最佳带宽的96%扩展到理论上的最佳带宽。

http://www.mega-nerd.com/libsndfile/

  • 具有读写大量文件格式的能力。
  • 是一个简单、优雅和易于使用的应用程序,可编程Unix、Win32、MacOS等。
  • 实时格式转换,包括endian-ness交换,当从包含整数scaling.
  • Optional的文件中读取浮点数据以在读/写模式下打开文件时,类型转换和位宽data.
  • Ability规范化。
  • 能够在不关闭文件的情况下写入文件头(仅在为写打开的文件或read/write).
  • Ability打开的文件中查询所有支持的格式,并检索描述每种格式的文本字符串。

)

票数 1
EN

Stack Overflow用户

发布于 2009-02-05 01:29:58

好吧,我猜你的问题和最后一句有关。如果您有一个交错缓冲区,则缓冲区中的样本数必须根据通道数进行可除,因为这是您将要写入的每个通道样本的数量。例如,假设您有L和R通道;缓冲区上的数据如下所示:

代码语言:javascript
复制
[0] 1st sample - L
[1] 1st sample - R
[2] 2nd sample - L
[3] 2nd sample - R
...
[n-1] n/2-th sample - L
[n] n-th sample - R

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/514061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档