Tôi sử dụng Mumble (máy khách để bàn) + Murmur (làm máy chủ LAN) + Plumble (máy khách Android / iOS). Điều này dẫn đến độ trễ thấp nhất tôi từng đạt được (nghe gần giống như loopback bình thường, theo lý thuyết là độ trễ WiFi 7ms + độ trễ codec 10ms = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Các mảnh của README (rev 59091372580f481320224532aeaaea84c9c07848)
Đặt cả 3 chương trình để sử dụng chất lượng tốt nhất và độ trễ tối thiểu. Đặt máy khách di động để luôn phát trực tuyến. Sao chép mic_over_mumble
bất cứ nơi nào - nó sẽ sử dụng ~/.mic_over_Mumble
như thư mục cấu hình. Chạy mic_over_mumble
, sau đó kết nối thiết bị di động của bạn với máy chủ LAN. Sau đó, thiết lập chương trình của bạn để sử dụng màn hình của Mumble làm thiết bị đầu vào. Ví dụ: trong OBS:
Bản sao của mic_over_mumble
tập lệnh (rev 59091372580f481320224532aeaaea84c9c07848)
#!/bin/bash
set -e
# PAID = PulseAudio ID
# ID = PID / process ID
function main () {
if [ ! -e ~/.mic_over_Mumble ]; then
mkdir ~/.mic_over_Mumble
fi
cd ~/.mic_over_Mumble
rm murmur.ini | true
echo "bonjour=true" >> murmur.ini
echo "bandwidth=130000" >> murmur.ini
if [ ! -e ./initdone ]; then
echo "You will need to configure Mumble client to use the lowest possible latency."
echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
echo "Also, mute your microphone (if you have one) in Mumble."
echo "Then close Mumble."
run_mumble_client_wizard
touch ./initdone
fi
echo "Starting Mumble server (murmurd)..."
MUMBLE_SERVER_ID=`run_mumble_server_bg`
sleep 5
echo "Starting Mumble client..."
MUMBLE_CLIENT_ID=`run_mumble_client_bg`
sleep 5
echo "Fetching PulseAudio configuration..."
MUMBLE_CLIENT_PAID=`get_mumble_client_paid`
echo "Changing PulseAudio configuration..."
SINK_MODULE_PAID=`add_sink`
sleep 3
SINK_PAID=`get_sink_paid`
pacmd move-sink-input $MUMBLE_CLIENT_PAID $SINK_PAID
echo "Done. Please use pavucontrol to ensure everything works."
echo "Press Return to shut down..."
read -n1 -s
echo "Shutting down..."
echo "Stopping Mumble client..."
kill -KILL $MUMBLE_CLIENT_ID | true
sleep 2
echo "Stopping Mumble server..."
kill -KILL $MUMBLE_SERVER_ID | true
echo "Restoring PulseAudio configuration..."
pactl unload-module $SINK_MODULE_PAID
}
function run_mumble_client_wizard () {
mumble >/dev/null 2&>1
}
function run_mumble_client_bg () {
MUMBLE_URL="mumble://localhost"
mumble $MUMBLE_URL >/dev/null 2&>1 &
echo $!
}
function run_mumble_server_bg () {
murmurd -ini ./murmur.ini &
echo $!
}
function get_mumble_client_paid () {
pacmd list-sink-inputs |
egrep "index: |application.name = " |
cut_every_second_newline |
egrep Mumble |
print_second_column
}
function add_sink () {
pactl load-module \
module-null-sink \
sink_name="Loopback_of_Mumble" \
sink_properties=device.description="Loopback_of_Mumble"
}
function get_sink_paid () {
pacmd list-sinks |
egrep "index: |name: " |
cut_every_second_newline |
egrep Loopback |
print_second_column
}
# /server//a/375098/449626
function cut_every_second_newline () {
awk 'ORS=NR%2?" ":"\n"'
}
function print_second_column () {
awk '{print $2}'
}
main
Please first load ALSA snd-aloop.
, vì vậy tôi cần phải làm:sudo modprobe snd-aloop
và sau đó tôi phải chạymicclient-ubuntu-x86
root (sử dụngsudo
). Và sau đó nó hoạt động, yay.