2

Я пытался использовать arecord для записи wav-файла, но вместо записи в один файл он создал десятки тысяч файлов (около 60000). Это произошло после того, как я установил пакет alsaequal. Я использовал для записи, используя флаг -f dat с arecord , но после того, как я установил alsaequal, это перестало работать, поэтому я попытался использовать -f cd , когда возникла эта проблема. Я не знаю, является ли alsaequal причиной такого поведения или использования формата cd . Я использую Arch Linux на Raspberry Pi. Я выполнил полную команду: arecord -f cd test.wav и все выведенные файлы назывались test-xxxxx.wav Кто-нибудь знает, что может быть причиной этой проблемы?

Обновление: это, кажется, происходит случайно. Он будет работать нормально для нескольких записей, а затем я перезапускаю или запускаю arecord со слегка отличающимися аргументами, что приведет к возникновению проблемы при каждой записи (независимо от того, какие аргументы я использую). Я не смог найти воспроизводимый шаблон.

1 ответ1

1

Похоже, что когда arecord получает SIGINT, он расстраивается и создает тысячи файлов. (Это произойдет, если вы нажмете Ctrl-C во время записи.) Я не уверен, как это "исправить" (я бы все равно классифицировал это как ошибку), но я предложу два обходных пути:

  1. Не SIGINT, просто SIGKILL (killall -KILL arecord)

  2. Чтобы предотвратить создание тысяч файлов, сделайте следующее:

    arecord - > /tmp/sample.wav 2> /dev/null

    Теперь вместо создания sample-1.wav, sample-2.wav и т.д. Arecord отправляет все свои данные в STDOUT, который вы перенаправляете в файл по вашему выбору. Сообщения печатаются в STDERR, который в этом случае перенаправляется в /dev /null. Компромисс состоит в том, что вместо тысяч создаваемых файлов этот единственный файл будет очень большим - что может или не может рассматриваться как улучшение!

В качестве бонусного подарка; поскольку классический « rm /tmp/sample*.wav », скорее всего, сообщит "слишком много файлов"; Вот как можно навести порядок (отрегулировать соответствующим образом):

find /tmp -type f -name sample*.wav -exec rm {} \+

Только для записи:

$ arecord --version
arecord version 1.0.27 by Jaroslav Kysela <perex@perex.cz>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .