Bagaimana cara memainkan banyak video yang disinkronkan berdampingan?


37

Saya punya 3 video, ketiganya memiliki waktu yang sama, jumlah frame yang sama, dan mereka hanya berbeda dalam hal kualitas encoding.

Sekarang saya membutuhkan mereka untuk berjalan berdampingan secara tersinkronisasi untuk tujuan evaluasi. Artinya ketika saya menekan "mainkan" KEDUA! video harus dimulai. Secara analog untuk berhenti, maju, mundur.

Adakah yang tahu ada pemain yang mampu melakukan itu? Maksud saya memutar lebih dari 1 video berdampingan ...

Platform: Win7


8
Investasikan beberapa bobot jari dan latih diri Anda untuk mengklik dengan sangat cepat.
ta.speot.is

Anda tidak mengerti intinya: Saya membutuhkan pemain yang mampu menampilkan lebih dari 1 video.
Grumpy ol 'Bear

4
Saya pikir mungkin dia bercanda ...
Joe Taylor

Anda dapat menjadwalkan tugas untuk membukanya sekaligus.
Uğur Gümüşhan

1
"Saya punya 3 video" -> "ketika saya menekan" mainkan "KEDUA video harus dimulai" -> Saya pikir maksud Anda semua 3 harus dimulai?
jiggunjer

Jawaban:


10

VLC pada Windows (1.1.10 atau lebih baru):

  • Alat → Preferensi
  • Tampilkan Pengaturan → Semua
  • Klik Tingkat Lanjut (Klik Daftar Putar untuk VLC 2.1.5)
  • Hapus centang "Izinkan hanya satu instance yang berjalan"
  • Hapus centang "Satu contoh ketika mulai dari file"

VLC pada OS X tidak menyediakan serangkaian opsi yang sama. Namun Anda dapat menjalankan beberapa instance dari Terminal dengan open -a VLC.


Itu open -n -a vlcuntuk Mac.
Paul Tomblin

10
Ini tidak menjawab pertanyaan (windows 7, bukan OS X). Dia mungkin bisa memulai 3 video dengan file batch, tetapi tidak akan ada cara untuk menjeda semuanya dll.
jiggunjer

30

Jika ada yang masih tertarik dengan ini, versi VLC saat ini dapat melakukan ini dengan sangat baik tanpa adanya skrip atau tambahan apa pun. Sejauh yang saya tahu Anda hanya dapat memutar dua file secara serempak, bukan 3.

  1. Untuk melakukannya, cukup buka VLC dan pilih Media> Buka Banyak File .
  2. Di dalam beberapa file windows pilih add untuk menambahkan file pertama.
  3. Setelah klik ini pada kotak centang " Tampilkan lebih banyak opsi ," diikuti oleh, " Mainkan media lain secara serempak ," di bagian bawah jendela.
  4. Pilih browse di sebelah, " Media ekstra ," untuk menambahkan file kedua.
  5. Hit play dan dua file media akan diputar secara bersamaan dengan satu jendela kontrol.

Berfungsi sempurna di OSX :)
Navin

2
ini hanya berfungsi untuk 2 video bukan 3
Wakan Tanka

2
Jika Anda menginginkan 3 video, sebelum langkah 5: di jendela Open Media, buka bidang Edit Opsi di bagian bawah jendela. Perhatikan bahwa file video kedua Anda ada di dalam kotak seperti :input-slave=file:///C:/Users/me/Documents/someVideo.mov:file-caching=300. Setelah nama file meletakkan nama #file selanjutnya dalam format yang sama, misalnya :input-slave=file:///C:/Users/me/Documents/someVideo.mov#file:///C:/Users/me/Documents/yetAnother.mov :file-caching=300. Kemudian ketika Anda mengklik Mainkan, itu akan memainkan ketiga file dalam sinkronisasi. Lihat referensi: wiki.videolan.org/VLC_command-line_help
Rory

2
Tidak berfungsi untuk versi 3.0.5, tetapi berhasil untuk versi 2.2.4.
badjr

2
Untuk 3.0.7 ini sepertinya berfungsi sebagai berikut - setelah Anda mengklik Putar video utama mulai diputar, Klik kanan Video -> Video Track -> Track 2. Ini membuka jendela terpisah dengan vid kedua. Keduanya dikontrol oleh kontrol di jendela asli.
Terry Brown

17

Bino adalah media player lintas platform yang biasanya direkomendasikan untuk pemutaran file stereoskopis. Di antara fitur-fitur lainnya, ini mendukung pemutaran beberapa aliran secara tersinkronisasi.

