首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sox不能使用a-law编码播放文件。

sox不能使用a-law编码播放文件。
EN

Stack Overflow用户
提问于 2013-08-11 07:40:10
回答 1查看 1.9K关注 0票数 2

我在linux 14中,试图使用sox与.sph一起播放一个play foo.sph文件,得到了以下错误:play FAIL formats: can't open input file 'foo.sph': sph: unsupported coding 'alaw'

sox不支持alaw编码吗?我能做些什么来播放这个文件?请注意,它可以成功地玩ulaw。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-08-12 09:11:11

下面是相关的SoX源代码(来自src/sphere.c,从第74行开始):

代码语言:javascript
复制
if (!strcasecmp(fldsval, "ulaw") || !strcasecmp(fldsval, "mu-law"))
  encoding = SOX_ENCODING_ULAW;
else if (!strcasecmp(fldsval, "pcm"))
  encoding = SOX_ENCODING_SIGN2;
else {
  lsx_fail_errno(ft, SOX_EFMT, "sph: unsupported coding `%s'", fldsval);
  /* ... */
}

正如您所看到的,格式处理程序只知道-law和PCM编码,而不是其他的。正如您所说,SoX确实有A-law的解码例程;因此,添加以下几行就足够了:

代码语言:javascript
复制
else if (!strcasecmp(fldsval, "alaw"))
  encoding = SOX_ENCODING_ALAW;

显然,这只会对您有帮助,前提是您可以自己从源代码中编译SoX。

一种可能更简单的方法是使用libsndfile驱动程序,它应该支持Sphere文件中的A-law编码:play -t sndfile foo.sph

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

https://stackoverflow.com/questions/18169817

复制
相关文章

相似问题

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