2010-05-10 11:12:24 +0000 2010-05-10 11:12:24 +0000
40
40

Hoe kan ik meerdere video's naast elkaar gesynchroniseerd afspelen?

Ik heb 3 video’s, alle 3 hebben ze dezelfde tijd, hetzelfde aantal frames, en ze verschillen alleen in de encoding kwaliteit.

Nu wil ik dat ze naast elkaar lopen, gesynchroniseerd voor evaluatie doeleinden. Dat betekent dat als ik op “play” druk, BEIDE video’s moeten starten. Analoog voor stoppen, vooruit, achteruit.

Kent iemand een speler die dat kan? En daarmee bedoel ik meer dan 1 video naast elkaar afspelen…

Platform: Win7

Antwoorden (10)

32
32
32
2016-01-22 16:10:17 +0000

Als iemand hier nog in geïnteresseerd is, de huidige versie van VLC kan dit heel goed zonder enige vorm van scripting of add-on. Voor zover ik weet kun je echter maar twee bestanden synchroon afspelen, niet drie.

  1. Om dit te bereiken open je VLC en kies je Media>Meerdere bestanden openen.
  2. In het venster met meerdere bestanden selecteert u Toevoegen om het eerste bestand toe te voegen.
  3. Klik daarna op het selectievakje “Toon meer opties” gevolgd door het selectievakje “Speel een ander medium synchroon af” onderin het venster.
  4. 4. Selecteer browse naast, “ Extra media ,” om het tweede bestand toe te voegen.
  5. Druk op play en de twee mediabestanden worden gelijktijdig afgespeeld met een enkel controlevenster.
17
17
17
2013-10-02 10:43:52 +0000

Bino ](http://bino3d.org/) is een cross-platform mediaspeler die algemeen wordt aanbevolen voor het afspelen van stereoscopische bestanden. Het ondersteunt onder andere het gesynchroniseerd afspelen van meerdere streams.

De interface lijkt misschien een beetje primitief of verwarrend op het eerste, maar alles wat je hoeft te doen is

  1. Sleep uw twee video-bestanden in Bino
  2. Selecteer “Separate streams, links eerst” invoeroptie en “Links / rechts” uitvoeroptie

Voilà, je hebt gesynchroniseerd afspelen. Het soort waarbij een enkele set afspeelknoppen wordt gebruikt voor alle streams, zodat je niet hoeft te “Investeren in wat vingergewichten en jezelf trainen om heel snel te klikken” zoals @ta.speot.is suggereert.

Als bonus, het ondersteunt rendering anaglyph 3D.

13
13
13
2011-07-21 08:07:09 +0000

VLC op Windows (1.1.10 of hoger):

  • Tools → Preferences
  • Show Settings → All
  • Klik op Advanced (Klik op Playlist voor VLC 2.1.5)
  • Haal het vinkje weg bij “Allow only one running instance”
  • Haal het vinkje weg bij “Use only one instance when started from file manager”

VLC op OS X biedt niet dezelfde set opties. Je kunt echter meerdere instanties starten vanuit de Terminal met open -a VLC.

6
6
6
2018-05-24 18:47:55 +0000

Je kunt dit doen met mpv als je het niet erg vindt om de command-line te gebruiken:

3 video’s naast elkaar (horizontaal gestapeld)

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’s

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

Notes

  • In Windows gebruik je ; om elke bestandsnaam te scheiden in --external-files (zoals in het 3 video’s voorbeeld). In Linux en macOS gebruikt u :. Als alternatief, gebruik twee instanties van --external-file in plaats daarvan, zoals: --external-file=input2.mkv --external-file=input3.mkv.

  • Bestanden moeten allemaal even hoog zijn. Als ze dat niet zijn, voeg dan de schaal, pad, en/of bijsnijden filters toe. Zie de mpv documentatie en FFmpeg Filters voor meer info.

4
4
4
2014-10-18 15:33:24 +0000

Nadat je hebt gedaan wat Kiran zei, open je al je video’s en voer je het volgende AutoHotKey script uit

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%
    }
}

Dit script stuurt je toetsaanslagen naar alle draaiende instanties van VLC media player. Het werkt niet als je een muis gebruikt.

Deze dingen zouden moeten werken:

  • vooruit: Ctrl + right / Alt + right / Shift + right
  • achteruit: Ctrl + left / Alt + left / Shift + left
  • play/pause: space
  • versnellen: ]
  • snelheid omlaag: [

Je kunt gemakkelijk andere toetsaanslagen onder de lijn toevoegen: ~^down::LoopControlSend(Windows, "^{down}")

Dit synchroniseert de video’s niet perfect, dus je kunt de volgende 4 toetsen gebruiken: left, right, up, down om alleen het actieve venster te bedienen.

  • left zeer korte achterwaartse sprong
  • right zeer korte voorwaartse sprong
  • up medium achterwaartse sprong
  • down medium voorwaartse sprong

Als u de programma’s liever handmatig kiest, gebruik dan in plaats daarvan de volgende code

;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%
    }
}
3
3
3
2010-05-10 22:03:42 +0000

