如何在Android上使用SOX的rec脚本?

时间:2013-01-29 08:08:56

标签: android android-ndk ffmpeg sox

我为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"/>

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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