7 votes

Sortie audio synchronisée sur plusieurs machines ? VLC ? Solutions matérielles ?

Je me demande s'il existe des solutions logicielles ou matérielles pour synchroniser l'audio ou l'audio et la vidéo sur plusieurs ordinateurs ou appareils d'un réseau.

J'ai vu Sonos, et cela pourrait être une bonne solution, mais c'est aussi une solution très coûteuse.

J'aimerais pouvoir jouer quelque chose avec une sortie audio en temps réel sur un PC, mais l'entendre sur des haut-parleurs dans toute la maison, que ce soit le récepteur de home cinéma, ou un autre ordinateur dans une autre pièce.

J'ai vu une solution utilisant l'Apple Airport Express, mais la latence était inacceptable pour autre chose que de la musique. J'aimerais éviter de faire passer des câbles audio avec des baluns vers plusieurs amplificateurs dispersés partout lorsque j'ai du câble CAT5 partout.

Est-ce que quelqu'un connaît l'utilisation de ce type de processus pour un audio dans toute la maison? La latence est très importante pour moi, si j'ai de la vidéo associée au son (par exemple, regarder un match de hockey).

MISE À JOUR

J'ai depuis installé plusieurs squeezeboxes dans la maison à des fins musicales, et connecté un récepteur Onkyo contrôlé par série à mon système d'automatisation. Cela me donne un peu plus de flexibilité, et dans la plupart des zones je peux obtenir un audio en temps réel d'un match en utilisant les multizones sur le récepteur, et pour la musique je peux synchroniser le reste des zones. Les squeezeboxes se synchronisent entre eux (bien qu'il y ait une latence pour les événements en direct). Dans les zones où cela pose problème (comme regarder un match de hockey), j'ai distribué l'HDMI en utilisant un commutateur matriciel vers 4 téléviseurs différents, tous avec sortie audio vers un amplificateur dans cette pièce. Cela me permet d'avoir une latence nulle entre les pièces pour les événements en direct nécessitant de la vidéo.

Dans l'ensemble, j'apprécie les réponses mais aucune d'entre elles n'a fonctionné pour moi. Je pense que la distribution HDMI est de loin l'une des meilleures pour la vidéo et l'audio, et squeezebox est moins cher que Sonos pour l'audio (et il existe des lecteurs logiciels que vous pouvez exécuter sur n'importe quel PC avec un peu de réglages, ils peuvent se synchroniser pour une solution audio domestique à plusieurs zones)

3voto

Rob Pilkington Points 344

Essayez Airfoil. Oui, il fonctionne mieux pour la musique, mais il peut gérer toutes les sorties audio de n'importe quelle application. Il possède sa propre application de lecteur vidéo, qui maintiendra l'audio/vidéo synchronisé pour les fichiers vidéo.

J'ai des haut-parleurs dispersés dans toute la maison, connectés soit à un ordinateur soit à un airport express. Je peux diffuser du son à partir de n'importe quel programme sur n'importe quel ordinateur de la maison, et choisir sur quels haut-parleurs le son sortira. En fait, il m'est arrivé de brancher un ipod touch à des haut-parleurs portables en extérieur lors de soirées aussi.

2voto

Chochos Points 3364

pulseaudio devrait le faire je crois- du moins c'est ce que dit la FAQ

2voto

scarver2 Points 2605

Désolé pour la longueur de cette réponse - elle représente plusieurs semaines de recherche par essais et erreurs. Je crains que les détails n'importe donc j'en ai fourni plus plutôt que moins. C'est axé sur le partage audio

Comme d'autres sur ce fil, j'ai été intéressé par la distribution audio synchronisée dans toute la maison avec des espaces où les environnements acoustiques se chevauchent. Comme le son se déplace à environ un pied/millisecond, cela nécessite une synchronisation au niveau d'environ 10 millisecondes. J'ai trouvé un moyen de le faire fonctionner avec VLC et de le maintenir synchronisé pendant des heures sans déraper. Bien que j'admets avoir regardé le code source de VLC pour essayer de comprendre quels horloges sont utilisées, je ne prétends pas comprendre ce qui se passe là-bas. De plus, une grande partie de ce que j'ai fait a été empirique. Ainsi, si les personnes qui comprennent vraiment VLC offrent des éclaircissements sur une meilleure façon de le faire, je suis très receptif. Avec ces mises en garde formulées, voici ce que j'ai fait qui semble fonctionner.

Configuration

J'ai quatre zones où je voudrais partager l'audio et une collection d'ordinateurs de différentes générations que je suis prêt à consacrer pour fournir l'audio. Certains de ces machines fonctionnent sous Linux (Ubuntu 12.04) tandis que d'autres fonctionnent sous Windows. Dans l'ensemble, il était plus facile de synchroniser les boîtes Linux que les boîtes Windows, mais c'était possible.

Sur les boîtes Linux, il était nécessaire de mettre à jour les pilotes pulseaudio en utilisant ppa:ubuntu-audio-dev/ppa pour obtenir la version à faible latence. Sinon, la configuration était standard. VLC se plaignait de la latence sans cette mise à jour. J'espère que lorsque nous obtenons le 14.04 ce problème disparaîtra.

Sur les boîtes Windows, je cours Windows 7 Pro.

L'audio est servi à partir de VLC un boîtier Linux qui est indépendant des machines de lecture. Il est juste en aval du pare-feu où le réseau entre dans la maison.

Le réseau est un mélange de câblé gigabit et sans fil (802.11g).

Choses qui peuvent ne pas importer

