Как заставить скрипт SOX работать на Android?

Я создал sox для Android и использую сгенерированные двоичные файлы, т.е. sox, rec, play and soxi, сгенерированные непосредственно в моем приложении, установив их как двоичные файлы в моем приложении.

Я могу вызывать команды, используя sox напрямую, однако у меня проблема с вызовом команды rec.

Я использовал следующую команду, rec -r 8000 -c 2 output.wav Но не могу сказать, что sox is not found или sox 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 и т. д., но это все равно не работает.

Итак, мой вопрос: как мне успешно вызвать команду rec в системе Android, кто-нибудь пробовал это раньше?


person Arif Nadeem    schedule 29.01.2013    source источник
comment
Не могли бы вы поделиться тем, как вы создали двоичные файлы для Android, я безуспешно пытаюсь сделать то же самое. Спасибо   -  person Inon Stelman    schedule 29.06.2013
comment
@InonStelman и Ариф Надим, можете ли вы поделиться со мной процессом получения двоичных файлов sox в Android?   -  person AQU    schedule 27.02.2018


Ответы (1)


rec, play, soxi — это символические ссылки на двоичный файл sox. (В качестве альтернативы, на платформах, которые не поддерживают символические ссылки, все они являются идентичными копиями одного и того же двоичного файла.) SoX имеет различное поведение по умолчанию в зависимости от имени, под которым он вызывается.

Кажется, что-то не так с символическими ссылками на вашем устройстве. Может, они указывают неверный путь? Попробуйте, если вы можете исправить это.

Другой вариант — использовать двоичный файл sox для всех задач. rec -r 8000 -c 2 output.wav на самом деле то же самое, что и sox -d -r 8000 -c 2 output.wav (-d — аудиоустройство по умолчанию). Аналогично для воспроизведения play somefile совпадает с sox somefile -d.

person chirlu    schedule 01.05.2013
comment
Я думаю, что, возможно, файлы rec, play и soxi, являющиеся файлами sh, можно запускать как сценарии. - person Arif Nadeem; 02.05.2013
comment
Там действительно нет сценария оболочки. Попробуйте ls -l /usr/bin/rec, чтобы увидеть, что это просто символическая ссылка. Если это сценарии оболочки в вашей установке, это модифицированная версия. - person chirlu; 02.05.2013