Wie können mehrere Videos gleichzeitig abgespielt werden?


37

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

Jetzt müssen sie zu Evaluierungszwecken synchron nebeneinander ausgeführt werden. Das heißt, wenn ich BEIDE "Play" drücke! Videos sollten starten. Analog für Stopp, 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


8
Investieren Sie in einige Fingergewichte und üben Sie, sehr schnell zu klicken.
ta.speot.is

Sie verpassen den Punkt: Ich benötige einen Player, der mehr als 1 Video anzeigen kann.
Grumpy ol 'Bear

4
Ich denke, vielleicht hat er Witze gemacht ...
Joe Taylor

Sie können eine Aufgabe planen, um sie alle gleichzeitig zu öffnen.
Uğur Gümüşhan

1
"Ich habe 3 Videos" -> "Wenn ich auf" Abspielen "drücke, sollten BEIDE! Videos starten" -> Ich denke, Sie meinen, alle 3 sollten starten?
Jiggunjer

Antworten:


10

VLC unter Windows (1.1.10 oder höher):

  • Extras → Einstellungen
  • Einstellungen anzeigen → Alle
  • Klicken Sie auf Erweitert (Klicken Sie auf Wiedergabeliste für VLC 2.1.5)
  • Deaktivieren Sie "Nur eine laufende Instanz zulassen"
  • Deaktivieren Sie "Eine Instanz, wenn von Datei gestartet"

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


Das ist open -n -a vlcfür Mac.
Paul Tomblin

10
Dies beantwortet die Frage nicht (Windows 7, nicht OS X). Er könnte vielleicht 3 Videos mit einer Batch-Datei starten, aber es gäbe keine Möglichkeit, sie alle
anzuhalten

30

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

  1. Öffnen Sie dazu einfach VLC und wählen Sie Medien> Mehrere Dateien öffnen .
  2. Wählen Sie in den Fenstern mit mehreren Dateien Hinzufügen, um die erste Datei hinzuzufügen.
  3. Klicken Sie anschließend auf das Kontrollkästchen " Weitere Optionen anzeigen" und anschließend auf das Kontrollkästchen " Synchrones Abspielen eines anderen Mediums " unten im Fenster.
  4. Wählen Sie neben " Zusätzliche Medien " die Option " Durchsuchen ", um die zweite Datei hinzuzufügen.
  5. Wenn Sie auf Wiedergabe klicken, werden die beiden Mediendateien gleichzeitig mit einem einzigen Steuerungsfenster wiedergegeben.

Funktioniert perfekt unter OSX :)
Navin

2
Dies funktioniert nur für 2 Videos nicht 3
Wakan Tanka

2
Wenn Sie 3 Videos möchten, gehen Sie vor Schritt 5 im Fenster "Medien öffnen" zum Feld "Bearbeitungsoptionen" unten im Fenster. Beachten Sie, dass sich Ihre 2. Videodatei in der Box wie befindet :input-slave=file:///C:/Users/me/Documents/someVideo.mov:file-caching=300. Nach dem Dateinamen setzen Sie #dann den nächsten Dateinamen in das gleiche Format, z :input-slave=file:///C:/Users/me/Documents/someVideo.mov#file:///C:/Users/me/Documents/yetAnother.mov :file-caching=300. Wenn Sie dann auf Wiedergabe klicken, werden alle drei Dateien synchron wiedergegeben. Siehe Referenz: wiki.videolan.org/VLC_command-line_help
Rory

2
Funktionierte nicht für Version 3.0.5, aber für Version 2.2.4.
badjr

2
In 3.0.7 scheint dies wie folgt zu funktionieren: Nachdem Sie auf Wiedergabe geklickt haben, wird die Wiedergabe des Hauptvideos gestartet. Klicken Sie mit der rechten Maustaste auf Video -> Videospur -> Spur 2. Dadurch wird ein separates Fenster mit dem zweiten Video geöffnet. Sie werden beide über die Steuerelemente im Originalfenster gesteuert.
Terry Brown

17

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

