我正在使用 Linux、Ubuntu,并且pulse audio
想要将音频效果应用到音频源(例如麦克风)并将其通过管道传输到新的接收器,该接收器可以由 arecord 或其他应用程序使用并通常使用,但我得到了有关主要内容的反馈水槽(非隔离)。
VirtualSink
我创建了一个名为使用模块的虚拟接收器,模块空接收器通过:
pactl load-module module-null-sink sink_name=VirtualSink sink_properties=device.description=Virtual_Sink
我获取所有源的列表,其中包括我的麦克风源pactl list sources short
,然后运行 ffmpeg 以使用麦克风源应用回声并将其通过以下方式传递到 VirtualSink 的监视器:
ffmpeg -f pulse -i <mic-source> -af "aecho=0.8:0.9:1000:0.3" -f pulse "VirtualSink.monitor"
虚拟接收器确实创建了,可以被arecord/Skype等应用程序看到,流通过,但存在问题:
- 可以通过扬声器/耳机听到来自麦克风的音频(定向到应用程序和默认接收器输出)
- 延迟几秒后,扬声器/耳机会听到声音(某种反馈)
我查看pavucontrol
并尝试了静音和改变控制,但没有什么区别。它只是有时使流静音,而没有解决这两个问题中的任何一个。问题可能是 ffmpeg 自动流式传输到默认接收器,还是操作系统也将任何新接收器定向到通用总体接收器?是否有缺少的配置?
如何创建接收器,将音频从源流式传输到接收器而不获得反馈?