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

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

Теперь мне нужно, чтобы они работали бок о бок синхронно для оценки. Значение, когда я нажимаю «играть» ОБ! Видео должны начинаться. Аналогично для остановки, вперед, назад.

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

Платформа: Win7

VLC в Windows (1.1.10 или новее):

  • Инструменты → Настройки
  • Показать настройки → Все
  • Нажмите « Дополнительно» (нажмите « Список воспроизведения для VLC 2.1.5»)
  • Снимите флажок «Разрешить только один исполняемый экземпляр»
  • Снимите флажок «Один экземпляр при запуске из файла»

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

Если кто-то еще заинтересован в этом, текущая версия VLC может сделать это очень хорошо без каких-либо сценариев или надстроек. Насколько я знаю, вы можете играть только два файла синхронно, а не 3.

  1. Для этого просто откройте VLC и выберите Media> Open Multiple Files .
  2. Внутри нескольких окон файлов выберите «Добавить», чтобы добавить первый файл.
  3. После этого нажмите кнопку « Показать больше опций », а затем установите флажок « Воспроизвести другой носитель синхронно » в нижней части окна.
  4. Выберите «Рядом», « Дополнительные носители », чтобы добавить второй файл.
  5. Хит-игра и два мультимедийных файла будут воспроизводиться одновременно с одним окном управления.

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

Сначала интерфейс может показаться немного примитивным или запутанным, но все, что вам нужно сделать, это

  1. Перетащите два видеофайла в Bino
  2. Выберите опцию «Отдельные потоки, левый первый» и параметр «Влево / Вправо»

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

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

Google, возможно, уже сказал вам, вы могли бы купить пару проприетарных программ, которые могли бы это сделать, но на всякий случай: videocompare, tmpgenc, vidlord …

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

(Рабочие ссылки для скачивания в конце потока)

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

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

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

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

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

Попробуйте Kinovea , это бесплатно и с точностью до кадра:

Kinovea – это видеопроигрыватель для всех любителей спорта.
Замедляйте, изучайте и комментируйте технику своих спортсменов или себя.
Это 100% бесплатно и с открытым исходным кодом.
Соблюдайте два видеоролика рядом и синхронизируйте их на общем событии .

Сделав то, что сказал Киран, откройте все свои видео и запустите следующий скрипт 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
  • Play / pause: space
  • Ускорить: ]
  • Скорость вниз: [

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

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

  • left очень короткий прыжок назад
  • right очень короткий прыжок вперед
  • Средний прыжок назад
  • 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% } } 

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

Во-первых, в проигрывателе 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, каждый из которых будет одним из трех видеороликов, и все игры будут синхронизироваться, по крайней мере, на ваш взгляд. Однако три экземпляра сначала будут перекрываться друг с другом. Вам нужно будет щелкнуть по строке заголовка каждого экземпляра, чтобы переместить их, не прерывая воспроизведение, чтобы вы могли видеть их, играя бок о бок на экране. Это довольно раздражает, но я считаю это очень небольшим неудобством.

Я попытался, но невозможно контролировать все экземпляры с помощью горячих клавиш для остановки, перемотки вперед и назад. Однако опция «-repeat» помещает видео в цикл, поэтому вы можете просто ждать, пока они начнут работу ,

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

Я могу использовать сценарий AutoHotKey для отправки ярлыка «Play» для всех трех игроков за очень короткий промежуток времени.

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

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

Youtube видео пример того, как это сделать.

Ну, большинство из этих ответов излишне сложны, кроме игрока Bino, и, похоже, есть некоторые негативы.

То, что вы можете сделать, – это нажать оба видео в одном контейнере, чтобы в видеофайле было два видеодорожки (более распространено иметь более одного аудиодорожки, чем видеодорожки). Вы можете использовать, например, MKVMerge . Он НЕ перекодирует видео, таким образом, не ухудшается качество или не ждет его. Это быстро. MKVMerge

Затем вы можете открыть результат в проигрывателе VLC, затем выберите Video in menu/Video Track/Track 2 (или другое). Теперь вы видите два видеоокна, и они всегда синхронизированы.

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

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

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

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

Если вы хотите попробовать более продвинутые материалы для воспроизведения видео, вы должны взглянуть на это> http://vvvv.org/documentation/boygrouping-basics

Vvvv – это гибридная среда графического / текстового программирования для простого прототипирования и разработки. Он предназначен для облегчения обработки больших медиа-сред с физическими интерфейсами, графикой движения в реальном времени, аудио и видео, которые могут взаимодействовать одновременно со многими пользователями.

У этого есть узел VLC, который Вы можете запрограммировать, чтобы сделать много вещей с видео> http://vvvv.org/documentation/filestream-%28ex9.texture-vlc%29

Давайте будем гением компьютера.