如何让 SOX 的 rec 脚本在 Android 上运行



我为Android构建了 sox,我正在使用生成的二进制文件,即 sox, rec, play and soxi直接在我的应用程序中生成,方法是将它们作为二进制文件安装在我的应用程序中。

我能够直接使用 sox 调用命令,但是我在调用rec命令时遇到问题。

我使用了以下命令,rec -r 8000 -c 2 output.wav但它没有说sox is not foundsox is expected but is not found.

当我在命令行中使用它时,上面的 rec 命令在 Ubuntu 中完美运行

请注意,我能够成功使用与二进制sox相关的操作,但我无法使用与rec二进制相关的命令。

最初我认为问题可能是因为Android强加的权限,所以我将这些权限包含在manifest.xml但无济于事。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

我做了一些研究并得到了这个链接,它在"使用 Sox 播放和录制"一节中说,可能有一些 Linux 系统不接受rec命令。

我听从了他的建议,并在我的命令后附加了padsp等,但它仍然不起作用。

所以我的问题是如何在 Android 系统上成功调用 rec 命令,以前有人尝试过吗?

recplaysoxi是指向sox二进制文件的符号链接。(或者,在不支持符号链接的平台上,它们都是同一二进制文件的相同副本。SoX 具有不同的默认行为,具体取决于调用它的名称。

您设备上的符号链接似乎有问题。也许他们指向了错误的道路?尝试是否可以解决此问题。

另一种选择是对所有任务使用 sox 二进制文件。 rec -r 8000 -c 2 output.wav实际上与sox -d -r 8000 -c 2 output.wav相同(-d是默认音频设备)。对于播放,同样,play somefilesox somefile -d .

最新更新