¿Hay alguna manera de transmitir la salida en vivo de la tarjeta de sonido desde nuestro escritorio 12.04.1 LTS amd64 a un dispositivo externo compatible con DLNA en nuestra red? Seleccionar contenido multimedia en directorios compartidos usando Rygel, miniDLNA y uShare siempre está bien, pero hasta ahora no hemos podido transmitir una transmisión de audio en vivo a un cliente a través de DLNA.
Pulseaudio afirma tener un servidor de medios DLNA / UPnP que, junto con Rygel, se supone que debe hacer precisamente esto. Pero no pudimos hacerlo funcionar.
Seguimos los pasos descritos en live.gnome.org , esta respuesta aquí, y también en otra guía similar .
En 12.04 LTS podemos seleccionar el dispositivo de audio local, o nuestra transmisión de lanzamiento GST en el cliente DLNA, pero Rygel muestra el siguiente mensaje y el cliente indica que llegó al final de la lista de reproducción:
(rygel:7380): Rygel-WARNING **: rygel-http-request.vala:97: Invalid seek request
No había forma de escuchar transmisiones de audio en vivo en el cliente.
Solo después de una actualización de distribución a 14.04 LTS pudimos seleccionar una transmisión en vivo en nuestros renderizadores DLNA de la configuración bien descrita en la respuesta a continuación . Aún así, necesitábamos seleccionar una secuencia establecida después de que comenzamos rygel y no pudimos enviar una nueva secuencia a nuestros dispositivos UPnP. Los metadatos de audio no se transmitieron.
¿Hay alguna otra alternativa para enviar el audio de nuestra tarjeta de sonido como transmisión en vivo a un cliente DLNA?
Respuestas:
Pulseaudio-DLNA
Creé un pequeño servidor que descubre todos los renderizadores upnp en su red y los agrega como sumideros a pulseaudio. Para que pueda controlar cada aplicación a través de pavucontrol para jugar en sus dispositivos upnp.
Ese es el tipo de comodidad que siempre quise al tratar con dispositivos upnp en Linux.
La aplicación se puede instalar desde la fuente o el paquete DEB descargable desde git , o después de haber agregado el ppa oficial del proyecto : qos / pulseaudio-dlna a nuestras fuentes con:
Luego ejecutamos pulseaudio-dlna desde la línea de comando con las siguientes opciones:
Consulte también pulseaudio-dlna "Acerca de" para obtener más información.
Cuando había un renderizador DLNA presente, podemos seleccionarlo del menú de sonido como un sumidero de salida:
fuente
python-requests
como dependencia y podríamos seleccionar el renderizador de los controles de audio predeterminados; no es necesario instalar pavucontrol.¡Pavucontrol es el elemento que falta en este rompecabezas! También había configurado todo correctamente y el dispositivo externo (TV LG) mostraba que el sonido se estaba reproduciendo pero no escuché ningún sonido. Hoy instalé pavucontrol y cuando lo abrí encontré la opción de canalizar el sonido a través del servidor DLNA. La opción DLNA solo se muestra cuando hay salida de sonido de un reproductor a pulseaudio.
fuente
Invalid seek request
de Rygel. Los directorios de medios están ahí, pero mi flujo GST siempre es EOF.Lo siento, no puedo ayudarte con Rygel, pero puede haber una alternativa que te funcione.
El principio es obtener un programa para grabar la secuencia en un archivo de audio, luego iniciar miniDLNA con una configuración personalizada que apunta al directorio en el que se encuentra la secuencia.
Ejemplo: supongamos que estamos trabajando en ~ / stream /. Crear ~ / stream / minidlna.conf
Luego guarde la secuencia en un archivo de audio en ese directorio. Buscar en Google el "audio de la tarjeta de sonido de grabación FFmpeg" produjo este comando
pero no tuve mucha suerte con eso. Otra opción es vlc si tienes una GUI disponible y esto no funciona.
Luego, inicie miniDLNA en otra ventana de terminal:
Se debe localizar OutputStream.flac y luego sea accesible desde el dispositivo de red.
Con suerte, si aún no lo ha resuelto, le dará algunas ideas.
fuente
Una idea que tuve que transmitir "lo que escucho" a un renderizador DLNA (como WDTV) fue hacer un servidor de la transmisión con VLC como transmisión http con
pulse://alsa_output.xxx.monitor
entrada y transcodificarla a MP3 o FLAC. Luego, quería usar algún punto de control de DLNA para permitir que el renderizador reproduzca la transmisión. VLC sirve el flujo transcodificado correctamente, pero no permite establecer el tipo mime, por lo que el procesador se niega a reproducirlo.La siguiente idea fue escribir un servidor http en python que sirva la transmisión en su lugar. Obtiene el flujo de audio de pulse con
parec
, lo codifica conflac
(lame
o lo que desee) y establece el tipo de mimo correctamente.Funciona con el siguiente script (muy simple):
Ajuste los parámetros, ejecútelos y apunte el procesador DLNA a su máquina. Funcionó para mí con un WDTV como procesador y un teléfono Android con BubbleUPnP como punto de control (puede escribir la URL de la transmisión al agregar un nuevo elemento a la lista de reproducción manualmente). Pero debería funcionar con cualquier dispositivo compatible con DLNA.
fuente
NOTA: Esta solución funciona, pero Massimo ha propuesto una solución más nueva y probablemente mejor .
Aquí hay una respuesta para Ubuntu 14.04 (también probado y trabajando en 15.04 ), para completar:
instale los paquetes necesarios:
sudo apt-get install rygel rygel-preferences rygel-gst-launch
cree el archivo
~/.config/rygel.conf
que contiene lo siguiente:Ejecute los siguientes comandos desde la línea de comandos (estos se pueden poner en un script si lo desea):
Ejecute el
paprefs
comando y asegúrese de que ambas opciones DLNA estén habilitadas (marcadas) en la pestaña "Servidor de red".Reproduce algo de audio en tu computadora. Ejecute el
pavucontrol
programa y, en la pestaña "Reproducción", cambie el dispositivo de salida a "Streaming DLNA / UPnP".En este punto, debería poder reproducir las transmisiones MPEG y FLAC desde un cliente DLNA (procesador / punto de control).
NOTA: es posible que deba reiniciar su computadora (o reiniciar el pulso) para que las cosas comiencen a funcionar.
fuente
El script de Python de Adam es justo lo que necesitaba. Brillante. Rygel con gst-launch no funciona con uno de mis renderizadores, pero este script funciona con ambos. En mi caso, tomo una entrada de transmisión de audio de squeezelite (para squeezebox) y la envío a un renderizador. El script también funciona en la forma original para recibir información de un monitor de pulseaudio si eso es lo que se necesita.
Sabiendo poco sobre esto, logré hacer algunas adiciones al script que:
i) permitir que se ejecute desde un script de shell y terminar con un SIGTERM / SIGKILL (la declaración 'except' ahora incluye 'systemexit')
ii) permite que la secuencia de comandos se detenga y se reinicie y vuelva a usar el mismo puerto (ya que era la secuencia de comandos reiniciada tendía a fallar diciendo que no podía abrir el puerto si el procesador aún lo tenía abierto) - (allow_reuse_address = Declaración verdadera)
iii) cree una versión que tome la entrada de stdin y la muestree usando sox para generar en formato wav (en el puerto 8082)
Entonces mi versión se ve así:
fuente
No estoy seguro de si esto será útil para usted ahora, pero escribí una publicación sobre cómo hacer que esto funcione en Ubuntu 12.10:
http://dpc.ucore.info/blog/2012/11/07/dlna-streaming-in-ubuntu-12-dot-10/
fuente