Wie spiele ich mehrere Videos nebeneinander synchronisiert ab?

Ich habe 3 Videos, alle 3 haben die gleiche Zeit, die gleiche Anzahl von Frames und unterscheiden sich nur in der Codierungsqualität.

Jetzt brauche ich sie, um synchron nebeneinander zu Evaluierungszwecken zu laufen. Das heißt, wenn ich BEIDE "play" drücke! videos starten soll. Analog für Stop, vorwärts, rückwärts.

Kennt jemand einen Spieler, der dazu in der Lage ist? Damit meine ich, mehr als 1 Video nebeneinander abzuspielen...

- Plattform: Win7

Author: fixer1234, 2010-05-10

11 answers

VLC unter Windows (1.1.10 oder höher):

  • Extras → Einstellungen
  • Einstellungen anzeigen → Alle
  • Klick Advanced - (Klicken Sie auf Playlist - für VLC 2.1.5)
  • Deaktivieren Sie "Nur eine laufende Instanz zulassen"
  • Deaktivieren Sie "Nur eine Instanz verwenden, wenn Sie vom Dateimanager aus gestartet werden"

VLC unter OS X bietet nicht die gleichen Optionen. Sie können jedoch mehrere Instanzen mit open -a VLC vom Terminal aus ausführen.

 14
Author: Kiran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-02-14 20:08:48

Wenn sich noch jemand dafür interessiert, kann die aktuelle Version von VLC dies sehr gut ohne Scripting oder Add-On tun. Soweit ich weiß, können Sie jedoch nur zwei Dateien synchron abspielen, nicht 3.

  1. Um dies zu erreichen, öffnen Sie einfach VLC und wählen Sie Media>Öffnen Sie mehrere Dateien.
  2. Wählen Sie im Fenster mehrere Dateien die Option Hinzufügen, um die erste Datei hinzuzufügen.
  3. Nach diesem Klick auf die, "Show more options," Checkbox gefolgt von der, " Spielen ein anderes Medium synchron," checkbox am unteren Rand des Fensters.
  4. Wählen Sie Durchsuchen neben " Extra media", um die zweite Datei hinzuzufügen.
  5. Drücken Sie play und die beiden Mediendateien werden gleichzeitig mit einem einzigen Kontrollfenster abgespielt.
 40
Author: Tim L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-01-22 16:29:09

Bino ist ein plattformübergreifender Mediaplayer, der üblicherweise für die Wiedergabe stereoskopischer Dateien empfohlen wird. Unter anderem unterstützt es die synchronisierte Wiedergabe mehrerer Streams.

Die Schnittstelle mag zunächst etwas primitiv oder verwirrend erscheinen, aber alles, was Sie tun müssen, ist

  1. Ziehen Sie Ihre beiden Videodateien in Bino
  2. Wählen Sie "Separate streams, Links erste" input option und "Links/rechts" Ausgabe-option

Voilà, du hast ... Wiedergabe. Die Art, in der ein einzelner Satz von Wiedergabesteuerungen für alle Streams verwendet wird, sodass Sie nicht "In einige Fingergewichte investieren und sich trainieren müssen, sehr schnell zu klicken" als @ta.speot.is schlägt vor.

Als Bonus unterstützt es das Rendern von Anaglyphen 3D.

 18
Author: o.v.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-02 21:35:34

Sie können dies mit mpv wenn es Ihnen nichts ausmacht, die Befehlszeile zu verwenden:

3 Videos nebeneinander (horizontal gestapelt)

geben Sie hier die Bildbeschreibung ein

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 videos

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

Anmerkungen

  • Verwenden Sie in Windows ;, um jeden Dateinamen in --external-files zu trennen (wie im Beispiel 3 Videos gezeigt). Verwenden Sie unter Linux und macOS :. Alternativ können Sie stattdessen zwei Instanzen von --external-file verwenden, z. B.: --external-file=input2.mkv --external-file=input3.mkv.

  • Dateien müssen alle sei die gleiche Höhe. Wenn dies nicht der Fall ist, fügen Sie die Skalierungs -, Pad-und/oder Crop-Filter hinzu. Siehe die mpv Dokumentation und FFmpeg Filter für weitere Informationen.

 13
Author: llogan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-24 18:47:55

Google hat dir wahrscheinlich schon gesagt, du könntest ein paar proprietäre Software kaufen, die das könnte, aber nur für den Fall : videocompare, tmpgenc, vidlord...

Dieser ist frei: http://forum.doom9.org/showthread.php?t=138430

(funktionierende Download-Links am Ende des Threads)

Ungetestet, weil mein Wein-Setup gerade komplett verschraubt ist. Es macht nicht Seite an Seite, sondern gestapelte Wiedergabe (wenn Sie kein sehr gutes LCD haben, werden Sie nicht dasselbe sehen das gleiche Video in zwei gegenüberliegenden Ecken des Bildschirms sowieso spielen)

Wenn Sie denken, dass Sie wirklich brauchen, Seite an Seite, Sie können verwenden avisynth zu tun, was zimmer, sagte.

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

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

Sie müssen keine Kodierung durchführen (die ohnehin eigene Codierungsartefakte hinzufügen würde), sondern nur ein Projekt erstellen, das eine Kodierung der beiden Videos erzeugt, die zusammen abgespielt werden, und die Datei überspringen.

 4
Author: user36755,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-10 22:03:42

Nachdem Sie getan haben, was Kiran gesagt hat, öffnen Sie alle Ihre Videos und führen Sie das folgende AutoHotkey-Skript aus

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

