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

Как играть несколько видео бок о бок синхронизированы?

У меня есть 3 видео, все 3 имеют одинаковое время, одинаковое количество кадров, и они отличаются только качеством кодирования.

Теперь мне нужно, чтобы они работали бок о бок в синхронизированном режиме для целей оценки. Это означает, когда я нажимаю “играть” BOTH! видео должно начаться. Аналогично для остановки, вперед, назад.

Кто-нибудь знает любого игрока, способного это сделать? Под этим я подразумеваю проигрывание более 1 видео бок о бок…

Платформа: Win7

Ответы (10)

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

Если кто-то все еще заинтересован в этом, то текущая версия VLC способна сделать это очень хорошо без какого-либо скриптинга или дополнения. Насколько я знаю, однако, вы можете воспроизводить только два файла синхронно, а не 3. 0x2 и 0x2 и 1. Для этого просто откройте VLC и выберите Media>Открыть несколько файлов.
2. Внутри окон с несколькими файлами выберите Добавить, чтобы добавить первый файл.
3. После этого нажмите на “Показывать больше вариантов,” флажок, а затем “Играть другой носитель синхронно,” флажок в нижней части окна.
4. Для добавления второго файла выберите “Обзор рядом с ” Extra media ,“.
5. Hit Play и два мультимедийных файла будут воспроизводиться одновременно с одним окном управления.

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

Bino - это кроссплатформенный медиаплеер, обычно рекомендуемый для воспроизведения стереоскопических файлов. Помимо других функций, он поддерживает синхронизированное воспроизведение нескольких потоков. Интерфейс может сначала показаться немного примитивным или запутанным, но все, что вам нужно сделать, это перетащить два видеофайла в Bino 2. Выберите “Раздельные потоки, левый первый” вариант ввода и “Левый/правый” вариант вывода

Voilà, у вас синхронизированное воспроизведение. Вид, когда один набор элементов управления воспроизведением используется для всех потоков, так что вам не придется “Инвестировать в некоторые веса пальцев и тренироваться нажимать очень быстро” , как предполагает @ta.speot.is.

В качестве бонуса, он поддерживает рендеринг анаглифов 3D.

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

VLC на Windows (1.1.10 или более поздняя версия):

  • Tools → Preferences
  • Show Settings → All
  • Щелкните Advanced (Щелкните Playlist для VLC 2.1.5)
  • Снимите флажок “Allow only one running instance”
  • Снимите флажок “Use only one instance when started from file manager”

VLC на OS X не предоставляет такого же набора опций. Однако вы можете запустить несколько экземпляров из терминала с open -a VLC.

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

Вы можете сделать это с помощью mpv , если не возражаете против использования командной строки:

3 видеоролика бок о бок (сложенных горизонтально)

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 видеоролика

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

Примечания

  • В Windows используйте ; для разделения имени каждого файла в --external-files (как показано в примере 3 video). В Linux и MacOS используйте :. В качестве альтернативы используйте два экземпляра --external-file, например: --external-file=input2.mkv --external-file=input3.mkv.

  • Файлы должны иметь одинаковую высоту. Если это не так, добавьте шкалу, блокнот и/или фильтры обрезки. Дополнительную информацию см. в документации mpv документация и FFmpeg фильтры .

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

После того, как Киран сделает то, что сказал, откройте все видео и запустите следующий скрипт AutoHotKey

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

Этот скрипт посылает ваши нажатия клавиш во все запущенные экземпляры VLC медиа-проигрывателя. Он не работает, если вы используете мышь.

