-解决了pactl加载模块模块-管道源的问题

时间:2019-06-11 20:53:23

标签: bash sh pulseaudio

因此,我找到了一个示例,展示了如何通过使用“ 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.
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

我认为可能是因为未安装模块“ module-pipe-source”(编辑:已安装并且可以仅使用

进行加载
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

是的,就是这么简单。

0 个答案:

没有答案