google heeft het je waarschijnlijk al verteld, je zou een paar proprietaire software kunnen kopen die dat kunnen, maar voor het geval dat : videocompare, tmpgenc, vidlord…

Deze is gratis : http://forum.doom9.org/showthread.php?t=138430

(werkende download links aan het eind van de thread)

Ongetest omdat mijn wine setup op dit moment compleet verpest is. Het doet geen side by side maar stacked playback (tenzij je een erg goede lcd hebt zul je toch niet hetzelfde zien door dezelfde vid in twee tegenovergestelde hoeken van het scherm af te spelen)

Als je denkt dat je echt side by side nodig hebt kun je avisynth gebruiken om te doen wat zimmer zei.

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

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

Je hoeft geen encode te maken (die toch zijn eigen encoding artefacten zou toevoegen), maak gewoon een project dat een encode zou produceren van de twee video’s die samen spelen en sla door het bestand heen.

3
3
3
2015-10-02 23:50:44 +0000

Ik heb hetzelfde probleem, maar ik heb nog geen bevredigende oplossingen online gezien (en geloof me, ik heb grondig gezocht). Eindelijk heb ik mijn eigen oplossing gevonden die geen extra $ vereist. Hoewel dit een oude vraag is, hoop ik dat mijn workaround nog steeds nuttig is.

Ten eerste, in VLC player, ga naar Tools->Voorkeuren. Zorg ervoor dat u ‘Slechts één draaiende instantie toestaan’ en ‘Pauzeren op het laatste frame van een video’ uitgevinkt hebt.

Type/bewerk dan de volgende commando’s in een tekstbestand. Open een Windows commando prompt, en voer de commando’s uit door ze te kopiëren en te plakken (of sla de tekst op en voer het uit als een batch bestand):

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%

Dit zal drie VLC instanties openen, elk met een van de drie video’s en allemaal op een zeer gesynchroniseerde manier afspelend, althans voor uw oog. Echter, de drie instanties zullen elkaar aanvankelijk overlappen. Je zult op de titelbalk van elk van de instanties moeten klikken om ze te verplaatsen zonder het afspelen te onderbreken, zodat je ze naast elkaar op je scherm kunt zien spelen. Dit is nogal vervelend, maar ik beschouw het als een heel klein ongemak.

Ik heb het geprobeerd, maar het is niet mogelijk om alle instanties te bedienen met sneltoetsen voor stop, vooruit, achteruit enz. De optie ‘–herhalen’ zal de video’s echter in een lus zetten, zodat je gewoon kunt wachten tot ze opnieuw beginnen.

Voor erg lange video’s kan het het beste zijn om de video’s in een zij-aan-zij compositie samen te voegen tot één video met behulp van bijvoorbeeld ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html an http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Dit commando beschrijft alleen hoe je twee video’s samenvoegt, maar ik geloof (ik heb het niet getest) dat je het commando meerdere keren kunt uitvoeren om meerdere videobestanden op te nemen.

1
1
1
2010-05-10 11:16:39 +0000

Ik neem aan dat je een AutoHotKey script kunt gebruiken om in zeer korte tijd een “Play” snelkoppeling naar alle drie de spelers te sturen.

Of ze op precies hetzelfde moment met spelen kunnen beginnen is een andere zaak. Zelfs als ze meteen kunnen beginnen, kan ik me voorstellen dat er wat strijd om de harde schijf zal zijn. Misschien is het beter om een RAM schijf te maken als dit een belangrijke evaluatie is.

-1
-1
-1
2010-05-10 14:02:32 +0000

Als dit niet iets is wat je vaak doet, zou ik een videobewerkingsprogramma zoals vegas gebruiken om één video te maken waarin ze allemaal te zien zijn. Youtube video voorbeeld van hoe dat te doen.

-1
-1
-1
2010-05-10 11:22:26 +0000

Veel spelers zullen in staat zijn om een beeld van een enkel frame in de video uit te voeren.

Je zou meerdere punten in je video’s kunnen kiezen om verschillende soorten beeld te vergelijken (wolken, rook, bomen, gras, beweging zijn goed voor coderingsvergelijkingen) en van elk van je video’s dezelfde frames nemen.

Je kunt dan vergelijkingen maken op een statisch beeld in plaats van te proberen verschillen in beweging te ontdekken. Als je wilt, kun je pixel voor pixel vergelijken.

Zorg er wel voor dat je geen JPG als uitvoer gebruikt, want dat is een verlieslatend formaat en introduceert zijn eigen artefacten.