Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've got 3 videos, all 3 have the same time, same amount of frames, and they only differ in terms of encoding quality.

Now I need them to run side-by-side in synchronized fashion for evaluation purposes. Meaning when I press "play" BOTH! videos should start. Analogically for stop, forward, backward.

Anyone know any player capable of doing that? By that I mean playing more than 1 video side-by-side...

Platform: Win7

share|improve this question
5  
Invest in some finger weights and train yourself to click very quickly. – ta.speot.is May 10 '10 at 11:15
    
You're missing the point: I need a player capable of displaying more than 1 video. – Grumpy ol' bear May 10 '10 at 15:28
2  
I think perhaps he was joking... – Joe Taylor Jul 21 '11 at 8:13
    
you can schedule a task to open them all at once. – Uğur Gümüşhan Feb 13 '13 at 23:33
    
"I've got 3 videos" -> "when I press "play" BOTH! videos should start" -> I think you mean all 3 should start? – jiggunjer Dec 9 '15 at 1:49

12 Answers 12

up vote 8 down vote accepted

VLC on Windows (1.1.10 or later):

  • Tools → Preferences
  • Show Settings → All
  • Click Advanced (Click Playlist for VLC 2.1.5)
  • Uncheck "Allow only one running instance"
  • Uncheck "One instance when started from file"

VLC on OS X does not provide the same set of options. You can however run multiple instances from the Terminal with open -a VLC.

share|improve this answer
    
That's open -n -a vlc for Mac. – Paul Tomblin Oct 29 '15 at 1:49
4  
This doesn't answer the question (windows 7, not OS X). He could maybe start 3 videos with a batch file, but there would be no way to pause them all etc. – jiggunjer Dec 9 '15 at 2:10

Bino is a cross-platform media player commonly recommended for stereoscopic file playback. Among other features, it supports synchronized playback of multiple streams.

The interface may seem a bit primitive or confusing at first, but all you need to do is

  1. Drag your two video files into Bino
  2. Select "Separate streams, left first" input option and "Left/right" output option

Voilà, you got synchronized playback. The kind where a single set of playback controls is used for all streams so you wouldn't have to "Invest in some finger weights and train yourself to click very quickly" as @ta.speot.is suggests.

As a bonus, it supports rendering anaglyph 3D.

share|improve this answer
    
The OP asked for having three videos side-by-side, not two. As far as I can see, Bino only supports two videos. (Additionally, for me the "Separate streams, left first" option is greyed out) – Simon Forsberg Jun 16 '15 at 16:05

google probably already told you, you could buy a couple proprietary software who could do that, but just in case : videocompare, tmpgenc, vidlord...

This one's free : http://forum.doom9.org/showthread.php?t=138430

(working download links at the end of the thread)

Untested because my wine setup is completely screwed right now. It doesn't do side by side but stacked playback (unless you have a very good lcd you won't be seeing the same thing by playing the same vid in two opposite corners of the screen anyway)

If you think you really need side by side you can use avisynth to do what zimmer said.

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

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

You don't need to do an encode (wich would add its own encoding artifacts anyway), just make a project that would produce an encode of the two vids playing together and skip through the file.

share|improve this answer

If anyone is still interested in this the current version of VLC is able to do this very well without any kind of scripting or add-on. As far as I know however you can only play two files synchronously, not 3.

  1. To accomplish this simply open VLC and select Media>Open Multiple Files.
  2. Inside the multiple file windows select add to add the first file.
  3. After this click on the, "Show more options," checkbox followed by the, "Play another media synchronously," checkbox at the bottom of the window.
  4. Select browse next to, "Extra media," to add the second file.
  5. Hit play and the two media files will play simultaneously with a single control window.
share|improve this answer
    
Works perfectly on OSX :) – Navin Jan 29 at 7:16

After doing what Kiran said, open all your videos and run the following AutoHotKey script

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

This script sends your keystrokes to all running instances of VLC media player. It doesn't work if you use a mouse.

These things should work:

  • forward: Ctrl + right / Alt + right / Shift + right
  • backward: Ctrl + left / Alt + left / Shift + left
  • play/pause: space
  • speed up: ]
  • speed down: [

You can easily add in other keystrokes below the line: ~^down::LoopControlSend(Windows, "^{down}")

This doesn't sync the videos perfectly, so you can use the following 4 keys: left, right, up, down to control the active window only.

  • left very short backward jump
  • right very short forward jump
  • up medium backward jump
  • down medium forward jump

If you prefer choosing the programs manually, use the following code instead

;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%
    }
}
share|improve this answer

I image you can use an AutoHotKey script to send a "Play" shortcut to all three players in a very short amount of time.

Whether they are able to start playing at exactly the same time is a different matter. Even if they are able to start straight away, I imagine there will be some fighting for the hard drive. Might want to make a RAM disk if this is an important evaluation.

