Come riprodurre più video fianco a fianco sincronizzati?


37

Ho 3 video, tutti e 3 hanno lo stesso tempo, la stessa quantità di frame e differiscono solo in termini di qualità di codifica.

Ora ho bisogno che funzionino fianco a fianco in modo sincronizzato a fini di valutazione. Significato quando premo "play" ENTRAMBI! i video dovrebbero iniziare. Analogamente per stop, avanti, indietro.

Qualcuno conosce un giocatore in grado di farlo? Con questo intendo riprodurre più di un video fianco a fianco ...

Piattaforma: Win7


8
Investi in alcuni pesi delle dita e allenati a fare clic molto rapidamente.
ta.speot.is

Ti manca il punto: ho bisogno di un lettore in grado di visualizzare più di 1 video.
Grumpy ol 'Bear,

4
Penso che forse stesse scherzando ...
Joe Taylor,

puoi pianificare un'attività per aprirle tutte in una volta.
Uğur Gümüşhan,

1
"Ho 3 video" -> "quando premo" riproduci "ENTRAMBI i video dovrebbero iniziare" -> Penso che intendi dire che tutti e 3 dovrebbero iniziare?
jiggunjer,

Risposte:


10

VLC su Windows (1.1.10 o successivo):

  • Strumenti → Preferenze
  • Mostra impostazioni → Tutto
  • Fare clic su Avanzate (fare clic su Playlist per VLC 2.1.5)
  • Deseleziona "Consenti solo un'istanza in esecuzione"
  • Deseleziona "Un'istanza quando avviata dal file"

VLC su OS X non fornisce lo stesso set di opzioni. Tuttavia, è possibile eseguire più istanze dal Terminale con open -a VLC.


Questo è open -n -a vlcper Mac.
Paul Tomblin,

10
Questo non risponde alla domanda (Windows 7, non OS X). Potrebbe forse iniziare 3 video con un file batch, ma non ci sarebbe modo di metterli tutti in pausa ecc.
jiggunjer,

30

Se qualcuno è ancora interessato a questo, l'attuale versione di VLC è in grado di farlo molto bene senza alcun tipo di scripting o componente aggiuntivo. Per quanto ne so, tuttavia, è possibile riprodurre solo due file in modo sincrono, non 3.

  1. Per fare ciò basta aprire VLC e selezionare Media> Apri più file .
  2. All'interno delle finestre di più file selezionare Aggiungi per aggiungere il primo file.
  3. Dopo questo fai clic sulla casella di controllo " Mostra più opzioni " seguita dalla casella di controllo " Riproduci un altro supporto in modo sincrono " nella parte inferiore della finestra.
  4. Seleziona Sfoglia accanto a " Supporti extra " per aggiungere il secondo file.
  5. Hit play e i due file multimediali verranno riprodotti contemporaneamente con un'unica finestra di controllo.

Funziona perfettamente su OSX :)
Navin

2
funziona solo con 2 video non 3
Wakan Tanka,

2
Se vuoi 3 video, prima del passaggio 5: nella finestra Apri media, vai al campo Modifica opzioni nella parte inferiore della finestra. Nota che il tuo secondo file video è nella casella come :input-slave=file:///C:/Users/me/Documents/someVideo.mov:file-caching=300. Dopo il nome del file, inserire a #quindi il nome del file successivo nello stesso formato, ad es :input-slave=file:///C:/Users/me/Documents/someVideo.mov#file:///C:/Users/me/Documents/yetAnother.mov :file-caching=300. Quindi, quando fai clic su Riproduci, verranno riprodotti tutti e tre i file sincronizzati. Vedi riferimento: wiki.videolan.org/VLC_command-line_help
Rory

2
Non ha funzionato per la versione 3.0.5, ma ha funzionato per la versione 2.2.4.
badjr

2
Per 3.0.7 questo sembra funzionare come segue: dopo aver fatto clic su Riproduci inizia la riproduzione del video principale, fai clic con il pulsante destro del mouse su Video -> Traccia video -> Traccia 2. Questo apre una finestra separata con il secondo video. Entrambi sono controllati dai controlli nella finestra originale.
Terry Brown,

17

Bino è un lettore multimediale multipiattaforma comunemente consigliato per la riproduzione di file stereoscopici. Tra le altre funzioni, supporta la riproduzione sincronizzata di più flussi.

All'inizio l'interfaccia può sembrare un po 'primitiva o confusa, ma tutto ciò che devi fare è

  1. Trascina i tuoi due file video in Bino
  2. Selezionare l'opzione di input "Separa flussi, prima a sinistra" e l' opzione di uscita "Sinistra / destra"

Voilà, hai la riproduzione sincronizzata. Il tipo in cui un singolo set di controlli di riproduzione viene utilizzato per tutti i flussi in modo da non dover "investire in alcuni pesi delle dita e allenarsi a fare clic molto rapidamente" come suggerisce @ ta.speot.is.

Come bonus, supporta il rendering di anaglifi 3D.


2
L'OP ha chiesto di avere tre video fianco a fianco, non due. Per quanto posso vedere, Bino supporta solo due video. (Inoltre, per me l'opzione "Separate stream, left first" è disattivata)
Simon Forsberg,

2
I file devono avere le stesse dimensioni e lo stesso codice o l'opzione verrà disattivata.
Ash,

4

Dopo aver fatto ciò che Kiran ha detto, apri tutti i tuoi video ed esegui il seguente script AutoHotKey

ScriptVersion = 1.1
#Singleinstance,force

GoSub, MainProgram
return

mainprogram:
    SetTitleMatchMode, 2
    WinGet, id, list, - VLC media player,, Program Manager
    Windows = 
    Loop, %id%
    {
        StringTrimRight, this_id, id%a_index%, 0
        Windows := this_id . "," . Windows
    }
    StringTrimRight, Windows, Windows, 1

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.

    ~]::LoopControlSend(Windows, "]")
    ~[::LoopControlSend(Windows, "[")
    ~j::LoopControlSend(Windows, "j")
    ~k::LoopControlSend(Windows, "k")
    ~space::LoopControlSend(Windows, "{space}")

    ~+left::LoopControlSend(Windows, "+{left}")
    ~!left::LoopControlSend(Windows, "!{left}")
    ~^left::LoopControlSend(Windows, "^{left}")
    ~+right::LoopControlSend(Windows, "+{right}")
    ~!right::LoopControlSend(Windows, "!{right}")
    ~^right::LoopControlSend(Windows, "^{right}")
    ~^up::LoopControlSend(Windows, "^{up}")
    ~^down::LoopControlSend(Windows, "^{down}")

    ; for active windows only. use this to adjust speed when out of sync
    ~left::ActiveWindowSend(Windows, "+{left}")
    ~right::ActiveWindowSend(Windows, "+{right}")
    ~up::ActiveWindowSend(Windows, "^{left}")
    ~down::ActiveWindowSend(Windows, "^{right}")
return

LoopControlSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        Loop,Parse,Windows,CSV
        {
            if active_id <> %A_LoopField%
            {
                ControlSend, , %x%, Ahk_Id %A_LoopField%
            }
        }
    }
}

ActiveWindowSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        SendInput, %x%
    }
}

Questo script invia i tasti premuti a tutte le istanze in esecuzione di VLC media player. Non funziona se si utilizza un mouse.

