Comment lire plusieurs vidéos côte à côte synchronisées?

37

J'ai 3 vidéos, toutes les 3 ont le même temps, le même nombre d'images, et elles ne diffèrent que par la qualité de l'encodage.

Maintenant, j'ai besoin qu'ils fonctionnent côte à côte de manière synchronisée à des fins d'évaluation. Cela signifie quand j'appuie sur "play" BOTH! les vidéos devraient commencer. Analogiquement pour stopper, avancer, reculer.

Quelqu'un sait-il un joueur capable de faire ça? J'entends par là jouer plus d'une vidéo côte à côte ...

Plate-forme: Win7

Ours Grincheux
la source
8
Investissez dans des haltères et entraînez-vous à cliquer très rapidement.
ta.speot.is
Vous manquez le point: j'ai besoin d'un lecteur capable d'afficher plus d'une vidéo.
Grumpy ol 'Bear
4
Je pense qu'il plaisantait peut-être ...
Joe Taylor
vous pouvez planifier une tâche pour toutes les ouvrir en même temps.
Uğur Gümüşhan
1
"J'ai 3 vidéos" -> "quand j'appuie sur" play ", les deux vidéos devraient commencer" -> Je pense que vous voulez dire que les 3 devraient commencer?
Jiggunjer

Réponses:

10

VLC sous Windows (1.1.10 ou ultérieur):

  • Outils → Préférences
  • Afficher les paramètres → Tous
  • Cliquez sur Avancé (Cliquez sur Liste de lecture pour VLC 2.1.5)
  • Décochez "Autoriser une seule instance en cours d'exécution"
  • Décochez la case "Une instance au démarrage du fichier"

VLC sur OS X ne fournit pas le même ensemble d’options. Vous pouvez toutefois exécuter plusieurs instances à partir du terminal avec open -a VLC.

Kiran
la source
C'est open -n -a vlcpour Mac.
Paul Tomblin
10
Cela ne répond pas à la question (Windows 7, pas OS X). Il pourrait peut-être commencer 3 vidéos avec un fichier batch, mais il n'y aurait aucun moyen de toutes les mettre en pause, etc.
jiggunjer
30

Si cela vous intéresse toujours, la version actuelle de VLC est capable de le faire très bien sans script ou add-on. Pour autant que je sache, vous ne pouvez lire que deux fichiers simultanément, pas 3.

  1. Pour ce faire, ouvrez simplement VLC et sélectionnez Média> Ouvrir plusieurs fichiers .
  2. Dans les fenêtres de fichiers multiples, sélectionnez Ajouter pour ajouter le premier fichier.
  3. Après cela, cliquez sur la case à cocher " Afficher plus d'options ", suivie de la case " Lire un autre support de manière synchrone ", en bas de la fenêtre.
  4. Sélectionnez parcourir en regard de " Extra media " pour ajouter le deuxième fichier.
  5. Appuyez sur Lecture et les deux fichiers multimédias seront lus simultanément avec une seule fenêtre de contrôle.
Tim L
la source
Fonctionne parfaitement sur OSX :)
Navin
2
cela ne fonctionne que pour 2 vidéos et non 3
Wakan Tanka
2
Si vous souhaitez 3 vidéos, avant l'étape 5: dans la fenêtre Ouvrir un média, accédez au champ Options d'édition en bas de la fenêtre. Notez que votre deuxième fichier vidéo est dans la boîte comme :input-slave=file:///C:/Users/me/Documents/someVideo.mov:file-caching=300. Après le nom de fichier, mettez #le nom de fichier suivant dans le même format, par exemple :input-slave=file:///C:/Users/me/Documents/someVideo.mov#file:///C:/Users/me/Documents/yetAnother.mov :file-caching=300. Ensuite, lorsque vous cliquez sur Lecture, les trois fichiers sont synchronisés. Voir la référence: wiki.videolan.org/VLC_command-line_help
Rory
2
Ne fonctionnait pas pour la version 3.0.5, mais cela fonctionnait pour la version 2.2.4.
Badjr
2
Pour la version 3.0.7, cela semble fonctionner comme suit - après avoir cliqué sur Lire la lecture de la vidéo principale, cliquez avec le bouton droit de la souris sur Vidéo -> Piste vidéo -> Piste 2. Cela ouvre une fenêtre séparée avec la deuxième vidéo. Ils sont tous deux contrôlés par les commandes de la fenêtre d'origine.
Terry Brown
17

