Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

5 - Les serveurs son : Jack, PulseAudio et autres...

> Forums de discussion > 5 - Les serveurs son : Jack, PulseAudio et autres... > [RESOLU] Pulseaudio, Spdif et ampli home cinema pour la video en streaming
Dernier post

[RESOLU] Pulseaudio, Spdif et ampli home cinema pour la video en streaming

minimoineau utilisateur non connecté
Salut à tous!
Depuis quelque temps, je me heurte à un problème que je n'ai que partiellement résolu :

Je possède un vieil ampli home cinema que j'utilise pour regarder des films avec le son en 5.1 via l'entrée Spdif. Le décodage Dolby Digital ou DTS se fait par l'ampli, ce qui implique que le signal en entrée doit être non décodé. On appelle ça le "passthrough".

J'envoie donc du son en Spdif depuis ma Xubuntu 20.04 via Pulseaudio pour regarder des DVD et des films en streaming.

Pour les DVD, aucun soucis avec VLC qui envoie directement le signal à la sortie Spdif sans passer par Pulseaudio et en Passthrough (non décodé).

C'est pour le streaming depuis un navigateur web que ça se complique :
Impossible d'envoyer autre chose que du son stéréo depuis Firefox ou autre navigateur en passant par Pulseaudio.
Pour Netflix, j'ai trouvé la solution en installant Kodi et l'extension Netflix. Celui-ci permet de sélectionner une option "passthrough" et j'arrive à envoyer du Dolby Digital et du DTS à l'ampli en passant par Pulseaudio...!

Par contre avec d'autre plateformes de streaming ou VOD depuis un navigateur internet, impossible d'avoir autre chose que de la stéréo...cry

La documentation de Pulseaudio mentionne pourtant bien la possibilité d'envoyer le signal en Passthrough, mais en essayant toutes les combinaisons, rien n'y fait pour moi!

Quelqu'un aurait une idée??

minimoineau utilisateur non connecté
Les infos que j'ai trouvé sont sur le site de Kodi .
Mais je ne pige pas pourquoi ça ne fonctionne pas avec un navigateur web...

minimoineau utilisateur non connecté
Bon, j'avance un peu sur un terrain qui m'est vraiment inconnu...

Après pas mal de recherches, je pense avoir compris que pour pouvoir transmettre de l'audio numérique en 5.1 via le Spdif, il faut absolument encoder l'audio en question avec le codec AC3 (de chez Dolby...) car la bande passante n'est pas assez large pour envoyer directement du PCM (non compressé).
Pulseaudio propose la liaison PCM donc limitée à la stéréo.

Bref, Alsa propose un greffon, le a52 qui se charge de convertir à la volée le flux audionumérique pour sortir du AC3 sur 6 canaux (5.1) que l'ampli home cinema est capable de recevoir...

J'ai tenté de suivre ce tuto qui a l'air plutôt daté, mais rien n'y fait... je n'arrive pas à envoyer autre chose que de la stéréo...frown

Si quelqu'un peut m'éclairer sur comment activer ce greffon avec Alsa et Pulseaudio, je me perd dans tous les forums, et j'ai beaucoup de mal à comprendre qui fait quoi entre ces deux serveurs...

jujudusud utilisateur non connecté France
Et bien, il te suffit d'utiliser vlc comme lecteur de streaming ? non ?

minimoineau utilisateur non connecté
Hello! Merci pour vos réponses.

@eric_p : je n'ai pas de soucis de codecs, mais simplement je ne parviens pas à la conversion "à la volée" expliquée plus haut...

@jujudusud : j'y avais déjà songé et j'ai tenté de lire le flux de la VOD en entrant son adresse dans vlc, mais pas de chance, ça ne fonctionne pas... Peut-être des DRM en cause. frown

minimoineau utilisateur non connecté
Coucou, c'est encore moi!!

Je persiste dans mes recherches... J'ai remarqué que le greffon a52 pour Alsa était déjà présent dans mon systère, comme mentionné dans cette page il fait partie de la bibliothèque Libasound, et sa description correspond exactement à ce que j'attends, à savoir :
Citation :
a52 : conversion de flux S16 vers A52 ;


J'ai aussi trouvé un fichier de configuration nommé 60-a52-encoder.conf dont voici le contenu :
pcm.a52 {
	@args [ CARD SLAVE RATE BITRATE CHANNELS ]
	@args.CARD {
		type integer
		default {
			@func refer
			name defaults.pcm.card
		}
	}
	@args.SLAVE {
		type string
	}
	@args.RATE {
		type integer
		default 48000
	}
	@args.BITRATE {
		type integer
		default 448
	}
	@args.CHANNELS {
		type string
		default 6
	}
	type a52
	card $CARD
	slavepcm $SLAVE
	rate $RATE
	bitrate $BITRATE
	channels $CHANNELS
	hint {
		show {
			@func refer
			name defaults.namehint.basic
		}
                description "Plugin to convert multichannel stream to A52 (AC3) bitstream"
	}
}