Queste cose dovrebbero funzionare:

  • inoltrare: Ctrl + right / Alt + right / Shift + right
  • all'indietro: Ctrl + left / Alt + left / Shift + left
  • play pausa: space
  • accelerare: ]
  • velocizzare: [

Puoi facilmente aggiungere altre sequenze di tasti sotto la riga: ~^down::LoopControlSend(Windows, "^{down}")

Questo non sincronizza perfettamente i video, quindi puoi usare i seguenti 4 tasti: left, right, up, downper controllare solo la finestra attiva .

  • left salto all'indietro molto breve
  • right salto in avanti molto breve
  • up salto all'indietro medio
  • down salto in avanti medio

Se si preferisce scegliere manualmente i programmi, utilizzare invece il codice seguente

;Modified from MultipleSend by jgpaiva

ScriptVersion = 1.1
#Singleinstance,force

GoSub, MainProgram
return

Guiescape:
GuiClose:
    gui,destroy
    exitapp  

mainprogram:
    ;start by populating the listview.
    Gui, 1:default
    Gui, Add, Text, ,Select the windows to send the text.`nSelect several by pressing ctrl while selecting.`nAfter you've finished the selection`, press Submit.
    Gui, Add, ListView,w400 h500 vMyListView, Name of the Window | Window Class |Window ID
    WinGet, id, list,,, Program Manager
    Loop, %id%
    {
        StringTrimRight, this_id, id%a_index%, 0
        WinGetClass, this_class, ahk_id %this_id%
        WinGetTitle, this_title, ahk_id %this_id%
        If This_Title =
            continue
        if % LV_Add("",This_Title,This_Class,This_ID) = 0
            msgbox, bug
    } 
    Gui, Add, Button, default,Submit
    Gui,  Show
return

ButtonSubmit:
    NextRow := -1
    Windows =
    Loop,% LV_GetCount("Selected")
    {
    NextRow:=LV_GetNext(NextRow)
    LV_GetText(Text, NextRow,3)
    Windows := Text . "," . Windows
    }
    StringTrimRight, Windows, Windows, 1
    Gui,1:Destroy

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.

    ~]::LoopControlSend(Windows, "]")
    ~[::LoopControlSend(Windows, "[")
    ~j::LoopControlSend(Windows, "j")
    ~k::LoopControlSend(Windows, "k")
    ~space::LoopControlSend(Windows, "{space}")

    ~+left::LoopControlSend(Windows, "+{left}")
    ~!left::LoopControlSend(Windows, "!{left}")
    ~^left::LoopControlSend(Windows, "^{left}")
    ~+right::LoopControlSend(Windows, "+{right}")
    ~!right::LoopControlSend(Windows, "!{right}")
    ~^right::LoopControlSend(Windows, "^{right}")

    ~^up::LoopControlSend(Windows, "^{up}")
    ~^down::LoopControlSend(Windows, "^{down}")

    ; for active windows only. use this to adjust speed when out of sync
    ~left::ActiveWindowSend(Windows, "+{left}")
    ~right::ActiveWindowSend(Windows, "+{right}")
    ~up::ActiveWindowSend(Windows, "^{left}")
    ~down::ActiveWindowSend(Windows, "^{right}")
return

LoopControlSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        Loop,Parse,Windows,CSV
        {
            if active_id <> %A_LoopField%
            {
                ControlSend, , %x%, Ahk_Id %A_LoopField%
            }
        }
    }
}

ActiveWindowSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        SendInput, %x%
    }
}

La mucca santa AHK è incredibile. Che ne dici di questo .... diciamo che ho 14 istanze VLC che eseguono oacross due broswers .... c'è uno script che può affiancare tutti i video su entrambi i browser (quindi, in sostanza, guarda # video per schermo, risoluzione dello schermo e piastrellarli in qualche modo intelligente)?
Osso

4

Puoi farlo con mpv se non ti dispiace usare la riga di comando:

3 video fianco a fianco (impilati orizzontalmente)

inserisci qui la descrizione dell'immagine

mpv --lavfi-complex="[vid1][vid2][vid3]hstack=inputs=3[vo];[aid1][aid2][aid3]amix=inputs=3[ao]" input1.mkv --external-files="input2.mkv;input3.mkv"

2 video

mpv --lavfi-complex="[vid1][vid2]hstack[vo];[aid1][aid2]amix[ao]" input1.mkv --external-file=input2.mkv

