Encoding sox无法播放a-law编码的文件

Encoding sox无法播放a-law编码的文件,encoding,sox,Encoding,Sox,我在LinuxMint14中,试图使用sox和playfoo.sph 并得到以下错误: 播放失败格式:无法打开输入文件'foo.sph':sph:不支持的编码'alaw' sox不支持alaw编码吗?如何播放此文件?请注意,它可以成功地播放ulaw。谢谢 以下是相关的SoX源代码(来自src/sphere.c,从第74行开始): 如您所见,格式处理程序只知道µ-law和PCM编码,其他什么都不知道。正如你所说,SoX确实有A定律的解码例程;因此,添加以下行就足够了: else if (!strc

我在LinuxMint14中,试图使用sox和
playfoo.sph
并得到以下错误:
播放失败格式:无法打开输入文件'foo.sph':sph:不支持的编码'alaw'


sox不支持alaw编码吗?如何播放此文件?请注意,它可以成功地播放ulaw。谢谢

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

如您所见,格式处理程序只知道µ-law和PCM编码,其他什么都不知道。正如你所说,SoX确实有A定律的解码例程;因此,添加以下行就足够了:

else if (!strcasecmp(fldsval, "alaw"))
  encoding = SOX_ENCODING_ALAW;
显然,这只会帮助您,如果您可以使用此添加从源代码中自己编译SoX


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

else if (!strcasecmp(fldsval, "alaw"))
  encoding = SOX_ENCODING_ALAW;