Як відтворювати декілька відео синхронізованих?


37

У мене є 3 відео, усі 3 мають однаковий час, однакову кількість кадрів, і вони відрізняються лише за якістю кодування.

Тепер мені потрібно, щоб вони синхронізовано працювали пліч-о-пліч з метою оцінки. Значення, коли я натискаю "грати" БУТИ! відео мають початись. Аналогічно для зупинки, вперед, назад.

Хтось знає будь-якого гравця, здатного на це? Під цим я маю на увазі відтворення більш ніж одного відео поруч ...

Платформа: Win7


8
Інвестуйте в якісь ваги пальців і навчіть себе клацати дуже швидко.
ta.speot.is

Вам не вистачає моменту: мені потрібен програвач, здатний відобразити більше ніж 1 відео.
Бурхливий ol 'Ведмідь

4
Я думаю, можливо, він жартував ...
Джо Тейлор

ви можете запланувати завдання, щоб відкрити їх усі відразу.
Uğur Gümüşhan

1
"У мене є 3 відео" -> ", коли я натискаю" грати "ДІМ! Відео повинні починатися" -> Я думаю, ти маєш на увазі, що всі 3 повинні початися?
jiggunjer

Відповіді:


10

VLC для Windows (1.1.10 або новішої версії):

  • Інструменти → Налаштування
  • Показати Налаштування → Усі
  • Клацніть Додатково (Виберіть список відтворення для VLC 2.1.5)
  • Зніміть прапорець "Дозволити лише один запущений екземпляр"
  • Зніміть прапорець "Один екземпляр при запуску з файлу"

VLC в OS X не забезпечує однаковий набір опцій. Однак ви можете запускати декілька примірників із Терміналу за допомогою open -a VLC.


Це open -n -a vlcдля Mac.
Пол Томблін

10
Це не відповідає на запитання (Windows 7, а не ОС X). Він може, можливо, запустити 3 відео з пакетним файлом, але не було б можливості призупинити їх усіх і т. Д.
jiggunjer

30

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

  1. Для цього просто відкрийте VLC та виберіть Медіа> Відкрити кілька файлів .
  2. Всередині декількох вікон файлів виберіть Додати, щоб додати перший файл.
  3. Після цього натисніть прапорець " Показати більше параметрів ", а потім у нижній частині вікна встановлено прапорець " Відтворити інший медіа синхронно ".
  4. Виберіть перегляд поруч із " Додатковий носій ", щоб додати другий файл.
  5. Натисніть програти, і два медіафайли будуть відтворюватися одночасно з одним вікном керування.

Відмінно працює на OSX :)
Navin

2
це працює лише для 2 відео, а не 3
Wakan Tanka

2
Якщо вам потрібно 3 відео, перед кроком 5: у вікні Відкрити медіа зайдіть у поле Редагування параметрів у нижній частині вікна. Зверніть увагу , що друге відео файл знаходиться в коробці , як :input-slave=file:///C:/Users/me/Documents/someVideo.mov:file-caching=300. Після імені файлу поставте #наступне ім'я файлу в тому ж форматі, наприклад :input-slave=file:///C:/Users/me/Documents/someVideo.mov#file:///C:/Users/me/Documents/yetAnother.mov :file-caching=300. Потім після натискання кнопки Відтворити синхронізуються всі три файли. Дивіться посилання: wiki.videolan.org/VLC_command-line_help
Rory

2
Не працював для версії 3.0.5, але він працював для версії 2.2.4.
badjr

2
Для 3.0.7 це, здається, працює наступним чином - після натискання кнопки Відтворити основне відео починається відтворення, клацніть правою кнопкою миші Відео -> Відеозапис -> Доріжка 2. Це відкриває окреме вікно з другим відривом. Вони обидва керуються елементами управління у вихідному вікні.
Террі Браун

17

Біно - мультимедійний плеєр із багатоплатформою, який зазвичай рекомендується для відтворення стереоскопічного файлу. Серед інших функцій, він підтримує синхронізоване відтворення декількох потоків.