Эти вещи должны работать:

  • вперед: Ctrl + right / Alt + right / Shift + right
  • назад: Ctrl + left / Alt + left / Shift + left
  • воспроизведение/пауза: space
  • ускорение: ]
  • снижение скорости: [

Вы можете легко добавить другие нажатия клавиш ниже линии: ~^down::LoopControlSend(Windows, "^{down}")

Это не синхронизирует видео идеально, поэтому вы можете использовать следующие 4 клавиши: left, right, up, down для управления только активным окном.

  • left очень короткий прыжок назад
  • right очень короткий прыжок вперед
  • up средний прыжок назад
  • down средний прыжок вперед

Если вы предпочитаете выбирать программы вручную, используйте следующий код вместо

;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, вероятно, уже сказал вам, вы могли бы купить пару несвободных программ, которые могли бы это сделать, но на всякий случай: видеокомпас, tmpgenc, vidlord…

Эта бесплатная : http://forum.doom9.org/showthread.php?t=138430

(рабочие ссылки на скачивание в конце резьбы)

Непроверенная, потому что моя винная установка сейчас полностью испорчена. Она не делает бок о бок, а воспроизводит в стеке (если у вас нет очень хорошего lcd, вы все равно не увидите то же самое, проигрывая один и тот же vid в двух противоположных углах экрана)

Если вы думаете, что вам действительно нужно бок о бок, вы можете использовать avisynth для того, чтобы сделать то, что сказал zimmer.

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

(ссылка forum.doom9.org/showthread.php?t=139769)

Вам не нужно делать кодирование (которое в любом случае добавит свои артефакты кодирования), просто сделайте проект, который создаст кодирование двух проигрываемых вместе видеокарт и пропустите файл.

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

У меня та же проблема, но до сих пор я не видел удовлетворительных решений в Интернете (и поверьте, я провел тщательный поиск). Наконец-то я придумал свое собственное решение, которое не требует лишних $. Хотя это старый вопрос, я надеюсь, что мой обходной путь все же будет полезен.

Во-первых, в плеере VLC перейдите по ссылке Инструменты>Настройки. Убедитесь, что вы сняли галочку с опций ‘Разрешить только один запущенный экземпляр’ и ‘Пауза на последнем кадре видео’.

Затем введите/измените следующие команды в текстовом файле. Откройте командную строку windows, и запустите команды копирования и вставки (или сохраните текст и запустите его в виде пакетного файла):

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%

Это откроет три экземпляра VLC, каждый из которых с одним из трех видео и все играть в очень синхронизированной форме, по крайней мере, для вашего глаза. Тем не менее, три экземпляра будут накладываться друг на друга изначально. Вам нужно будет нажать на строку заголовка каждого из экземпляров, чтобы переместить их, не прерывая воспроизведения, так что вы можете увидеть их играя бок о бок на экране. Это довольно раздражает, но я считаю это небольшим неудобством.

я пробовал, но невозможно контролировать все экземпляры с горячими клавишами для остановки, перемотки вперед, назад и т.д. Тем не менее, опция “–повтор” поместит видео в цикл, так что вы можете просто подождать, пока они начнут заново.

Для очень длинных видео, возможно, будет лучше объединить видео в композиции бок о бок в одно видео, используя, например, ffmpeg: [ https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html ]0x3 и http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Эта команда описывает только то, как объединить два видео, но я полагаю (т.е. я не тестировал ее), что вы можете запустить эту команду несколько раз, чтобы объединить несколько видео файлов.

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

Я представляю себе, что вы можете использовать скрипт AutoHotKey для отправки ярлыка “Play” для всех трех игроков в очень короткое время.

Смогут ли они начать играть точно в одно и то же время - это другое дело. Даже если они смогут начать игру прямо сейчас, я думаю, что будут какие-то бои за жесткий диск. Возможно, захочется сделать диск с оперативной памятью, если это важная оценка.

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

Если это не то, что вы делаете очень часто, я бы использовать программное обеспечение для редактирования видео, как Вегас, чтобы построить одно видео со всеми из них показывают. 0x2 и [ Youtube video пример того, как это сделать. ]0x3 и [ Youtube video пример того, как это сделать. ]0x3 и [ Youtube video пример того, как это сделать. ]

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

Многие игроки смогут выводить изображение одного кадра в видео.

Вы можете выбрать несколько точек в видео для сравнения различных типов изображений (облака, дым, деревья, трава, движение хорошо подходят для кодирования сравнений) и взять одинаковые кадры из каждого из ваших видео.

Затем вы можете провести сравнение на статическом изображении, а не пытаться обнаружить различия в движении. При желании вы можете сравнивать по пикселям.

Убедитесь, что вы не используете JPG в качестве выходного формата, так как это формат с потерями, и в нем будут представлены собственные артефакты.

Похожие вопросы

3
28
13
7
9