Antarmuka mungkin tampak agak primitif atau membingungkan pada awalnya, tetapi yang perlu Anda lakukan adalah

  1. Seret dua file video Anda ke Bino
  2. Pilih "aliran terpisah, meninggalkan pertama" pilihan input dan "/ kanan Left" pilihan output

Voa, Anda mendapat pemutaran yang disinkronkan. Jenis di mana satu set kontrol pemutaran digunakan untuk semua aliran sehingga Anda tidak perlu "Berinvestasi dalam beberapa bobot jari dan latih diri Anda untuk mengklik dengan sangat cepat" seperti yang disarankan oleh @ ta.speot.is.

Sebagai bonus, ini mendukung rendering anaglyph 3D.


2
OP meminta tiga video berdampingan, bukan dua. Sejauh yang saya lihat, Bino hanya mendukung dua video. (Selain itu, bagi saya opsi "Aliran terpisah, tinggalkan dulu" diklik)
Simon Forsberg

2
File harus memiliki ukuran dan kode yang sama atau opsi akan diklik.
Ash

4

Setelah melakukan apa yang dikatakan Kiran, buka semua video Anda dan jalankan skrip Autohotkey berikut

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

Script ini mengirimkan penekanan tombol Anda ke semua instance menjalankan VLC media player. Ini tidak berfungsi jika Anda menggunakan mouse.

