Audio 在SoX中将.aiff转换为.wav
我在一个目录中有多个.aiff格式的文件,我想使用SoX将它们转换为.wav。我已经在网站上试用了该代码,如下所示Audio 在SoX中将.aiff转换为.wav,audio,sox,Audio,Sox,我在一个目录中有多个.aiff格式的文件,我想使用SoX将它们转换为.wav。我已经在网站上试用了该代码,如下所示 theFiles = `/Users/me/RainbowAiff/*.aiff`; for eachFile in $theFiles; do v1=${eachFile%*.aiff}; oldFile="$v1.aiff"; newFile = "$v1.wav"; echo oldFile $oldFile; echo newFile $newFile; sox $o
theFiles = `/Users/me/RainbowAiff/*.aiff`;
for eachFile in $theFiles; do v1=${eachFile%*.aiff};
oldFile="$v1.aiff"; newFile = "$v1.wav";
echo oldFile $oldFile; echo newFile $newFile; sox $oldFile $newFile; done
for i in `/Users/me/RainbowAiff/ *.aiff`; do echo -e "$i"; sox $i $i.wav; echo -e "$i.wav"; done;
和网站,如下所示
theFiles = `/Users/me/RainbowAiff/*.aiff`;
for eachFile in $theFiles; do v1=${eachFile%*.aiff};
oldFile="$v1.aiff"; newFile = "$v1.wav";
echo oldFile $oldFile; echo newFile $newFile; sox $oldFile $newFile; done
for i in `/Users/me/RainbowAiff/ *.aiff`; do echo -e "$i"; sox $i $i.wav; echo -e "$i.wav"; done;
但在这两种情况下,我都会收到一条错误消息,上面写着“无法执行二进制文件”。此错误的来源可能是什么?不兼容的二进制文件导致此错误 如果
文件sox
和uname-a
命令的输出表明二进制文件与您的操作系统(即x86与ARM)之间存在差异,则需要为sox找到正确的二进制文件。尽管自2015年以来没有SoX版本,但请检查并查找与您的系统兼容的版本
问题还与sox的文件属性有关。为了给它可执行属性,只需转到sox所在的文件夹并运行
chmod+xsox
命令(首先需要root访问权限) 您链接到的两个代码片段在我看来有点粗略,它们使用了ls
和echo
echo-e
实际上可能是导致语法错误的原因,因为OSX(BSD)echo
没有-e
选项。(在终端中键入man echo
以查看)
我根据find
及其-exec
选项自由地组装了一个替代的一行程序
find -E . -maxdepth 1 -iregex '.*\.(aif|aiff)' -exec bash -c '$0 "$1" "${1%.*}.wav"' sox {} \;
要解释它:
:可以查找任何内容查找
:启用*-E
:在当前工作目录中启动。可替换为相对路径或绝对路径
:仅在第一个目录层中查找。将1替换为2以同时查找文件夹中的文件,将3替换为同时查找文件夹中文件夹中的文件…-maxdepth 1
删除此选项将启用完全递归(一直向下查找文件)
:使用不区分大小写的正则表达式-iregex
:匹配以任何长度(.*(aif | aiff)
)的任何(*
)开头的任何内容,后跟句点(
)和字符串“aif”或“aiff”(或“aif”、“aiff”、“aiff”…)(.
)(aif | aiff)
:在非交互式bash shell中执行以下操作-execbash-c
:这是要在bash shell中运行的调用<代码>$0将扩展到<代码>“$1”将扩展到第一个(在本例中仅此)参数,在空格处用双引号括起来“$0”$1”“${1%.*}.wav”
也将扩展到第一个参数,但在结尾标记“.wav”之前,它将扩展到第一个参数。有效地替换文件扩展名“${1%.*}.wav”
:这些是传递给shell调用的参数。第一个(sox{}
)是我们想要使用的程序,在调用中称为sox
。第二个($0
)是任何{}
找到的文件,在shell调用中称为find
$1
文件sox
的输出是Mach-O 64位可执行x86_64
,uname-a
的输出是14.5.0达尔文内核版本14.5.0:Tue Apr 11 16:12:42 PDT 2017;root:xnu-2782.50.9.2.3~1/RELEASE_X86_64 X86_64
这些是否不兼容?(我不熟悉二进制文件)。谢谢你的帮助。我不是Mac用户,不幸的是,我对它不熟悉。不过,它们似乎都是64位。您是否可以尝试使用su
命令切换到root用户并转到sox所在的目录,然后运行chmod+x sox
?然后再次尝试运行它,最好是使用root权限使用sudosox
。另外,人们在Mac中似乎也有类似的问题,所以您可能想尝试安装一个较旧版本的sox,它可能是兼容的:这是可行的,但现在我收到了一个语法错误。我想这应该是一个单独的问题。非常感谢。不客气。请问:chmod+xsox
或安装旧版本是否有助于运行它?我问的原因是我可以编辑我的答案,使其涵盖所有相关步骤。chmod+x sox
似乎是有效的,或者至少给我一个不同的错误消息。