Existe-t-il un moyen de diffuser la sortie en direct de la carte son de notre bureau 12.04.1 LTS amd64 sur un périphérique externe compatible DLNA de notre réseau? La sélection de contenu multimédia dans des répertoires partagés à l'aide de Rygel, miniDLNA et uShare est toujours acceptable - mais jusqu'à présent, nous n'avons pas réussi à obtenir un flux audio en direct vers un client via DLNA.
Pulseaudio prétend avoir un serveur multimédia DLNA / UPnP qui, avec Rygel, est censé faire exactement cela. Mais nous n'avons pas réussi à le faire fonctionner.
Nous avons suivi les étapes décrites dans live.gnome.org , cette réponse ici, ainsi qu'un autre guide similaire .
Dans 12.04 LTS, nous pouvons sélectionner le périphérique audio local ou notre flux GST-Launch dans le client DLNA, mais Rygel affiche le message suivant et le client indique qu'il a atteint la fin de la liste de lecture:
(rygel:7380): Rygel-WARNING **: rygel-http-request.vala:97: Invalid seek request
Il n'y avait aucun moyen d'écouter des flux audio en direct sur le client.
Ce n’est qu’après une mise à niveau de la distribution vers 14.04 LTS que nous avons pu sélectionner un flux en direct sur nos rendus DLNA à partir des paramètres bien décrits dans la réponse ci-dessous . Néanmoins, nous avions besoin de sélectionner un flux établi après le démarrage de Rygel et étions incapables de transmettre un nouveau flux à nos périphériques UPnP. Les métadonnées audio n'ont pas été transmises.
Existe-t-il d'autres solutions pour envoyer le son de notre carte son sous forme de diffusion en direct à un client DLNA?
Réponses:
Pulseaudio-DLNA
J'ai créé un petit serveur qui découvre tous les moteurs de rendu upnp de votre réseau et les ajoute sous forme de puits à pulseaudio. Ainsi, vous pouvez contrôler chaque application via pavucontrol pour jouer sur vos appareils upnp.
C’est le genre de confort que j’ai toujours souhaité pour les appareils upnp sous linux.
L’application peut être installée à partir du paquet source ou du paquet DEB téléchargeable à partir de git , ou après avoir ajouté le ppa officiel du projet: qos / pulseaudio-dlna à nos sources avec:
Nous exécutons ensuite pulseaudio-dlna à partir de la ligne de commande avec les options suivantes:
Voir aussi le pulseaudio-dlna "About" pour plus.
Lorsqu'un rendu DLNA était présent, vous pouvez le sélectionner dans le menu Son en tant que récepteur de sortie:
la source
python-requests
d'une dépendance et nous pouvions sélectionner le rendu à partir des contrôles audio par défaut - pas besoin d'installer pavucontrol.Pavucontrol est l’élément manquant de ce puzzle! J'avais également tout configuré correctement et le périphérique externe (téléviseur LG) indiquait que le son était en cours de lecture, mais je n'ai entendu aucun son. Aujourd'hui, j'ai installé pavucontrol et, lorsque je l'ai ouvert, j'ai trouvé l'option de canaliser le son via le serveur DLNA. L’option DLNA n’est affichée que lorsqu’un son est reproduit par pulseaudio.
la source
Invalid seek request
de Rygel. Les répertoires de médias sont là, mais mon flux GST est toujours EOF.Je suis désolé de ne pouvoir vous aider du tout avec Rygel, mais il existe peut-être une alternative qui pourrait fonctionner pour vous.
Le principe est d'obtenir un programme pour enregistrer le flux dans un fichier audio, puis lancer miniDLNA avec une configuration personnalisée qui pointe vers le répertoire dans lequel se trouve le flux.
Exemple: Disons que nous travaillons dans ~ / stream /. Créer ~ / stream / minidlna.conf
Enregistrez ensuite le flux dans un fichier audio de ce répertoire. Googler pour "FFmpeg record sound card sound" a donné cette commande
mais je n'ai pas eu beaucoup de chance avec ça. Une autre option est vlc si vous avez une interface graphique disponible et cela ne fonctionne pas.
Ensuite, démarrez miniDLNA dans une autre fenêtre de terminal:
Il doit localiser OutputStream.flac, puis être accessible à partir de votre périphérique réseau.
Espérons que si vous ne l'avez pas déjà résolu, cela vous donnera quelques idées.
la source
Une des idées que je devais diffuser "ce que j’entendais" dans un moteur de rendu DLNA (comme WDTV) était de servir le flux avec VLC comme flux http avec
pulse://alsa_output.xxx.monitor
comme entrée et de le transcoder au format MP3 ou FLAC. Ensuite, je voulais utiliser un point de contrôle DLNA pour laisser le moteur de rendu lire le flux. VLC sert correctement le flux transcodé, mais il ne permet pas de définir le type mime, de sorte que le moteur de rendu refuse de le lire.L'idée suivante était d'écrire un serveur http en python qui sert plutôt le flux. Il obtient le flux audio d'impulsion avec
parec
, le code avecflac
(lame
ou ce que vous voulez) et définit correctement le type MIME.Cela fonctionne avec le script suivant (très simple):
Ajustez les paramètres, exécutez-le et pointez le moteur de rendu DLNA sur votre machine. Cela fonctionnait pour moi avec un WDTV en tant que moteur de rendu et un téléphone Android avec BubbleUPnP en tant que point de contrôle (vous pouvez taper l'URL du flux lorsque vous ajoutez manuellement un nouvel élément à la liste de lecture). Mais cela devrait fonctionner avec tous les périphériques compatibles DLNA.
la source
REMARQUE: cette solution fonctionne, mais Massimo a proposé une solution plus récente et probablement meilleure .
Voici une réponse pour Ubuntu 14.04 (également testé et fonctionnant le 15.04 ), par souci de complétude:
installer tous les paquets nécessaires:
sudo apt-get install rygel rygel-preferences rygel-gst-launch
créez le fichier
~/.config/rygel.conf
contenant les éléments suivants:Exécutez les commandes suivantes à partir de la ligne de commande (vous pouvez les insérer dans un script si vous le souhaitez):
Exécutez la
paprefs
commande et assurez-vous que les deux options DLNA sont activées (cochées) dans l'onglet "Serveur réseau".Jouez de l'audio sur votre ordinateur. Exécutez le
pavucontrol
programme et, dans l'onglet "Lecture", réglez le périphérique de sortie sur "Diffusion DLNA / UPnP".À ce stade, vous devriez pouvoir lire les flux MPEG et FLAC à partir d’un client DLNA (convertisseur de rendu / point de contrôle).
REMARQUE: vous devrez peut-être redémarrer votre ordinateur (ou redémarrer pulse) pour que tout commence à fonctionner.
la source
Le script python d'Adam est exactement ce dont j'avais besoin. Brillant. Rygel avec gst-launch ne fonctionne pas avec l'un de mes moteurs de rendu, mais ce script fonctionne avec les deux. Dans mon cas, je prends une entrée de flux audio de squeezelite (pour squeezebox) et l’envoie à un moteur de rendu. Le script fonctionne également dans sa forme originale pour prendre les entrées d’un moniteur pulseaudio si c’est ce qui est nécessaire.
En connaissant peu de tout cela, j'ai réussi à ajouter quelques éléments au script qui:
i) autoriser son exécution depuis un script shell et se terminer par un SIGTERM / SIGKILL (la déclaration "sauf" inclut désormais "systemexit")
ii) permet d'arrêter le script, de le redémarrer et de réutiliser le même port (car il s'agissait du script redémarré qui avait tendance à échouer en indiquant qu'il ne pouvait pas ouvrir le port s'il était toujours ouvert) - (l'instruction allow_reuse_address = True)
iii) créer une version qui prend une entrée de stdin et la ré-échantillonne en utilisant sox pour une sortie au format wav (sur le port 8082)
Donc, ma version ressemble à:
la source
Je ne sais pas si cela vous sera utile maintenant, mais j’ai écrit dans un post sur comment le faire fonctionner sur Ubuntu 12.10:
http://dpc.ucore.info/blog/2012/11/07/dlna-streaming-in-ubuntu-12-dot-10/
la source