Die Benutzeroberfläche mag auf den ersten Blick etwas primitiv oder verwirrend wirken, aber Sie müssen nur noch etwas tun

  1. Ziehen Sie Ihre beiden Videodateien in Bino
  2. Wählen Sie die Eingabeoption "Streams trennen, links zuerst" und die Ausgabeoption "Links / rechts"

Voilà, du hast die Wiedergabe synchronisiert. Die Art, bei der ein einzelner Satz von Wiedergabesteuerelementen für alle Streams verwendet wird, sodass Sie nicht "in einige Fingergewichte investieren und sich darin üben müssen, sehr schnell zu klicken", wie es @ ta.speot.is vorschlägt.

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


2
Das OP bat darum, drei Videos nebeneinander zu haben, nicht zwei. Soweit ich sehen kann, unterstützt Bino nur zwei Videos. (Zusätzlich ist für mich die Option "Separate Streams, left first" ausgegraut)
Simon Forsberg

2
Dateien müssen die gleiche Größe und den gleichen Code haben. Andernfalls wird die Option ausgegraut.
Asche

4

Öffnen Sie alle Ihre Videos und führen Sie das folgende AutoHotKey-Skript aus, nachdem Sie Kirans Anweisungen ausgeführt haben

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 Tastatureingaben an alle laufenden Instanzen von VLC Media Player. Es funktioniert nicht, wenn Sie eine Maus verwenden.

Diese Dinge sollten funktionieren:

  • nach vorne: Ctrl + right / Alt + right / Shift + right
  • rückwärts: Ctrl + left / Alt + left / Shift + left
  • Spielpause: space
  • beschleunigen: ]
  • verlangsamen: [

Sie können problemlos weitere Tastatureingaben unterhalb der Zeile hinzufügen: ~^down::LoopControlSend(Windows, "^{down}")

Dadurch werden die Videos nicht perfekt synchronisiert, sodass Sie die folgenden 4 Tasten verwenden können: Nurleft, right, up, down das aktive Fenster steuern .

  • left Sehr kurzer Rücksprung
  • right Sehr kurzer Vorwärtssprung
  • up mittlerer Rücksprung
  • 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%
    }
}

Heilige Kuh AHK ist unglaublich. Wie wäre es damit? Nehmen wir an, ich habe 14 VLC-Instanzen, die über zwei Browser ausgeführt werden. Gibt es ein Skript, das alle Videos über beide Browser hinweg kacheln kann? sie auf intelligente Weise kacheln)?
Tbone

4

Sie können dies mit mpv tun, wenn Sie nichts dagegen haben, die Befehlszeile zu verwenden:

3 Videos nebeneinander (horizontal gestapelt)

Bildbeschreibung hier eingeben

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

  • In Windows verwenden Sie ;, um jeden Dateinamen in zu trennen --external-files(wie im 3-Video- Beispiel gezeigt). In Linux und MacOS verwenden :. Alternativ können Sie --external-filestattdessen zwei Instanzen verwenden, z --external-file=input2.mkv --external-file=input3.mkv.

  • Dateien müssen alle die gleiche Höhe haben. Ist dies nicht der Fall, fügen Sie die Skalierungs-, Pad- und / oder Zuschneidefilter hinzu. Weitere Informationen finden Sie in der mpv-Dokumentation und in den FFmpeg-Filtern .


3

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

Dies ist kostenlos: http://forum.doom9.org/showthread.php?t=138430

(funktionierende Download-Links am Ende des Threads)

Ungetestet, weil mein Weinsetup gerade komplett verschraubt ist. Es wird nicht nebeneinander, sondern gestapelt wiedergegeben (es sei denn, Sie haben einen sehr guten LCD-Bildschirm, sehen Sie sowieso nicht dasselbe, wenn Sie dasselbe Video in zwei gegenüberliegenden Ecken des Bildschirms abspielen).

Wenn Sie glauben, dass Sie wirklich nebeneinander brauchen, können Sie avisynth verwenden, um das 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 Codierung vornehmen (die ohnehin ihre eigenen Codierungsartefakte hinzufügt), sondern nur ein Projekt erstellen, das eine Codierung der beiden Vids erstellt, die zusammen abgespielt werden, und die Datei überspringen.