Gli appunti

  • In Windows utilizzare ;per separare ciascun nome di file in --external-files(come mostrato nell'esempio di 3 video ). In Linux e macOS usano :. In alternativa, utilizzare due istanze di --external-file, invece, come: --external-file=input2.mkv --external-file=input3.mkv.

  • I file devono avere tutti la stessa altezza. In caso contrario, aggiungere i filtri scala, pad e / o ritaglio. Vedi la documentazione mpv e i filtri FFmpeg per maggiori informazioni.


3

google probabilmente ti ha già detto che potresti acquistare un paio di software proprietario che potrebbe farlo, ma per ogni evenienza: videocompare, tmpgenc, vidlord ...

Questo è gratuito: http://forum.doom9.org/showthread.php?t=138430

(collegamenti per il download funzionanti alla fine della discussione)

Non testato perché la mia configurazione del vino è completamente rovinata in questo momento. Non esegue la riproduzione affiancata ma in pila (a meno che tu non abbia un ottimo LCD non vedrai la stessa cosa giocando lo stesso video in due angoli opposti dello schermo)

Se pensi di aver davvero bisogno fianco a fianco, puoi usare l'avisynth per fare ciò che ha detto zimmer.

clip1 = DirectShowSource("C:\MyEncode1.foo", audio=false)
clip2 = DirectShowSource("C:\MyEncode2.foo", audio=false)
StackVertical(clip1,clip2)

(forum di riferimento.doom9.org/showthread.php?t=139769)

Non è necessario fare una codifica (che aggiungerebbe comunque i propri artefatti di codifica), basta creare un progetto che produca una codifica dei due video che giocano insieme e saltare il file.


3

Ho lo stesso problema ma finora non ho visto nessuna soluzione soddisfacente online (e credetemi di aver fatto una ricerca approfondita). Alla fine mi viene in mente la mia soluzione che non richiede $ extra. Sebbene questa sia una vecchia domanda, spero che la mia soluzione alternativa sia ancora utile.

Innanzitutto, nel lettore VLC, vai su Strumenti-> Preferenze. Assicurati di deselezionare "Consenti solo un'istanza in esecuzione" e "Pausa sull'ultimo fotogramma di un video".

Quindi, digitare / modificare i seguenti comandi in un file di testo. Apri un prompt dei comandi di Windows ed esegui i comandi copiando e incollando (oppure salva il testo ed eseguilo come file batch):

set VLCplayer="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
set VLCoptions=--repeat
set VIDEOdir="D:\path to your video directory"
set Video1="calibration1.mj2"
set Video2="calibration2.mj2"
set Video3="calibration3.mj2"

REM check the commands for misplaced spaces or missing '/' or '"' before running
ECHO cd %VIDEOdir%
ECHO %VLCplayer% %VLCoptions% %Video1%
ECHO %VLCplayer% %VLCoptions% %Video2%
ECHO %VLCplayer% %VLCoptions% %Video3%

cd %VIDEOdir%
%VLCplayer% %VLCoptions% %Video1%
%VLCplayer% %VLCoptions% %Video2%
%VLCplayer% %VLCoptions% %Video3%

Questo aprirà tre istanze VLC, ognuna con uno dei tre video e tutti riprodotti in modo molto sincronizzato, almeno per i tuoi occhi. Tuttavia, le tre istanze si sovrapporranno inizialmente. Dovrai fare clic sulla barra del titolo di ciascuna istanza per spostarli senza interrompere la riproduzione in modo da poterli vedere suonare fianco a fianco sullo schermo. Questo è piuttosto fastidioso, ma lo considero un piccolo inconveniente.

Ho provato ma non è possibile controllare tutte le istanze con i tasti di scelta rapida per stop, avanti, indietro ecc. Tuttavia, l'opzione '--repeat' metterà i video in un ciclo, quindi puoi semplicemente aspettare che ricominciano .

Per video molto lunghi, potrebbe essere meglio unire i video in una composizione affiancata in un video usando ad esempio ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html e http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Questo comando descrive solo come unire due video, ma credo (cioè non l'ho testato) che puoi eseguire il comando più volte su incorporare più file video.


1

Immagino che tu possa usare uno script AutoHotKey per inviare una scorciatoia "Play" a tutti e tre i giocatori in pochissimo tempo.

Se sono in grado di iniziare a giocare esattamente nello stesso momento è una questione diversa. Anche se sono in grado di iniziare subito, immagino che ci sarà un po 'di lotta per il disco rigido. Potrebbe voler creare un disco RAM se questa è una valutazione importante.


Ti manca il punto: ho bisogno di un lettore in grado di visualizzare più di 1 video.
Grumpy ol 'Bear,

Qualsiasi lettore multimediale in cui è possibile aprire più di un'istanza, ad esempio VLC
ta.speot. è

3
Non proprio taspeotis. Perché devo avviare manualmente ogni applicazione che a sua volta si traduce in NON sincrono.
Grumpy ol 'Bear,

-1

Molti giocatori saranno in grado di produrre un'immagine di un singolo fotogramma nel video.

Puoi scegliere più punti nei tuoi video per confrontare diversi tipi di immagine (nuvole, fumo, alberi, erba, movimento sono buoni per i confronti di codifica) e prendere gli stessi fotogrammi da ciascuno dei tuoi video.

È quindi possibile effettuare confronti su un'immagine statica anziché cercare di individuare differenze di movimento. Se lo desideri, puoi confrontare pixel per pixel.

Assicurati di non utilizzare JPG come output, poiché si tratta di un formato con perdita e introdurrà i suoi artefatti.


2
Ti manca il punto: ho bisogno di un lettore in grado di visualizzare più di 1 video.
Grumpy ol 'Bear,

1
@NoCanDo: Capisco che questa è solo un'opzione alternativa per confrontare i risultati della codifica video se non trovi una risposta adatta.
Shevek,

-1

Se questo non è qualcosa che fai molto spesso, userei un software di editing video come vegas per creare un video con tutti loro che mostrano.

Esempio di video di Youtube su come farlo.


2
Questo è un modo molto scomodo per farlo. Ancora meglio di niente finora.
Grumpy ol 'Bear,

Si prega di citare le parti essenziali della risposta dai collegamenti di riferimento, in quanto la risposta può diventare non valida se le pagine collegate cambiano.
DavidPostill
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.