Parce que je suis un maniaque du temps, toutes les machines sont verrouillées ensemble en temps au niveau sub-millisecondes en utilisant NTP. Sur les boîtes Linux, c'est trivial. Sur la boîte Windows, j'utilise l'implémentation Meinberg de ntp (trouvé à http://www.meinbergglobal.com/english/sw/ntp.htm) La boîte qui sert l'audio est synchronisée avec les horloges externes normales. Cependant, les machines de lecture ont leur temps synchronisé exclusivement avec le serveur audio et le suivent de près. La ligne du fichier ntp.config sur les machines de lecture qui fait cela est

serveur 10.17.0.12 iburst burst minpoll 4 maxpoll 4 prefer

Cela garantit que les vérifications de temps sont effectuées toutes les 16 secondes - clairement je ne suis pas concerné par le trafic réseau.

Serveur

Le serveur est configuré pour surveiller le flux PulseAudio afin que tout ce que je joue sur le serveur soit renvoyé au flux de sortie.

Le flux de sortie est un flux rtsp servant deux canaux à 44.1kHz. Encore une fois, il y a probablement des choses que je pourrais faire pour conserver la bande passante, mais je suis plus intéressé à obtenir la synchronisation correcte qu'à minimiser la bande passante.

Dans les Préférences (sous Outils)

  1. Dans les paramètres simples, Audio - assurez-vous que l'audio Time-Stretching est activé

    Pour le reste des paramètres, cliquez sur "Tout" en bas de la page des Préférences

  2. Permettre la priorité en temps réel

  3. Synchronisation du réseau - Cochez la case Horloge maitresse du réseau et fournissez l'IP du serveur Maître (cette machine dans mon cas)

  4. Audio - activer le rééchantillonnage audio de haute qualité et cocher Activer l'audio de time-stretching

  5. Entrée/Codecs - celui-ci semble être le plus important - faites défiler jusqu'en bas de la page

    1. Définir le cache réseau sur 300ms - vous devrez peut-être le varier en fonction de la vitesse et de la contention de vos machines - sur les miennes 300 suffit
    2. Compteur de référence d'horloge moyen - j'ai trouvé que 1000 fonctionnait bien - cela semble affecter à quelle vitesse la synchronisation suit de petits changements dans le temps
    3. Activer la synchronisation de l'horloge
    4. Clock jitter - 30ms fonctionne sur mes systèmes
    5. Cochez la Synchronisation du réseau
    6. J'ai fourni des noms de fichiers pour le répertoire d'enregistrement et le répertoire Timeshift - je ne sais pas si cela importe
    7. Granularité de Timeshift - je l'ai réglé sur 1000, encore une fois, je ne suis pas sûr que cela ait de l'importance.

Clients

Configurez les clients pour lire le flux fourni par votre serveur.

Les clients sont configurés pour correspondre au maître avec quelques exceptions - ici je vais lister juste les différences

Windows - Préférences

  1. Augmenter la priorité du processus
  2. Définir la source d'horloge sur l'heure du Système (Dangereux!) - j'ai essayé les autres réglages et ils ont tendance à dériver. Cela semble bien fonctionner tant que le NTP fait son travail. Quand j'arrête NTP, les choses commencent à dériver. En regardant le code source, il semble que cette option utilise GetSystemTimePreciseAsFileTime() - sur les systèmes modernes c'est un minuteur sub-microseconde et c'est apparemment l'horloge que NTP gère. Je suis sûr qu'il y a une raison pour laquelle c'est marqué comme dangereux donc utilisez-le à vos risques et périls - cela semble fonctionner pour moi.
  3. Dans la Synchronisation du réseau - Ne cochez pas l'Horloge maitresse du réseau (c'est la cliente après tout) Fournissez l'IP de votre horloge maitresse.

Autrement, tout est pareil que sur le maître.

Linux -

Préférences

  1. Vous n'avez pas le choix sur l'horloge - vous devez fournir l'IP du maître tout comme vous le faites pour Windows.

Mises en garde

Ayant dit tout cela, tous les clients Linux que j'ai installés semblent bien fonctionner - même un ancien netbook avec très peu de puissance.

Windows est une autre histoire. J'ai essayé deux boîtes, toutes deux avec des processeurs i7 - elles sont relativement récentes et rapides. Une, un ordinateur portable Lenovo, fonctionne avec la recette ci-dessus. L'autre, un boîtier Shuttle, a fonctionné jusqu'à un certain point mais après quelques heures commençait à dériver. J'ai finalement abandonné et l'ai configuré en dual boot avec Ubuntu. Une fois que j'ai fait cela, tout a juste fonctionné. Bien que je sois convaincu que Windows peut être fait pour fonctionner puisque j'ai une preuve d'existence, Linux semble être plus proche d'une solution fiable. J'ai maintenant trois boîtes avec le client Linux et ils fonctionnent tous parfaitement et restent synchronisés sur des échelles de temps de nombreuses heures sans avoir besoin de redémarrer le client VLC.

1voto

Adam V Points 2774

Il devrait être possible d'utiliser VLC à cette fin.

Voir par exemple Comment diffuser presque n'importe quoi en utilisant VLC:

"... nous allons vous montrer comment diffuser n'importe quel type de fichier média de votre ordinateur vers un autre appareil de votre réseau ... En utilisant ces techniques, vous pourriez diffuser une vidéo de votre ordinateur de bureau vers un ordinateur portable branché sur la télévision du salon et contrôler la playlist avec votre PDA."

1voto

JoshReedSchramm Points 1729

Si la latence est inacceptable, votre meilleur choix pourrait être d'envoyer l'audio dans toute la maison via des haut-parleurs FM ou sans fil (ou même des câbles) Comment rediriger la radio internet vers un tuner ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X