3

Ich habe das gleiche Problem, aber noch keine zufriedenstellenden Lösungen online gesehen (und glauben Sie mir, ich hatte eine gründliche Suche durchgeführt). Endlich habe ich eine eigene Lösung, die keine zusätzlichen $ erfordert. Obwohl dies eine alte Frage ist, hoffe ich, dass meine Problemumgehung weiterhin nützlich ist.

Gehen Sie zunächst im VLC-Player zu Extras-> Einstellungen. Deaktivieren Sie "Nur eine laufende Instanz zulassen" und "Im letzten Frame eines Videos anhalten".

Geben Sie dann die folgenden Befehle in eine Textdatei ein bzw. bearbeiten Sie sie. Ö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 geöffnet, von denen jede eines der drei Videos enthält und die zumindest für Ihr Auge sehr synchron wiedergegeben werden. Die drei Instanzen überlappen sich jedoch zunächst. Sie müssen auf die Titelleiste jeder Instanz klicken, um sie zu verschieben, ohne die Wiedergabe zu unterbrechen, damit Sie sie nebeneinander auf Ihrem Bildschirm sehen können. Das ist ziemlich ärgerlich, aber ich halte es für eine sehr kleine Unannehmlichkeit.

Ich habe versucht, aber es ist nicht möglich, alle Instanzen mit Hotkeys für Stopp, Vorwärts, Rückwärts usw. zu steuern. Die Option "--repeat" versetzt die Videos jedoch in eine Schleife, sodass Sie nur darauf warten können, dass sie von vorne beginnen .

Bei sehr langen Videos ist es möglicherweise am besten, die Videos in einer Nebeneinander-Komposition mit 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 das Zusammenführen von zwei Videos, aber ich glaube, dass Sie den Befehl mehrmals ausführen können (dh ich habe ihn nicht getestet) Einbindung mehrerer Videodateien.


1

In diesem Fall können Sie ein AutoHotKey-Skript verwenden, um innerhalb kürzester Zeit eine "Play" -Verknüpfung an alle drei Player zu senden.

Ob sie genau zur gleichen Zeit anfangen können, ist eine andere Frage. Selbst wenn sie sofort loslegen können, kann ich mir vorstellen, dass ein Kampf um die Festplatte bevorsteht. Möglicherweise möchten Sie eine RAM-Disk erstellen, wenn dies eine wichtige Bewertung ist.


Sie verpassen den Punkt: Ich benötige einen Player, der mehr als 1 Video anzeigen kann.
Grumpy ol 'Bear

Jeder Mediaplayer, auf dem Sie mehrere Instanzen öffnen können, z. B. VLC
ta.speot.ist

3
Nicht wirklich Taspeotis. Weil ich jede Anwendung manuell starten muss, was wiederum zu NICHT synchron führt.
Mürrischer alter Bär

-1

Viele Player 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 sind gut für die Codierung von Vergleichen) und aus jedem Ihrer Videos dieselben Frames zu erstellen.

Sie können dann Vergleiche mit einem statischen Bild anstellen, anstatt Unterschiede in der Bewegung festzustellen. Sie können Pixel für Pixel vergleichen, wenn Sie möchten.

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


2
Sie verpassen den Punkt: Ich benötige einen Player, der mehr als 1 Video anzeigen kann.
Grumpy ol 'Bear

1
@NoCanDo: Ich verstehe, dass dies nur eine alternative Option für Sie ist, um die Ergebnisse der Videokodierung zu vergleichen, falls Sie keine passende Antwort finden.
Shevek

-1

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

Youtube Video Beispiel, wie das geht.


2
Das ist ein sehr unpraktischer Weg. Immer noch besser als gar nichts.
Grumpy ol 'Bear

Bitte zitieren Sie die wesentlichen Teile der Antwort aus dem / den Verweis (en), da die Antwort ungültig werden kann, wenn sich die verlinkte (n) Seite (n) ändern.
DavidPostill
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.