Come riprodurre un film ascoltando due tracce audio contemporaneamente?


10

Ho file di film con più tracce audio (nel contenitore MKV). Voglio guardare un film mentre invio una lingua agli altoparlanti (per i bambini) e un'altra lingua alle cuffie (per me stesso), mantenendo i brani sincronizzati se il film è in pausa, ecc.

Supponiamo che il mio sistema abbia già due uscite audio configurate correttamente.

C'è un modo per farlo con un lettore multimediale in Linux? Finora ho controllato MPlayer e VLC e supportano solo la selezione di una delle tracce audio disponibili.


1
Stai ponendo una domanda fuori tema (acquisto di software). Le domande che richiedono consigli su prodotti, servizi o materiale di apprendimento sono fuori tema. Vedi argomento . Prova softwarerecs.stackexchange.com ma prima leggi cosa è necessario per una domanda che contenga "informazioni sufficienti" .
DavidPostill

Forse potresti ricodificare il file, combinando entrambi i flussi audio in uno solo. Quindi, se uno è 5.1 e l'altro è stereo, avresti un flusso a 8 canali. Puoi mappare questi canali su diversi dispositivi di output usando Soundflower su OS X, ma non conosco Linux. Sembra molto scomodo. Puoi anche utilizzare qualcosa come Adobe Premiere o un altro NLE per mappare tracce audio diverse su output diversi.
Elliott B,

Temo che i "bambini" _ abbiano già imparato l'altra lingua ... almeno spero. :-)
Hastur,

Potresti anche mescolare le tracce audio in stereo, quindi inserirle tutte in una traccia audio 5.1 (ignorando i canali centrale / subwoofer), e poi riunirle nel film. Quindi puoi riprodurlo su qualsiasi scheda audio 5.1, basta collegare cuffie e altoparlanti all'uscita appropriata.
JonasCz - Ripristina Monica il

Risposte:


3

L'idea

aka Come rompere una mosca (burro) sulla ruota [ Vola ] .

Puoi eseguire lo streaming locale dell'intero film con tutte le tracce audio e dei sottotitoli, ad es vlc. Con .
Quindi sarà "sufficiente" connettere due client a quello stream, selezionando la lingua (e / o i sottotitoli) e la diversa uscita audio (che presumiamo già configurata).

Inoltre con un nuovo televisore, tablet o telefono cellulare non è necessario eseguire i client sul computer ... e quando metti in pausa lo streamer metti in pausa tutto ... e dovrebbe funzionare anche con Windows (sempre assunto l'uscita audio già configurata forse con programmi di terze parti, nel caso in cui si desideri eseguire i due client sul computer).

Qualche parola in più

Una tipica riga di comando di streaming può essere simile a

vlc "movie.mkv" --sout-all --sout="#rtp{dst=239.255.100.100,port=5004,mux=ts}"

È necessaria l'opzione --sout-all [ SO ]

 --sout-all, --no-sout-all  Enable streaming of all ES (default disabled)
 Stream all elementary streams (video, audio and subtitles) (default disabled)

Leggi vlc -Hper avere alcuni suggerimenti per le altre (tonnellate di) opzioni disponibili.

Per "riprodurre" il flusso

vlc rtp://239.255.100.100:5004  --audio-track=x

dove x è il numero del flusso audio che si desidera ascoltare su quel client.
Tutto dovrebbe essere facilmente eseguito anche dalla GUI del server / client ...

Riferimenti e ulteriori letture
Potresti voler leggere di più dalla pagina del blog di Luuk "Usa VLC per riprodurre più videoclip su più computer in sincronia" [ 1 ] , puoi eventualmente provare ad aggiungere una traccia audio esterna a partire da questa pagina wiki di videolan [ 2 ] , oppure puoi giocare con Gstreamer e output diversi come suggerito da Antonio in questa risposta [ 3 ] .

GStreamer:
# Il numero e l'ordine delle tracce devono essere conosciuti ...

gst-launch-1.0 \
filesrc location=example.mkv ! decodebin name=decoded \
decoded.src_0 ! queue ! autovideosink \
decoded.src_1 ! queue ! audioconvert ! alsasink device=”hw:1,0″ \
decoded.src_2 ! queue ! audioconvert ! alsasink device=”hw:2,0″

Il comando Gstreamer sopra può essere una risposta minima al lavoro da solo o un percorso per salvare la mosca (burro) ...
... ma raramente sono tentato di difendere il mio soprannome.


Si noti che l'IP RST deve essere compreso nell'intervallo da 224.0.0.0 a 239.255.255.255 (intervallo IP multicast) o non sarà possibile connettersi a un altro client. Sembra che tale IP funzionerà.
chx,

Fammi sapere se l'idea funziona con l'altro tuo problema ...
Hastur,

Sì lo fa! L'ho scritto su superuser.com/a/1422462/41259 ma ho pensato che valesse la pena menzionare questo dettaglio.
chx,

0

La soluzione di streaming presenta uno svantaggio: i client utilizzano la cache e possono andare fuori sincrono. È successo a me.

Un altro approccio per eseguire contemporaneamente due tracce diverse che ho trovato utile per me stesso è eseguire due istanze di VLC e sincronizzare la loro riproduzione. Ma non posso essere eseguito correttamente senza automazione (azioni manuali eseguite una a una che causano ritardi).

La soluzione è controllare entrambe le istanze VLC in modo sincrono utilizzando l'interfaccia Web. Può essere abilitato tramite GUI o console:

vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password

Per ogni istanza VLC utilizzare porte diverse. Per controllare la riproduzione è sufficiente un comando: attiva / disattiva la pausa: http://:any_password@127.0.0.1:8081/requests/status.xml?command=pl_pause"

Maggiori informazioni sui comandi.

In tal caso, tutto ciò che devi fare è creare un programma / script che invii contemporaneamente una richiesta HTTP a entrambi gli URI. Ho scritto un programma Golang molto semplice per questo (ecco il codice sorgente ). JS è un altro buon candidato a tale scopo. Andando oltre è possibile effettuare più comandi, assegnare le combinazioni di tasti globali a quel programma / script.

Il punto principale che l'approccio funziona bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.