Je pense que c'est pile ce qu'il me faut!
La logique voudrait que je place ce fichier dans /usr/share/alsa/alsa.conf.d/ avec les autres fichiers du genre, mais je navigue sans savoir ce que je fais...
Quelqu'un saurait me guider ? J'ai un peu peur de faire des bêtises!lol

jujudusud utilisateur non connecté France
J'aurais plutot parié sur le fichier asoundrc moi ...
$HOME/.asoundrc

Voir dans cette page Image .

olinuxx utilisateur non connecté France
Le ~/.asoundrc, c'est uniquement pour un utilisateur (c'est un fichier dans le $HOME). Pour que ce soit un réglage pour tous les utilisateurs d'un système, il me semble de mémoire qu'il faut utiliser /etc/asound.conf . À vérifier, ça a peut être changé depuis la dernière fois que je l'ai utilisé il y a pffioooooouuuuu bien longtemps.

Un peu de doc en français ici, sur le site : asoundrc. Mise à jour bienvenue si c'est nécessaire.

minimoineau utilisateur non connecté
Salut à tous!
Encore merci pour vos conseils. J'ai tenté d'utiliser asoundrc, mais sans succès. J'ai bien une nouvelle option "sortie surround numérique 5.1 (IEC958/AC3)" accessible dans Pavucontrol, mais en sortie, rien que des sons saccadés, inaudibles, comme indécodables par l'ampli... cry