Bino est un lecteur multimédia multiplate-forme généralement recommandé pour la lecture de fichiers stéréoscopiques. Entre autres fonctionnalités, il prend en charge la lecture synchronisée de plusieurs flux.

L’interface peut sembler un peu primitive ou déroutante au début, mais tout ce que vous avez à faire est

  1. Faites glisser vos deux fichiers vidéo dans Bino
  2. Sélectionnez « courants séparés, d' abord à gauche » option d'entrée et « gauche / droite » option de sortie

Voilà, vous avez la lecture synchronisée. Le type où un seul jeu de commandes de lecture est utilisé pour tous les flux, de sorte que vous n’ayez pas à "investir dans des haltères et à vous entraîner à cliquer très rapidement", comme le suggère @ ta.speot.is.

En prime, il prend en charge le rendu 3D d'anaglyphe.

ov
la source
2
Le PO a demandé à avoir trois vidéos côte à côte, pas deux. Autant que je sache, Bino ne prend en charge que deux vidéos. (En outre, l'option "Séparer les flux, partie la plus à gauche" est grisée pour moi
Simon Forsberg
2
Les fichiers doivent avoir la même taille et le même code, sinon l'option sera grisée.
Cendres
4

Après avoir suivi les instructions de Kiran, ouvrez toutes vos vidéos et exécutez le script AutoHotKey suivant.

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

Ce script envoie vos frappes sur toutes les instances du lecteur multimédia VLC en cours d’exécution. Cela ne fonctionne pas si vous utilisez une souris.

Ces choses devraient fonctionner:

  • vers l'avant: Ctrl + right / Alt + right / Shift + right
  • en arrière: Ctrl + left / Alt + left / Shift + left
  • jouer pause: space
  • accélérer: ]
  • ralentir: [

Vous pouvez facilement ajouter d'autres frappes au-dessous de la ligne: ~^down::LoopControlSend(Windows, "^{down}")

Cela ne synchronise pas parfaitement les vidéos, vous pouvez donc utiliser les 4 touches suivantes: left, right, up, downpour contrôler uniquement la fenêtre active .

  • left saut en arrière très court
  • right saut très court en avant
  • up saut en arrière moyen
  • down saut moyen

Si vous préférez choisir les programmes manuellement, utilisez plutôt le code suivant

;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%
    }
}
utilisateur52874
la source
Holy Cow AHK est incroyable. Que diriez-vous de cela .... disons que j’ai 14 instances de VLC exécutant deux outils de discussion ... existe-t-il un script qui permet d’afficher en mosaïque toutes les vidéos sur les deux navigateurs (regardez donc # vidéos par écran, résolution de l’écran, etc.)? les tuile d'une manière intelligente)?
tbone
4

Vous pouvez le faire avec mpv si cela ne vous dérange pas d'utiliser la ligne de commande:

3 vidéos côte à côte (empilées horizontalement)

entrez la description de l'image ici

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 vidéos

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

Remarques

  • Sous Windows, ;séparez chaque nom de fichier dans --external-files(comme indiqué dans l' exemple des 3 vidéos ). Sous Linux et macOS, utilisez :. Vous pouvez également utiliser deux instances de la --external-fileplace tels que: --external-file=input2.mkv --external-file=input3.mkv.

  • Les fichiers doivent tous avoir la même hauteur. Si ce n'est pas le cas, ajoutez les filtres d'échelle, de tampon et / ou de coupe. Reportez-vous à la documentation mpv et aux filtres FFmpeg pour plus d'informations.

llogan
la source
3

Google vous a probablement déjà dit, vous pourriez acheter un logiciel propriétaire qui pourrait le faire, mais juste au cas où: vidéocompare, tmpgenc, vidlord ...

Celui-ci est gratuit: http://forum.doom9.org/showthread.php?t=138430

(liens de téléchargement de travail à la fin du fil)

Non testé car mon vin est complètement foutu en ce moment. Il ne fait pas la lecture côte à côte mais empilée (sauf si vous avez un très bon écran LCD, vous ne verrez pas la même chose en lisant la même vidéo dans les deux coins opposés de l'écran)

Si vous pensez avoir vraiment besoin d’être côte à côte, vous pouvez utiliser avisynth pour faire ce que dit zimmer.

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

(référence forum.doom9.org/showthread.php?t=139769)

Vous n'avez pas besoin de faire un encodage (qui ajouterait de toute façon ses propres artefacts d'encodage), mais de créer un projet qui produirait un encodage des deux disques joués en même temps et ignorant le fichier.

utilisateur36755
la source
3

J'ai le même problème mais je n'ai pas encore vu de solution satisfaisante en ligne (et croyez-moi, j'ai effectué une recherche approfondie). Enfin, je propose ma propre solution, qui ne nécessite pas de frais supplémentaires. Bien que cette question soit ancienne, j'espère que ma solution de contournement sera toujours utile.

Tout d’abord, dans VLC Player, allez dans Outils-> Préférences. Assurez-vous de décocher "Autoriser une seule instance en cours d'exécution" et "Suspendre sur la dernière image d'une vidéo".

Ensuite, tapez / modifiez les commandes suivantes dans un fichier texte. Ouvrez une invite de commande Windows et exécutez les commandes par copier-coller (ou enregistrez le texte et exécutez-le en tant que fichier de traitement par lots):

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%

Cela ouvrira trois instances de VLC, chacune avec l'une des trois vidéos et jouant toutes de manière très synchronisée, au moins à vos yeux. Cependant, les trois instances se chevaucheront initialement. Vous devrez cliquer sur la barre de titre de chaque instance pour les déplacer sans interrompre la lecture et les voir jouer côte à côte sur votre écran. C’est plutôt agaçant, mais j’estime qu’il s’agit d’un très petit inconvénient.

J'ai essayé, mais il n'est pas possible de contrôler toutes les instances à l'aide de touches rapides pour arrêter, avancer, reculer, etc. Cependant, l'option '--repeat' mettra les vidéos en boucle, vous pouvez donc attendre qu'elles recommencent. .

Pour de très longues vidéos, il peut être préférable de fusionner les vidéos d'une composition côte à côte en une seule vidéo, par exemple avec ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html et http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Cette commande décrit uniquement comment fusionner deux vidéos, mais je crois (c.-à-d. que je ne l'ai pas testée) que vous pouvez exécuter la commande plusieurs fois pour incorporer plusieurs fichiers vidéo.

wtong
la source
1

Je pense que vous pouvez utiliser un script AutoHotKey pour envoyer un raccourci "Lecture" aux trois joueurs en très peu de temps.

Qu'ils soient capables de commencer à jouer exactement au même moment est une autre affaire. Même s’ils sont capables de commencer tout de suite, j’imagine qu’il faudra se battre pour le disque dur. Vous voudrez peut-être créer un disque virtuel s'il s'agit d'une évaluation importante.

ta.speot.is
la source
Vous manquez le point: j'ai besoin d'un lecteur capable d'afficher plus d'une vidéo.
Grumpy ol 'Bear
Tout lecteur multimédia dans lequel vous pouvez ouvrir plusieurs instances, par exemple VLC
ta.speot.is
3
Pas vraiment taspeotis. Parce que je dois démarrer manuellement chaque application, ce qui à son tour se traduit par NON synchrone.
Grumpy ol 'Bear
-1

De nombreux lecteurs seront en mesure de produire une image d'une seule image dans la vidéo.

Vous pouvez choisir plusieurs points dans vos vidéos pour comparer différents types d’images (nuages, fumée, arbres, herbe, mouvement, etc.) et prendre les mêmes images pour chacune de vos vidéos.

Vous pouvez ensuite faire des comparaisons sur une image statique plutôt que d'essayer de repérer des différences en mouvement. Vous pouvez comparer pixel par pixel si vous le souhaitez.

Assurez-vous de ne pas utiliser JPG comme sortie, car il s’agit d’un format avec perte qui introduit ses propres artefacts.

Shevek
la source
2
Vous manquez le point: j'ai besoin d'un lecteur capable d'afficher plus d'une vidéo.
Grumpy ol 'Bear
1
@NoCanDo: Je comprends que ce n'est qu'une option alternative pour comparer les résultats de codage vidéo si vous ne trouvez pas de réponse appropriée.
Shevek
-1

Si ce n'est pas quelque chose que vous faites souvent, j'utiliserais un logiciel de montage vidéo comme Vegas pour créer une vidéo avec la totalité de celle-ci.

Exemple vidéo Youtube sur la façon de faire cela.

zimmer62
la source
2
C'est une façon très peu pratique de faire cela. Encore mieux que rien jusqu'à présent.
Grumpy ol 'Bear
Veuillez citer les parties essentielles de la réponse à partir du (des) lien (s) de référence, car la réponse peut devenir invalide si la ou les pages liées changent.
DavidPostill