-SOLVED Проблема с модулем-конвейером-модулем нагрузки pactl - PullRequest
0 голосов
/ 11 июня 2019

Итак, я нашел пример, который показывает, как передать волновой файл в качестве входа микрофона, используя «модуль-труба-модуль-труба-пакет».Я также нашел, как заставить это не добавлять аудио бесконечно.Вот что я закончил:

#!/bin/bash

# This script will create a virtual microphone for PulseAudio to use and set it as the default device.

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

# Set the virtmic as the default source device.
echo "Set the virtual microphone as the default device."
pactl set-default-source virtmic

# Create a file that will set the default source device to virtmic for all 
PulseAudio client applications.
echo "default-source = virtmic" > ~/.config/pulse/client.conf

# 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
    ffmpeg -re -i test.ogg -f s16le -ar 16000 -ac 1 - > ~/audioFiles/virtmic
done

Проблема в том, что когда я пытаюсь запустить его, меня засыпает это:

/home/user/MakeVirMic.sh: line 20: /home/user/audioFiles/virtmic: No such file or directory

Итак, после проверки орфографии иВ поисках ~ / audioFiles / virtmic (его там не было) я предположил, что не удалось создать виртуальный, поэтому решил создать его вручную.Вот что я получил:

user@thisPC:~$ pactl load-module module-pipe-source source_name=virtmic file = ~/audioFiles/virtmic format=s16le rate=16000 channels=1
Failure: Module initialization failed

Я думаю, что это может быть потому, что модуль "модуль-труба-источник" не установлен (РЕДАКТИРОВАТЬ: он установлен, и он может быть загружен только с

pactl load-module module-pipe-source

и проблема в том, что он не может разобрать аргументы), но, честно говоря, я не знаю.Могу ли я что-нибудь сделать?

РЕШЕНИЕ:

#!/bin/bash

# This script will create a virtual microphone for PulseAudio to use and set it as the default device.

# Load the "module-pipe-source" module to read audio data from a FIFO special file.
rm /home/pi/audiofiles/virtmic
pulseaudio -k
echo "Creating virtual microphone."
pactl load-module module-pipe-source source_name=virtmic 
file=~/audiofiles/virtmic format=s16le rate=44100 channels=1

# Set the virtmic as the default source device.
echo "Set the virtual microphone as the default device."
pactl set-default-source virtmic

# Create a file that will set the default source device to virtmic for all 
# pulseaudio client applications.
echo "default-source = virtmic" > ~/.config/pulse/client.conf

# 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."
ffmpeg -re -i ~/test.ogg -f s16le -ar 44100 -ac 1 - > ~/audioFiles/virtmic

Да, это так просто.

...