Hal-hal ini seharusnya bekerja:

  • meneruskan: Ctrl + right / Alt + right / Shift + right
  • ke belakang: Ctrl + left / Alt + left / Shift + left
  • play / pause: space
  • mempercepat: ]
  • mempercepat: [

Anda dapat dengan mudah menambahkan penekanan tombol lainnya di bawah baris: ~^down::LoopControlSend(Windows, "^{down}")

Ini tidak menyinkronkan video dengan sempurna, jadi Anda dapat menggunakan 4 tombol berikut: left, right, up, downuntuk mengontrol jendela aktif saja .

  • left lompatan mundur sangat pendek
  • right lompatan ke depan yang sangat singkat
  • up melompat mundur menengah
  • down lompatan maju ke depan

Jika Anda lebih suka memilih program secara manual, gunakan kode berikut sebagai gantinya

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

Sapi suci AHK luar biasa. Bagaimana dengan ini .... katakanlah saya memiliki 14 VLC instance menjalankan oacross dua broswers .... apakah ada skrip yang dapat ubin semua video di kedua browser (jadi pada dasarnya, lihat # video per layar, resolusi layar, dan ubin mereka dengan cara yang cerdas)?
tbone

4

Anda dapat melakukan ini dengan mpv jika Anda tidak keberatan menggunakan baris perintah:

3 video berdampingan (ditumpuk secara horizontal)

masukkan deskripsi gambar di sini

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 video

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

Catatan

  • Di Windows gunakan ;untuk memisahkan setiap nama file dalam --external-files(seperti yang ditunjukkan dalam contoh 3 video ). Di Linux dan penggunaan macOS :. Atau, gunakan dua contoh --external-filebukannya seperti: --external-file=input2.mkv --external-file=input3.mkv.

  • Semua file harus sama tingginya. Jika tidak maka tambahkan skala, pad, dan / atau filter potong. Lihat dokumentasi mpv dan Filter FFmpeg untuk info lebih lanjut.


3

Google mungkin sudah memberi tahu Anda, Anda dapat membeli beberapa perangkat lunak berpemilik yang dapat melakukan itu, tetapi untuk berjaga-jaga: videocompare, tmpgenc, vidlord ...

Yang ini gratis: http://forum.doom9.org/showthread.php?t=138430

(bekerja tautan unduhan di akhir utas)

Belum diuji karena pengaturan anggur saya benar-benar kacau sekarang. Itu tidak melakukan berdampingan tetapi menumpuk pemutaran (kecuali jika Anda memiliki lcd yang sangat baik Anda tidak akan melihat hal yang sama dengan memainkan vid yang sama di dua sudut yang berlawanan dari layar)

Jika Anda pikir Anda benar-benar membutuhkan berdampingan, Anda dapat menggunakan avisynth untuk melakukan apa yang dikatakan zimmer.

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

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

Anda tidak perlu melakukan encode (yang akan menambahkan artefak encoding sendiri), buat saja proyek yang akan menghasilkan encode dari dua video yang diputar bersama dan lewati file.


3

Saya memiliki masalah yang sama tetapi saya belum melihat solusi yang memuaskan secara online sejauh ini (dan percayalah saya telah melakukan pencarian menyeluruh). Akhirnya saya datang dengan solusi saya sendiri yang tidak memerlukan tambahan $. Meskipun ini adalah pertanyaan lama, saya berharap solusi saya tetap berguna.

Pertama, di VLC player, pergi ke Tools-> Preferences. Pastikan untuk tidak mencentang 'Izinkan hanya satu instance yang berjalan' dan 'Jeda pada frame terakhir video'.

Kemudian, ketik / edit perintah berikut dalam file teks. Buka prompt perintah windows, dan jalankan perintah dengan salin dan tempel (atau simpan teks dan jalankan sebagai file batch):

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%

Ini akan membuka tiga instance VLC, masing-masing dengan satu dari tiga video dan semua diputar dengan cara yang sangat tersinkronisasi, setidaknya di mata Anda. Namun, tiga contoh akan saling tumpang tindih pada awalnya. Anda harus mengeklik bilah judul dari setiap instance untuk memindahkannya tanpa mengganggu pemutaran sehingga Anda dapat melihat mereka bermain berdampingan di layar Anda. Ini agak menjengkelkan tetapi saya menganggapnya sebagai ketidaknyamanan yang sangat kecil.

Saya telah mencoba tetapi tidak mungkin untuk mengontrol semua instance dengan hotkey untuk berhenti, maju, mundur dll. Namun, opsi '- ulangi' akan menempatkan video dalam satu lingkaran, sehingga Anda bisa menunggu mereka untuk memulai dari awal .

Untuk video yang sangat panjang, mungkin yang terbaik untuk menggabungkan video dalam komposisi berdampingan menjadi satu video menggunakan misalnya ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html dan http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Perintah ini hanya menjelaskan cara menggabungkan dua video, tapi saya percaya (yaitu saya belum mengujinya), Anda dapat menjalankan perintah beberapa kali untuk menggabungkan beberapa file video.


1

Saya kira Anda dapat menggunakan skrip Autohotkey untuk mengirim pintasan "Play" ke ketiga pemain dalam waktu yang sangat singkat.

Apakah mereka dapat mulai bermain pada waktu yang sama adalah masalah yang berbeda. Bahkan jika mereka dapat memulai langsung, saya membayangkan akan ada beberapa perjuangan untuk hard drive. Mungkin ingin membuat disk RAM jika ini merupakan evaluasi penting.


Anda tidak mengerti intinya: Saya membutuhkan pemain yang mampu menampilkan lebih dari 1 video.
Grumpy ol 'Bear

Media player mana pun di mana Anda dapat membuka lebih dari satu instance, mis. VLC
ta.speot.is

3
Tidak benar-benar taspeotis. Karena saya harus secara manual memulai setiap aplikasi yang pada gilirannya diterjemahkan menjadi TIDAK sinkron.
Grumpy ol 'Bear

-1

Banyak pemain akan dapat menampilkan gambar satu frame dalam video.

Anda dapat memilih beberapa titik di video Anda untuk membandingkan berbagai jenis gambar (awan, asap, pohon, rumput, gerak bagus untuk meng-encode perbandingan) dan mengambil bingkai yang sama dari masing-masing video Anda.

Anda kemudian dapat membuat perbandingan pada gambar statis daripada mencoba mengenali perbedaan dalam gerakan. Anda dapat membandingkan berdasarkan pixel demi pixel jika Anda mau.

Pastikan Anda tidak menggunakan JPG sebagai output karena ini adalah format lossy dan akan memperkenalkan artefaknya sendiri.


2
Anda tidak mengerti intinya: Saya membutuhkan pemain yang mampu menampilkan lebih dari 1 video.
Grumpy ol 'Bear

1
@NoCanDo: Saya mengerti, ini hanyalah opsi alternatif bagi Anda untuk membandingkan hasil pengodean video jika Anda tidak menemukan jawaban yang sesuai.
Shevek

-1

Jika ini bukan sesuatu yang sangat sering Anda lakukan, saya akan menggunakan perangkat lunak pengedit video seperti vegas untuk membuat satu video dengan semuanya ditampilkan.

Contoh video Youtube tentang cara melakukannya.


2
Itu cara yang sangat tidak nyaman untuk melakukan itu. Masih lebih baik daripada tidak sama sekali sejauh ini.
Grumpy ol 'Bear

Silakan kutip bagian-bagian penting dari jawaban dari tautan referensi, karena jawabannya dapat menjadi tidak valid jika halaman yang tertaut berubah.
DavidPostill
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.