J'ai donc cherché encore, jusqu'à tomber sur ce forum Arch où l'approche est différente. Si j'ai bien compris (c'est en anglais...), la personne cherchait à faire la même chose, mais a fini par renoncer pour faire ça manuellement.

Je tente un descriptif, même si je ne comprends pas la moitié des commandes...!

  • On commence par choisir la sortie analogique dans Pavucontrol pour que Pulseaudio libère le Spdif.
  • On charge un module Alsa pour spécifier le matériel utilisé comme source (ici Spdif) :
pacmd load-module module-alsa-source device=hw:0,0 rate=48000 channels=2 source_name=SPDIF_in

  • On charge le greffon a52 avec les bonnes spécifications (pour avoir les 6 canaux du 5.1) :
pacmd load-module module-alsa-sink device=a52 rate=48000 channels=6 tsched=0 sink_properties=device.description=SPDIF_out sink_name=SPDIF_out channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe

  • Et enfin un dernier module "echocancel" dont je n'ai franchement pas compris le role lol :
pacmd load-module module-echo-cancel source_name=echosource sink_name=echosink aec_method=webrtc aec_args="analog_gain_control=0"


Voilà, je n'ai pas testé tous les détails, mais ça semble fonctionner : mon ampli reçois bien du Dolby AC3, en 5.1, et de n'importe quelle source via Pulseaudio...

J'essaye plus en profondeur et je vous redis! smile

jujudusud utilisateur non connecté France
[Mode humour On]
Aussi, si tu précises pas que tu utilises PulseAudio !
[Mode humour Off]

Reviens vite nous dire ce que ça donne !

minimoineau utilisateur non connecté
Hello!
@jujudusud : Ok, j'utilise PulseAudio!!!! Mais si ça pouvait se faire avec Jack, je serais comblé!

D'ailleurs ça m'a donné l'idée de chercher dans cette piste aussi, et il semble qu'il existe un utilitaire d'encodage AC3 en temps réel pour Jack, mais je crois que c'est pour faire du monitoring 5.1 en mettant en entrée 6 canaux séparés... A voir tout de même : ICI

Sinon, mes premiers essais (avec des vidéos de test d'installation 5.1 en streaming) semblent prometteurs. A suivre la prochaine fois que je loue une VOD donc!

Enfin, j'ai cherché un peu à quoi servait le module "echocancel" et je pense que ce n'est pas utile dans mon cas. C'est un outil visant à supprimer l'effet d'echo qui se produit notamment avec les PC portables lorsque le son repasse par le micro intégré. J'avoue ne pas vraiment piger son rôle dans ce cas précis.

minimoineau utilisateur non connecté
Salut!
Voici mes premières impression sur la technique de Pulseaudio.
Il apparaît en fait que pour certains sites de VOD, type cinemasalademande.com la diffusion ne contient en fait que de l'audio stéréo classique, et qu'il est donc illusoire d'essayer d'en tirer du 5.1!!! Le résultat est un effet bizarre où tout sort par les 5 enceintes avec les basses dans le sub...

Première chose à vérifier donc : QUE DIFFUSE LE SITE???

Par contre pour les contenue avec du vrai 5.1 (type Netflix), cela fonctionne parfaitement. A priori, la conversion vers l'AC3 se fait correctement et le rendu est conforme à mes attentes! biggrin

Il me resterais à en faire un script pour rendre tout ça plus facile à utiliser.

@jujudusud : merci pour tes idées, elles restent à creuser. En effet, je me suis penché sur la solution via Jack puis AC3Jack mais impossible de compiler le bousin cry. L'outil a l'air ancien, mais complet... Pouvoir mixer en 5.1 temps réel... c'est un rêve de gosse! Mais il semble que le spdif/AC3 soient des protocoles dépassés aujourd'hui... Moi et ma manie de vouloir faire du neuf avec du vieux lol!



Je considère mon problème résolu, même si il y aurait d'autres solutions potentielles.

jujudusud utilisateur non connecté France
Je regarde ac3jack quand j'ai un moment...

Est ce que tu as regardé la possibilité d'utiliser les filtres audio de mplayer ou mpv ?
Filtre audio -af lavcac3enc avec ALSA ?

Ah mince... Non les DRM... Euh... :-(

minimoineau utilisateur non connecté
Salut jujudusud!

Pour ac3jack, j'ai réussi à installer toutes les dépendances sans trop de soucis, la /configure s'est bien passé, par contre, à la compil, j'ai ça:

In file included from engine.hpp:31,
                 from engine.cpp:29:
ringbuffer.hpp: In instantiation of ‘size_t RingBuffer<T>::write(T*, size_t) [with T = unsigned char; size_t = long unsigned int]’:
engine.cpp:907:60:   required from here
ringbuffer.hpp:191:16: error: ‘memcpy’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
  191 |         memcpy (&buf[priv_write_ptr], src, n1 * sizeof (T));
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/features.h:461,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/c++config.h:524,
                 from /usr/include/c++/9/iostream:38,
                 from engine.cpp:20:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:31:1: note: ‘void* memcpy(void*, const void*, size_t)’ declared here, later in the translation unit
   31 | __NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
      | ^~~~~
In file included from engine.hpp:31,
                 from engine.cpp:29:
ringbuffer.hpp:195:24: error: ‘memcpy’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
  195 |                 memcpy (buf, src+n1, n2 * sizeof (T));
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/features.h:461,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/c++config.h:524,
                 from /usr/include/c++/9/iostream:38,
                 from engine.cpp:20:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:31:1: note: ‘void* memcpy(void*, const void*, size_t)’ declared here, later in the translation unit
   31 | __NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
      | ^~~~~
make[3]: *** [Makefile:366 : engine.o] Erreur 1


Et là... c'est au delà de mes compétences!
Pas trouvé de paquet tout prêt sur le net. Pas mal de gens butent là dessus aussi...

jujudusud utilisateur non connecté France
J'ai la même erreur lors de compilation. après quelques galères avec aften et libsigc++... rire

minimoineau utilisateur non connecté
Tout pareil haha!!!lol

minimoineau utilisateur non connecté
Salut à tous!
Je reviens ici apporter quelque précisions, concernant notamment les formats audios diffusés sur les plateformes de video à la demande et autres "streaming" (style Netflix).

Il est à noté que nombre de ces plateformes proposent des logiciels dédiés pour regarder les contenus, par lesquels on a accès à plus d'options sur la qualité de la vidéo ET de l'audio. Bien entendu, aucun n'est compatible avec Linux. D'où la solution intéressante d'utiliser Kodi avec les extensions correspondantes pour avoir accès aux mêmes options qu'avec les logiciels dédiés.
Cela fonctionne très bien pour Netflix et Prime VOD...

Tout ça pour dire qu'il est compliqué d'avoir de l'audio en 5.1 (Dolby Digital ou DTS) en utilisant les navigateurs web communs. On peut y arriver pour certaines plateformes avec des extensions (Firefox ou Chrome), mais c'est assez hasardeux...

En conclusion, outre les difficultés de paramétrage dont on a parlé plus haut, pas simple de connaître le format audio qui sort des sites de diffusion. C'est assez mal documenté, et il faut donc essayer au cas par cas.

jujudusud utilisateur non connecté France
Ah beh chouette !!! :-) merci pour ce joli retour !

Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

sub26nico, 09:25, mar. 15 Jun 2021: Bonjour et bienvenue à Hexaal :-)
Ubuntu_Studio_User, 02:29, lun. 14 Jun 2021: Salut à tous...
allany, 12:12, sam. 12 Jun 2021: @tourneriff : merci pour le signalement, c'est fait !
tourneriff, 07:52, sam. 12 Jun 2021: Bonjour à tous ☺ ! Avis aux modos : pourrait-on voir la "joute 16" en cours à l'accueil du site plutôt que l'antique "joute 15"
sub26nico, 14:56, jeu. 10 Jun 2021: Salut et bienvenue à jamesonmount, freerawsound et Loop :-)
ycollet, 10:28, mer. 09 Jun 2021: Cool, un revival de rakarrak ! [Lien]
sub26nico, 22:08, lun. 07 Jun 2021: Bonjour et bienvenue à ArchLinux59, Djobi et gakgakgak :-)
olof, 09:27, lun. 07 Jun 2021: ardour 6.7 build tourne chez moi, mais pas le package 6.6
allany, 14:46, dim. 06 Jun 2021: @r1 : t'as raison : trop c'est trop, ça sature du goulot !
r1, 22:54, sam. 05 Jun 2021: Mon cerveau a bobo à force de faire le gogo sur l'annonce de l'édito !
allany, 11:49, sam. 05 Jun 2021: Z'ont encore abattu un sacré boulot, les poulbots de l'édito ! [Lien]
ycollet, 20:37, ven. 04 Jun 2021: Un article intéressant sur un truc à venir sur USB audio: [Lien]