J'ai des fichiers vidéo avec plusieurs pistes audio (dans le conteneur MKV). Je veux regarder un film tout en envoyant une langue aux haut-parleurs (pour les enfants) et une autre langue aux écouteurs (pour moi), en gardant les pistes synchronisées si le film est en pause, etc.
Supposons que mon système dispose déjà de deux sorties audio correctement configurées.
Existe-t-il un moyen de le faire avec un lecteur multimédia sous Linux? J'ai vérifié MPlayer et VLC jusqu'à présent, et ils ne prennent en charge que la sélection d'une des pistes audio disponibles.
linux
audio
video
media-player
Martin Vidner
la source
la source
:-)
Réponses:
L'idée
aka Comment briser une mouche (beurre) sur la roue [ Fly ] .
Vous pouvez diffuser localement tout le film avec toutes les pistes audio et de sous-titres, par exemple avec
vlc
.Il suffira alors de " connecter" deux clients à ce flux, en sélectionnant la langue (et / ou les sous-titres) et les différentes sorties audio (que nous supposons déjà configurées).
De plus, avec un nouveau téléviseur, une tablette ou des téléphones portables, il n'est pas nécessaire d'exécuter les clients sur l'ordinateur ... et lorsque vous mettez en pause le streamer, vous mettez en pause tout ... et cela devrait aussi fonctionner avec Windows (toujours supposé la sortie audio déjà configurée peut-être avec des programmes tiers, dans le cas où vous souhaitez exécuter les deux clients sur l'ordinateur).
Quelques mots de plus
Une ligne de commande de streaming typique peut être similaire à
Il faut l'option
--sout-all
[ SO ]Lisez
vlc -H
pour avoir des conseils sur les autres (tonnes de) options disponibles.Pour "jouer" le flux
où x est le numéro du flux audio que vous souhaitez écouter sur ce client.
Tout devrait aussi être fait facilement à partir de l'interface graphique du serveur / client ...
Références et lectures supplémentaires
Vous pouvez lire la page du blog de Luuk "Utiliser VLC pour lire plusieurs clips vidéo sur plusieurs ordinateurs en synchronisation" [ 1 ] , vous pouvez éventuellement essayer d'ajouter une piste audio externe à partir de cette page wiki de videolan [ 2 ] , ou vous pouvez jouer avec Gstreamer et différentes sorties comme suggéré par Antonio dans cette réponse [ 3 ] .
La commande Gstreamer ci-dessus peut être une réponse de travail minimale en soi ou un chemin pour sauver la mouche (beurre) ...
... mais rarement je suis tenté de défendre mon propre surnom.
la source
La solution de streaming présente un inconvénient: les clients utilisent le cache et peuvent se désynchroniser. Cela m'est arrivé.
Une autre approche pour exécuter deux pistes différentes simultanément que j'ai trouvé utile pour moi est d'exécuter deux instances de VLC et de synchroniser leur lecture. Mais je ne peux pas faire correctement sans automatisation (les actions manuelles effectuées une par une entraînent des retards).
La solution consiste à contrôler les deux instances VLC de manière synchrone à l'aide de l'interface Web. Il peut être activé via l'interface graphique ou la console:
vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password
Pour chaque instance VLC, utilisez des ports différents. Pour contrôler la lecture, une seule commande suffit - bascule pause:
http://:[email protected]:8081/requests/status.xml?command=pl_pause"
Plus d'informations sur les commandes.
Dans ce cas, tout ce que vous avez à faire est de créer un programme / script qui envoie une requête HTTP aux deux URI simultanément. J'ai écrit un programme golang très simple pour cela (voici le code source ). JS est un autre bon candidat à cet effet. En allant plus loin, il est possible de créer plus de commandes, d'assigner des liaisons de touches globales à ce programme / script.
Le point principal que l'approche fonctionne bien.
la source