Інтерфейс може здатися трохи примітивним або заплутаним спочатку, але все, що вам потрібно зробити - це

  1. Перетягніть два відеофайли в Біно
  2. Виберіть опцію введення "Окремі потоки, лівий перший" та варіант виведення "Ліво / право"

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

Як бонус, він підтримує візуалізацію анагліфа 3D.


2
ОП попросила мати три відео поруч, а не два. Наскільки я бачу, Біно підтримує лише два відео. (Крім того, для мене опція "Окремі потоки, ліві спочатку" є сірим)
Simon Forsberg

2
Файли повинні бути однакового розміру та коду, інакше параметр буде сірим.
Еш

4

Виконуючи те, що сказав Кіран, відкрийте всі свої відео та запустіть наступний сценарій 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%
    }
}

Свята корова AHK дивовижна. Як щодо цього .... скажемо, у мене 14 екземплярів VLC, які працюють через два веб-переглядачі .... чи існує сценарій, який може плитка всіх відео в обох браузерах (так, в основному, дивіться на # відео на екран, роздільну здатність екрана та плитка їх якось розумним способом)?
tbone

4

Це можна зробити за допомогою 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 відео ). У Linux та macOS :. Як альтернативи, використовувати два примірника --external-fileзамість того, щоб такі , як: --external-file=input2.mkv --external-file=input3.mkv.

  • Файли повинні бути однакової висоти. Якщо їх немає, додайте фільтри масштабу, колодки та / або обрізання. Додаткову інформацію див. У документації на mpv та фільтри FFmpeg .


3

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)

(довідковий форум.doom9.org/showthread.php?t=139769)

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


3

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

Спочатку у програвачі 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 та http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Ця команда описує лише те, як об’єднати два відео, але я вірю (тобто я його не перевіряв), ви можете виконати команду кілька разів, щоб включити кілька відеофайлів.


1

Я уявляю, ви можете використовувати сценарій AutoHotKey, щоб надсилати ярлик "Play" всім трьом гравцям за дуже короткий час.

Чи здатні вони почати грати точно в один і той же час - інша справа. Навіть якщо вони зможуть розпочатись відразу, я думаю, що за жорсткий диск будуть боротися. Можливо, ви хочете зробити диск RAM, якщо це важлива оцінка.


Вам не вистачає моменту: мені потрібен програвач, здатний відобразити більше ніж 1 відео.
Бурхливий ol 'Ведмідь

Будь-який медіаплеєр, де можна відкрити більше одного примірника, наприклад, VLC
ta.speot.is

3
Не дуже таспеотис. Тому що я повинен вручну запускати кожну програму, яка в свою чергу перетворюється на НЕ синхронну.
Бурхливий ol 'Ведмідь

-1

Багато гравців зможуть вивести зображення одного кадру у відео.

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

Потім ви можете робити порівняння на статичному зображенні, а не намагатися помітити відмінності в русі. Ви можете порівнювати на основі пікселя за пікселем, якщо хочете.

Переконайтеся, що ви не використовуєте JPG як вихід, хоча, оскільки це формат втрат, і введете власні артефакти.


2
Вам не вистачає моменту: мені потрібен програвач, здатний відобразити більше ніж 1 відео.
Бурхливий ol 'Ведмідь

1
@NoCanDo: Я розумію, що це лише альтернативний варіант порівняння результатів кодування відео, якщо ви не знайдете відповідної відповіді.
Шевек

-1

Якщо це не те, що ви робите дуже часто, я б використав програмне забезпечення для редагування відео, наприклад, Вегас, щоб створити одне відео з усіма ними.

Приклад відео на Youtube, як це зробити.


2
Це дуже незручний спосіб зробити це. Ще краще, ніж нічого поки що.
Бурхливий ol 'Ведмідь

Будь ласка, цитуйте основні частини відповіді із посилальних посилань (ив), оскільки відповідь може стати недійсною, якщо змінена пов’язана сторінка.
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.