share|improve this answer
    
You're missing the point: I need a player capable of displaying more than 1 video. – Grumpy ol' bear May 10 '10 at 15:27
    
Any media player where you can open up more than one instance, eg VLC – ta.speot.is May 11 '10 at 1:20
2  
Not really taspeotis. Because I have to manually start each application which in turn translates into NOT synchronous. – Grumpy ol' bear May 15 '10 at 8:38

If this is not something you do very often, I would use a video editing software like vegas to build one video with all of them showing.

Youtube video example of how to do that.

share|improve this answer
1  
That's a very inconvenient way to do that. Still better than nothing so far. – Grumpy ol' bear May 10 '10 at 15:28

try Kinovea, it's free and frame accurate :

Kinovea is a video player for all sport enthusiasts.
Slow down,study and comment the technique of your athletes or of yourself.
It is 100% free and open source.
Observe two videos side by side and synchronize them on a common event.

share|improve this answer
1  
Welcome to SuperUser. Link-only answers are not very useful, so this needs some descriptive text. – harrymc Jun 9 '14 at 11:19
    
Doesn't seem to play audio, but if you don't need that (I didn't), it was super easy to install and get running in seconds and plays two videos side-by-side without any issues. – hheimbuerger Jun 15 '14 at 22:44
    
The OP asked for having three videos side-by-side, not two. – Simon Forsberg Jun 16 '15 at 16:04

I have the same problem but I have not seen any satisfactory solutions online so far (and believe me I had done a thorough search). At last I come up with my own solution that do not require any extra $. Although this is an old question, I hope my workaround will still be useful.

First, in VLC player, go to Tools->Preferences. Make sure to unchecked 'Allow only one running instance' and 'Pause on the last frame of a video'.

Then, type/edit the following commands in a text file. Open a windows command prompt, and run the commands by copy-and-paste (or save the text and run it as a batch file):

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%

This will open up three VLC instances, each with one of the three videos and all playing in a very synchronized fashion, at least to your eye. However, the three instances will be overlapping each other initially. You will need to click on the title bar of each of the instance to move them around without interrupting the playback so that you can see them playing side-by-side on your screen. This is rather annoying but I consider it a very small inconvenience.

I have tried but it is not possible to control all the instances with hotkeys for stop, forward, backward etc. However, the option '--repeat' will put the videos in a loop, so you can just wait for them to start over.

For very long videos, it may be best to merge the videos in a side-by-side composition into one video using e.g. ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html and http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html This command only describes how to merge two videos, but I believe (i.e. I have not test it) you can run the command multiple times to incorporate multiple video files.

share|improve this answer

Many players will be able to output a picture of a single frame in the video.

You could choose multiple points in your videos to compare different types of image (clouds, smoke, trees, grass, motion are good for encoding comparisons) and take the same frames from each of your videos.

You can then make comparisons on a static image rather than trying to spot differences in motion. You can compare on a pixel by pixel basis if you want.

Ensure you don't use JPG as the output though as this is a lossy format and will introduce its own artefacts.

share|improve this answer
1  
You're missing the point: I need a player capable of displaying more than 1 video. – Grumpy ol' bear May 10 '10 at 15:26
1  
@NoCanDo: I understand that, this is just an alternative option for you to compare video encoding results should you not find a suitable answer. – Shevek May 10 '10 at 16:00

If you want to try more advanced stuff to play video you should take a look at this > http://vvvv.org/documentation/boygrouping-basics

vvvv is a hybrid graphical/textual programming environment for easy prototyping and development. It is designed to facilitate the handling of large media environments with physical interfaces, real-time motion graphics, audio and video that can interact with many users simultaneously.

It has a VLC node that you can program to make lots of things with video > http://vvvv.org/documentation/filestream-%28ex9.texture-vlc%29

share|improve this answer

Well, most of these answers are unnecessarily complicated except Bino player and seems to have some negatives.

What you can do is push both videos inside one container, so then video file have two video tracks (It's more common to have more than one audio tracks than video tracks.) You can use for example MKVMerge. It does NOT recode videos, thus no quality loss or waiting for it to be one. It is quick. MKVMerge

Then you can open result in VLC player, then select Video in menu/Video Track/Track 2 (or other). You see now two video windows and they are always in sync.

share|improve this answer
    
This assumes the video streams are in a format compatible with the mkv container. – jiggunjer Dec 9 '15 at 1:52
    
Can you give any example? :) – Velda Dec 9 '15 at 13:52
    
No lol but I just doubt it supports all formats. – jiggunjer Dec 10 '15 at 0:52
    
Me too, but I also doubt, that MKV does not support any common format. – Velda Dec 10 '15 at 11:27

protected by Community Mar 9 at 5:39

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.