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

Comment lire plusieurs vidéos côte à côte de manière synchronisée ?

J'ai trois vidéos, toutes les trois ont le même temps, la même quantité d'images, et elles ne diffèrent qu'en termes de qualité d'encodage.

Maintenant, j'ai besoin qu'elles tournent côte à côte de manière synchronisée à des fins d'évaluation. Cela signifie que lorsque j'appuie sur “play”, les DEUX vidéos devraient démarrer. Analogiquement pour l'arrêt, l'avant, l'arrière.

Quelqu'un connaît un lecteur capable de faire ça ? J'entends par là la lecture de plus d'une vidéo côte à côte…

Plate-forme : Win7

Réponses (10)

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

Si cela intéresse toujours quelqu'un, la version actuelle de VLC est capable de le faire très bien sans aucune sorte de script ou d'add-on. Pour autant que je sache, vous ne pouvez lire que deux fichiers de manière synchrone, et non trois. Pour ce faire, il suffit d'ouvrir VLC et de sélectionner Media>Open Multiple Files.
2. Dans les fenêtres de fichiers multiples, sélectionnez “add” pour ajouter le premier fichier.
3. Après cela, cliquez sur la case à cocher “ Afficher plus d'options ”, puis sur la case à cocher “ Lecture synchrone d'un autre média ”, en bas de la fenêtre.
4. Sélectionnez “Browse” à côté de “Extra media” pour ajouter le deuxième fichier.
5. Appuyez sur play et les deux fichiers multimédia seront lus simultanément avec une seule fenêtre de contrôle.

17
17
17
2013-10-02 10:43:52 +0000

Bino est un lecteur multimédia multiplateforme communément recommandé pour la lecture stéréoscopique de fichiers. Entre autres caractéristiques, 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 il suffit de faire glisser vos deux fichiers vidéo dans Bino 2. Sélectionnez “Flux séparés, gauche d'abord” option d'entrée et “Gauche/droite” option de sortie

Voilà, vous avez une lecture synchronisée. Le genre où un seul ensemble de commandes de lecture est utilisé pour tous les flux afin que vous n'ayez pas à “Investir dans des poids de doigts et vous entraîner à cliquer très rapidement” comme le suggère @ta.speot.is.

En bonus, il prend en charge le rendu de l'anaglyphe 3D.

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

VLC sous Windows (1.1.10 ou supérieur) :

  • Outils → Préférences
  • Afficher les paramètres → Tous
  • Cliquer Avancé (Cliquer Liste de lecture pour VLC 2.1.5)
  • Décocher “Autoriser une seule instance d'exécution”
  • Décocher “Utiliser une seule instance au démarrage du gestionnaire de fichiers”

VLC sous OS X ne fournit pas le même ensemble d'options. Vous pouvez cependant exécuter plusieurs instances à partir du Terminal avec open -a VLC.

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

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)

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
  • *

Notes

  • Sous Windows, utilisez ; pour séparer chaque nom de fichier en --external-files (comme indiqué dans l'exemple 3 vidéos). Sous Linux et MacOS, utilisez :. Vous pouvez également utiliser deux instances de --external-file à la place, comme par exemple : --external-file=input2.mkv --external-file=input3.mkv.

  • Les fichiers doivent tous avoir la même hauteur. S'ils ne le sont pas, ajoutez l'échelle, le pad et/ou les filtres de recadrage. Voir la documentation mpv et FFmpeg Filters pour plus d'informations.

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

Après avoir fait ce que Kiran a dit, ouvrez toutes vos vidéos et lancez 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 à toutes les instances en cours du lecteur multimédia VLC. Il ne fonctionne pas si vous utilisez une souris.

Ces choses devraient fonctionner :

  • en avant : Ctrl + right / Alt + right / Shift + right
  • en arrière : Ctrl + left / Alt + left / Shift + left
  • lecture/pause : space
  • accélérer : ]
  • réduire la vitesse : [

Vous pouvez facilement ajouter d'autres frappes en 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, down pour contrôler la fenêtre active uniquement.

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

Si vous préférez choisir les programmes manuellement, utilisez le code suivant à la place

;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 vous l'a probablement déjà dit, vous pourriez acheter quelques logiciels propriétaires qui pourraient faire cela, mais juste au cas où : videocompare, tmpgenc, vidlord…

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

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

Non testé car mon installation de vin est complètement foutue pour le moment. Il ne fait pas de lecture côte à côte mais en pile (à moins d'avoir un très bon lcd, vous ne verrez pas la même chose en jouant la même vidéo dans deux coins opposés de l'écran de toute façon)

Si vous pensez que vous avez vraiment besoin de la lecture côte à côte, vous pouvez utiliser avisynth pour faire ce que zimmer a dit.

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), il suffit de faire un projet qui produirait un encodage des deux vidéos jouant ensemble et de passer le fichier.

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

J'ai le même problème mais je n'ai pas trouvé de solution satisfaisante en ligne jusqu'à présent (et croyez-moi, j'ai fait une recherche approfondie). J'ai enfin trouvé 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 le lecteur VLC, allez dans Outils->Préférences. Veillez à décocher les cases “Autoriser une seule instance en cours d'exécution” et “Faire une pause 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 fichier 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 VLC, chacune avec l'une des trois vidéos et toutes jouant de manière très synchronisée, du moins à vos yeux. Toutefois, les trois instances se chevaucheront au départ. Vous devrez cliquer sur la barre de titre de chacune des instances pour les déplacer sans interrompre la lecture afin de les voir jouer côte à côte sur votre écran. C'est assez ennuyeux mais je considère que c'est un très petit inconvénient.

J'ai essayé mais il n'est pas possible de contrôler toutes les instances avec des touches de raccourci pour arrêter, avancer, reculer, etc. Cependant, l'option “–repeat” met les vidéos en boucle, vous pouvez donc attendre qu'elles recommencent.

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

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

J'imagine que vous pouvez utiliser un script AutoHotKey pour envoyer un raccourci “Play” aux trois joueurs en très peu de temps.

Qu'ils puissent 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 y aura des combats pour le disque dur. Il serait bon de faire un disque RAM si c'est une évaluation importante.

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

Si ce n'est pas quelque chose que vous faites très souvent, j'utiliserais un logiciel de montage vidéo comme celui de Vegas pour construire une vidéo avec toutes les images. Youtube video example of how to do that.

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

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

Vous pourriez choisir plusieurs points dans vos vidéos pour comparer différents types d'images (les nuages, la fumée, les arbres, l'herbe, le mouvement sont bons pour les comparaisons d'encodage) et prendre les mêmes images de chacune de vos vidéos.

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

Assurez-vous de ne pas utiliser le JPG comme sortie, car c'est un format avec perte et qui introduit ses propres artefacts.