Tengo archivos de películas con varias pistas de audio (en el contenedor MKV). Quiero ver una película mientras envío un idioma a los altavoces (para los niños) y otro idioma a los auriculares (para mí), manteniendo las pistas sincronizadas si la película está en pausa, etc.
Supongamos que mi sistema ya tiene dos salidas de audio configuradas correctamente.
¿Hay alguna manera de hacer esto con un reproductor multimedia en Linux? He comprobado MPlayer y VLC hasta ahora, y solo admiten la selección de una de las pistas de audio disponibles.
linux
audio
video
media-player
Martin Vidner
fuente
fuente
:-)
Respuestas:
La idea
alias Como romper una (mariposa en la rueda). El Volar ] .
Puede transmitir localmente toda la película con todas las pistas de audio y subtítulos, por ejemplo. con
vlc
.Entonces será "suficiente" para conectar dos clientes a ese flujo, seleccionando el idioma (y / o subtítulos) y la salida de audio diferente (que suponemos que ya está configurada).
Además, con un nuevo televisor, tableta o teléfono móvil no es necesario ejecutar los clientes en la computadora ... y cuando pone en pausa el transmisor, pone en pausa todo ... y también debería funcionar con Windows (siempre asumiendo que la salida de audio ya configurada tal vez con programas de terceros, en el caso de que desee ejecutar los dos clientes en la computadora).
Algunas palabras mas
Una línea de comando de transmisión típica puede ser similar a
Se necesita la opción.
--sout-all
El ASI QUE ]Leer
vlc -H
tener algunos consejos para las otras (toneladas de) opciones disponibles.A "jugar" la corriente
donde x es el número de la transmisión de audio que desea escuchar en ese cliente.
Todo debe hacerse fácilmente desde la GUI del servidor / cliente también ...
Referencias y lecturas adicionales
Es posible que desee leer más de la página del blog de Luuk "Use VLC para reproducir múltiples clips de video en múltiples computadoras en sincronización" El 1 ] , puedes eventualmente intentar agregar pistas de audio externas a partir de esta página wiki de videolan El 2 ] , o puedes jugar con Gstreamer y diferentes salidas como lo sugiere Antonio en esta respuesta El 3 ] .
El comando Gstreamer anterior puede ser una respuesta de trabajo mínima por sí misma o una ruta para salvar la mosca (mantequilla) ...
... pero rara vez estoy tentado de defender mi propio apodo.
fuente
La solución de transmisión tiene un inconveniente: los clientes usan el caché y pueden perder la sincronización. Me pasó a mi.
Otro método para ejecutar dos pistas diferentes a la vez que me pareció útil es ejecutar dos instancias de VLC y sincronizar su reproducción. Pero no se puede hacer correctamente sin la automatización (acciones manuales hechas una por una que causan retrasos).
La solución es controlar ambas instancias de VLC de forma sincrónica mediante la interfaz web. Se puede habilitar a través de GUI o consola:
vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password
Para cada instancia de VLC use diferentes puertos. Para controlar la reproducción, un comando es suficiente - pause toggle:
http://:[email protected]:8081/requests/status.xml?command=pl_pause"
Más información en los comandos.
En ese caso, todo lo que tiene que hacer es crear un programa / script que envíe la solicitud HTTP a ambos URI simultáneamente. Escribí un programa de golang muy simple para él (aquí está el código fuente ). JS es otro buen candidato para ese propósito. Yendo más allá, es posible hacer más comandos, asignar enlaces de teclas globales a ese programa / script.
El punto principal es que el enfoque funciona bien.
fuente