Dieses Skript sendet Ihre Tastenanschläge an alle laufenden Instanzen von VLC Media Player. Es funktioniert nicht, wenn Sie eine Maus verwenden.

Diese Dinge sollten funktionieren:

  • vorwärts: Ctrl + right / Alt + right / Shift + right
  • rückwärts: Ctrl + left / Alt + left / Shift + left
  • Wiedergabe / Pause: space
  • beschleunigen: ]
  • geschwindigkeit nach unten: [

Sie können ganz einfach andere Tastenanschläge unterhalb der zeile: ~^down::LoopControlSend(Windows, "^{down}")

Dies synchronisiert die Videos nicht perfekt, sodass Sie die folgenden 4 Tasten verwenden können: left, right, up, down um das aktive Fenster nur zu steuern.

  • left sehr kurzer Rückwärtssprung
  • right sehr kurzer Vorwärtssprung
  • up mittlerer Rückwärtssprung
  • down mittlerer Vorwärtssprung

Wenn Sie die Programme lieber manuell auswählen möchten, verwenden Sie stattdessen den folgenden 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%
    }
}
 4
Author: user52874,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-10-19 00:42:46

Ich habe das gleiche problem, aber ich habe nicht gesehen, keine befriedigenden Lösungen online, so weit (und glauben Sie mir, ich hätte eine Gründliche Suche). Endlich komme ich mit meiner eigenen Lösung, die keine zusätzlichen $erfordern. Obwohl dies eine alte Frage ist, hoffe ich, dass meine Problemumgehung immer noch nützlich sein wird.

Gehen Sie zunächst in VLC Player zu Extras - >Einstellungen. Stellen Sie sicher, dass Sie das Kontrollkästchen "Nur eine laufende Instanz zulassen" und "Im letzten Bild eines Videos anhalten" deaktivieren.

Geben Sie dann die folgenden Befehle ein/bearbeiten Sie sie in einer Textdatei. Öffnen Sie eine Windows - Eingabeaufforderung und führen Sie die Befehle durch Kopieren und Einfügen aus (oder speichern Sie den Text und führen Sie ihn als Batchdatei aus):

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%

Dadurch werden drei VLC-Instanzen mit jeweils einem der drei Videos geöffnet, die zumindest für Ihr Auge sehr synchronisiert abgespielt werden. Die drei Instanzen überlappen sich jedoch zunächst gegenseitig. Sie müssen auf die Titelleiste jeder Instanz klicken, um sie zu verschieben, ohne die Wiedergabe zu unterbrechen, damit Sie sehen Sie, wie sie Seite an Seite auf Ihrem Bildschirm spielen. Das ist ziemlich ärgerlich, aber ich halte es für eine sehr kleine Unannehmlichkeit.

Ich habe es versucht, aber es ist nicht möglich, alle Instanzen mit Hotkeys für Stop, forward, backward usw. zu steuern. Die Option '--repeat' versetzt die Videos jedoch in eine Schleife, sodass Sie einfach warten können, bis sie von vorne beginnen.

Bei sehr langen Videos ist es möglicherweise am besten, die Videos in einer Side-by-Side-Komposition mit zB ffmpeg zu einem Video zusammenzuführen: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html und http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Dieser Befehl beschreibt nur, wie zwei Videos zusammengeführt werden, aber ich glaube (dh ich habe es nicht getestet), dass Sie den Befehl mehrmals ausführen können, um mehrere Videodateien zu integrieren.

 3
Author: wtong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-10-02 23:50:44

I image Sie können ein AutoHotkey-Skript verwenden, um in kürzester Zeit eine "Play" - Verknüpfung an alle drei Spieler zu senden.

Ob sie genau zur gleichen Zeit spielen können, ist eine andere Sache. Selbst wenn sie sofort anfangen können, stelle ich mir vor, dass es einige Kämpfe um die Festplatte geben wird. Möglicherweise möchten Sie eine RAM-Festplatte erstellen, wenn dies eine wichtige Auswertung ist.

 1
Author: ta.speot.is,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-10 11:16:39

Awesome Video Player kann dies mit bis zu 16 Videos (kostenpflichtig) oder bis zu 4 Videos (kostenlos) tun.

Sie können alle Videos gleichzeitig mit Space und mit den Pfeiltasten abspielen/anhalten und suchen.
Zusätzlich können Sie Tastenkombinationen verwenden, um einzelne Videos zu steuern.

Ich bin nicht mit AVP verbunden, nur ein Benutzer.

 1
Author: Saaru Lindestøkke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-10-20 17:40:17

Viele Spieler können ein Bild eines einzelnen Frames im Video ausgeben.

Sie können mehrere Punkte in Ihren Videos auswählen, um verschiedene Bildtypen zu vergleichen (Wolken, Rauch, Bäume, Gras, Bewegung eignen sich gut zum Codieren von Vergleichen) und aus jedem Ihrer Videos dieselben Bilder aufzunehmen.

Sie können dann Vergleiche auf einem statischen Bild machen, anstatt zu versuchen, Unterschiede in Bewegung zu erkennen. Sie können Pixel für Pixel vergleichen, wenn Sie möchten.

Stellen Sie sicher, dass Sie nicht verwenden JPG als Ausgabe, da dies ein verlustbehaftetes Format ist und seine eigenen Artefakte einführt.

 -1
Author: Shevek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-10 11:34:40

Wenn Sie dies nicht sehr oft tun, würde ich eine Videobearbeitungssoftware wie Vegas verwenden, um ein Video zu erstellen, in dem alle angezeigt werden.

Youtube Video Beispiel, wie das zu tun.

 -1
Author: zimmer62,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-10 14:02:32