Uso Mumble (cliente de escritorio) + Murmur (como servidor LAN) + Plumble (cliente Android / iOS). Esto da como resultado la latencia más baja que he logrado (suena casi como un bucle de retorno normal, teóricamente 7 ms de retraso WiFi + 2x 10 ms de retraso de códec = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Fragmentos de README (rev 59091372580f481320224532aeaaea84c9c07848)
Configure los 3 programas para usar la mejor calidad y la latencia mínima. Configure el cliente móvil para que siempre transmita. Copie en mic_over_mumble
cualquier lugar: se usará ~/.mic_over_Mumble
como directorio de configuración. Ejecute mic_over_mumble
, luego conecte su dispositivo móvil al servidor LAN. Luego, configure sus programas para usar el monitor de Mumble como dispositivo de entrada. Por ejemplo, en OBS:
Copia del mic_over_mumble
script (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.
, así que tenía que hacer:sudo modprobe snd-aloop
y luego tuve que ejecutarmicclient-ubuntu-x86
como root (usandosudo
). Y luego funcionó, yay.