Линукс аудио на виртуальный микрофон с помощью pactl - PullRequest
0 голосов
/ 02 июля 2018

Я нашел пример, который показывает, как передать волновой файл в качестве входа микрофона, используя "модуль-труба-модуль-трубки pactl". Проблема этого примера заключается в том, что он использует бесконечный цикл while и не останавливается, если аудиофайл успешно пропускается через микрофон один раз. Если кто-то может исправить этот пример, это было бы здорово. Я слышал о: sudo modprobe snd-dummy Но не знаю, как его использовать. документации не хватает.

Пример выглядит следующим образом:

# Load the "module-pipe-source" module to read audio data from a FIFO special file.
pactl load-module module-pipe-source source_name=virtmic 
file=/home/cammy/audioFiles/virtmic format=s16le rate=16000 channels=1

# Set the virtmic as the default source device.
pactl set-default-source virtmic

# Write the audio file to the named pipe virtmic. This will block until the named pipe is read.
echo "Writing audio file to virtual microphone."
while true; do
    cat good_morning_vietnam.wav > /home/cammy/audioFiles/virtmic
done

Результат этого, как вы можете себе представить, заключается в том, что аудиоклип постоянно циклически повторяется. Я хочу, чтобы это играли только один раз, а не много раз. Если я попробую строку:

cat good_morning_vietnam.wav > /home/cammy/audioFiles/virtmic

вне цикла while. Похоже, что только маленький фрагмент аудиофайла достигает микрофона, а не весь клип. Я понятия не имею, почему это так. Не уверен, что, как микрофон регулярно очищается или что-то в этом роде.

1 Ответ

0 голосов
/ 22 ноября 2018

Я нашел ответ в виде комментария на другой похожий вопрос ( Аудио-файл Linux pipe к входу микрофона ):

ffmpeg -re -i $AUDIO_FILE -f s16le -ar 16000 -ac 1 - > $VIRTUAL_MIC
...