Я написал пакетную программу в командной строке Windows, чтобы взять стереофайл wav и разделить правый и левый канал на отдельные файлы FLAC с помощью аудиопрограммы sox v.14.4.0. Вот так..
for /r %%n in (*.wav) do (
C:\sox\sox.exe %%n -c 1 %%n.left.flac remix 1
C:\sox\sox.exe %%n -c 2 %%n.right.flac remix 2)
Однако это занимает немного больше времени, чем хотелось бы. Я изучил это подробнее, и оказалось, что я могу использовать SOX_OPTS и параметр --multi-thread вместе с --buffer для одновременного выполнения двух операций sox.
В документации Sox указано следующее:
Переменная среды SOX_OPTS может использоваться для предоставления альтернативных значений по умолчанию для глобальных параметров SoX. Например:
SOX_OPTS="−−buffer 20000 −−play−rate−arg −hs −−temp /mnt/temp"
Обратите внимание, что способ установки переменных среды зависит от системы. Вот несколько примеров: MS-DOS/MS-Windows:
set SOX_OPTS=−V −−no-clobber −−buffer BYTES, −−input−buffer BYTES
Установите размер в байтах буферов, используемых для обработки звука (по умолчанию 8192).
--buffer применяется к обработке ввода, эффектов и вывода;
--input-buffer применяется только к обработке ввода (для которой он переопределяет --buffer, если заданы оба).
Имейте в виду, что большие значения для --buffer приведут к тому, что SoX станет медленно реагировать на запросы о прекращении или пропуске текущего входного файла.
Два вопроса.
- Можно ли разделить 1 входной файл на 2 выходных файла одновременно, используя --multi-thread, как описано выше, или другим способом?
- Если да, то как? (примечание: мне не удалось выяснить правильный синтаксис, чтобы заставить SOX_OPTS из приведенной выше документации работать самостоятельно, не говоря уже о пакетном файле)
Кроме того: я нашел некоторые другие вопросы о стеке, похожие на этот, но всегда использующие java, php, linux и т. д. К сожалению, я ничего не знаю об этих программах. Пожалуйста, с пониманием отнеситесь к моему невежеству в программировании.