Làm cách nào để phát nhiều video được đồng bộ hóa cạnh nhau?


37

Tôi đã có 3 video, cả 3 đều có cùng thời gian, cùng số lượng khung hình và chúng chỉ khác nhau về chất lượng mã hóa.

Bây giờ tôi cần chúng để chạy song song trong thời trang đồng bộ cho mục đích đánh giá. Có nghĩa là khi tôi nhấn "chơi" CẢ! video nên bắt đầu. Tương tự cho dừng, tiến, lùi.

Bất cứ ai cũng biết bất kỳ người chơi có khả năng làm điều đó? Điều đó có nghĩa là tôi chơi nhiều hơn 1 video cạnh nhau ...

Nền tảng: Win7


8
Đầu tư vào một số trọng lượng ngón tay và đào tạo bản thân để nhấp rất nhanh.
ta.speot.is

Bạn đang thiếu điểm: Tôi cần một trình phát có khả năng hiển thị nhiều hơn 1 video.
Grumpy ol 'Bear

4
Tôi nghĩ có lẽ anh ấy đã nói đùa ...
Joe Taylor

bạn có thể lên lịch một nhiệm vụ để mở tất cả chúng cùng một lúc.
Uur Gümüşhan

1
"Tôi đã có 3 video" -> "khi tôi nhấn" phát "CẢ HAI video sẽ bắt đầu" -> Tôi nghĩ bạn có nghĩa là cả 3 nên bắt đầu?
jiggunjer

Câu trả lời:


10

VLC trên Windows (1.1.10 trở lên):

  • Công cụ → Tùy chọn
  • Hiển thị cài đặt → Tất cả
  • Nhấp vào Nâng cao (Nhấp vào Danh sách phát cho VLC 2.1.5)
  • Bỏ chọn "Chỉ cho phép một phiên bản đang chạy"
  • Bỏ chọn "Một trường hợp khi bắt đầu từ tệp"

VLC trên OS X không cung cấp cùng một bộ tùy chọn. Tuy nhiên, bạn có thể chạy nhiều phiên bản từ Terminal với open -a VLC.


Đó là open -n -a vlccho Mac.
Paul Tomblin

10
Điều này không trả lời câu hỏi (windows 7, không phải OS X). Anh ta có thể bắt đầu 3 video với một tệp bó, nhưng sẽ không có cách nào để tạm dừng tất cả chúng, v.v.
jiggunjer

30

Nếu bất cứ ai vẫn quan tâm đến điều này, phiên bản hiện tại của VLC có thể làm điều này rất tốt mà không cần bất kỳ loại kịch bản hoặc bổ trợ nào. Theo tôi biết tuy nhiên bạn chỉ có thể phát hai tệp một cách đồng bộ chứ không phải 3.

  1. Để thực hiện việc này, chỉ cần mở VLC và chọn Phương tiện> Mở nhiều tệp .
  2. Trong nhiều cửa sổ tệp chọn thêm để thêm tệp đầu tiên.
  3. Sau khi nhấp vào hộp kiểm " Hiển thị thêm tùy chọn ", theo sau là hộp kiểm " Phát phương tiện khác đồng bộ " ở cuối cửa sổ.
  4. Chọn duyệt bên cạnh " Phương tiện bổ sung " để thêm tệp thứ hai.
  5. Nhấn play và hai tệp phương tiện sẽ phát cùng lúc với một cửa sổ điều khiển duy nhất.

Hoạt động hoàn hảo trên OSX :)
Navin

2
điều này chỉ hoạt động cho 2 video chứ không phải 3
Wakan Tanka

2
Nếu bạn muốn 3 video, trước bước 5: trên cửa sổ Open Media, hãy chuyển đến trường Tùy chọn chỉnh sửa ở dưới cùng của cửa sổ. Lưu ý rằng tệp video thứ 2 của bạn nằm trong hộp như thế nào :input-slave=file:///C:/Users/me/Documents/someVideo.mov:file-caching=300. Sau khi đặt một tên tập tin #sau đó tên tập tin kế tiếp trong định dạng tương tự, ví dụ :input-slave=file:///C:/Users/me/Documents/someVideo.mov#file:///C:/Users/me/Documents/yetAnother.mov :file-caching=300. Sau đó, khi bạn nhấp vào Phát, nó sẽ phát cả ba tệp đồng bộ. Xem tài liệu tham khảo: wiki.videolan.org/VLC_command-line_help
Rory

2
Không hoạt động cho phiên bản 3.0.5, nhưng nó không hoạt động cho phiên bản 2.2.4.
badjr

2
Đối với 3.0.7, điều này có vẻ hoạt động như sau - sau khi bạn nhấp Phát video chính bắt đầu phát, Nhấp chuột phải vào Video -> Video Track -> Track 2. Điều này sẽ mở một cửa sổ riêng với vid thứ hai. Cả hai đều được điều khiển bởi các điều khiển trong cửa sổ gốc.
Terry Brown

17

Bino là một trình phát đa phương tiện đa nền tảng thường được khuyên dùng để phát lại tệp lập thể. Trong số các tính năng khác, nó hỗ trợ phát lại đồng bộ nhiều luồng.

Giao diện ban đầu có vẻ hơi thô sơ hoặc khó hiểu, nhưng tất cả những gì bạn cần làm là

  1. Kéo hai tệp video của bạn vào Bino
  2. Chọn "suối riêng biệt, bên trái đầu tiên" tùy chọn đầu vào và "Left / phải" tùy chọn đầu ra

Voilà, bạn đã phát lại đồng bộ. Loại mà một bộ điều khiển phát lại được sử dụng cho tất cả các luồng, do đó bạn sẽ không phải "Đầu tư vào một số trọng lượng ngón tay và tự rèn luyện để nhấp rất nhanh" như @ ta.speot.is gợi ý.

Là một phần thưởng, nó hỗ trợ kết xuất 3D anaglyph.


2
OP yêu cầu có ba video cạnh nhau chứ không phải hai. Theo như tôi có thể thấy, Bino chỉ hỗ trợ hai video. (Ngoài ra, đối với tôi, tùy chọn "Các luồng riêng biệt, bên trái trước" bị mờ đi)
Simon Forsberg

2
Các tập tin cần phải có cùng kích thước và mã hoặc tùy chọn sẽ bị mờ đi.
Tro

4

Sau khi làm những gì Kiran nói, hãy mở tất cả các video của bạn và chạy tập lệnh AutoHotKey sau đây

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

Tập lệnh này sẽ gửi tổ hợp phím của bạn tới tất cả các phiên bản đang chạy của trình phát phương tiện VLC. Nó không hoạt động nếu bạn sử dụng chuột.

Những điều này nên hoạt động:

  • phía trước: Ctrl + right / Alt + right / Shift + right
  • lạc hậu: Ctrl + left / Alt + left / Shift + left
  • tạm dừng chơi: space
  • tăng tôc: ]
  • giảm tốc độ: [

Bạn có thể dễ dàng thêm vào các tổ hợp phím khác bên dưới dòng: ~^down::LoopControlSend(Windows, "^{down}")

Điều này không đồng bộ hóa video một cách hoàn hảo, vì vậy bạn có thể sử dụng 4 phím sau: chỉ left, right, up, downđể điều khiển cửa sổ hoạt động .

  • left nhảy lùi rất ngắn
  • right nhảy về phía trước rất ngắn
  • up nhảy lùi
  • down nhảy về phía trước trung bình

Nếu bạn thích chọn chương trình theo cách thủ công, thay vào đó hãy sử dụng mã sau

;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 bò thần là tuyệt vời. Làm thế nào về điều này .... giả sử tôi có 14 phiên bản VLC chạy trên hai broswers .... có một tập lệnh có thể xếp tất cả các video trên cả hai trình duyệt (về cơ bản, hãy xem # video trên mỗi màn hình, độ phân giải màn hình và gạch chúng theo một cách thông minh nào đó)?
xương sống

4

Bạn có thể làm điều này với mpv nếu bạn không phiền khi sử dụng dòng lệnh:

3 video cạnh nhau (xếp theo chiều ngang)

nhập mô tả hình ảnh ở đây

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

Ghi chú

  • Trong Windows sử dụng ;để phân tách từng tên tệp trong --external-files(như được hiển thị trong ví dụ 3 video ). Trong Linux và macOS sử dụng :. Ngoài ra, sử dụng hai trường hợp --external-filethay thế như : --external-file=input2.mkv --external-file=input3.mkv.

  • Tất cả các tệp phải có cùng chiều cao. Nếu không, sau đó thêm các bộ lọc tỷ lệ, pad và / hoặc crop. Xem tài liệu mpvBộ lọc FFmpeg để biết thêm thông tin.


3

google có thể đã nói với bạn, bạn có thể mua một vài phần mềm độc quyền có thể làm điều đó, nhưng chỉ trong trường hợp: videocompare, tmpgenc, vidlord ...

Cái này miễn phí: http://forum.doom9.org/showthread.php?t=138430

(làm việc liên kết tải xuống ở cuối chuỗi)

Chưa được kiểm tra vì thiết lập rượu vang của tôi hoàn toàn sai lầm ngay bây giờ. Nó không làm cạnh nhau mà phát lại xếp chồng lên nhau (trừ khi bạn có màn hình LCD rất tốt, bạn sẽ không nhìn thấy điều tương tự bằng cách chơi cùng một vid ở hai góc đối diện của màn hình)

Nếu bạn nghĩ rằng bạn thực sự cần bên cạnh bạn, bạn có thể sử dụng avisynth để làm những gì zimmer nói.

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

(tham khảo diễn đàn.doom9.org/showthread.php?t=139769)

Bạn không cần phải thực hiện mã hóa (dù sao cũng sẽ thêm các tạo phẩm mã hóa của riêng nó), chỉ cần tạo một dự án sẽ tạo ra một mã hóa của hai vids chơi với nhau và bỏ qua tệp.


3

Tôi có cùng một vấn đề nhưng tôi chưa thấy bất kỳ giải pháp thỏa đáng nào trên mạng (và tin rằng tôi đã thực hiện tìm kiếm kỹ lưỡng). Cuối cùng, tôi đưa ra giải pháp của riêng mình mà không cần thêm $. Mặc dù đây là một câu hỏi cũ, tôi hy vọng cách giải quyết của tôi sẽ vẫn hữu ích.

Đầu tiên, trong trình phát VLC, đi đến Công cụ-> Tùy chọn. Đảm bảo bỏ chọn 'Chỉ cho phép một phiên bản đang chạy' và 'Tạm dừng trên khung cuối của video'.

Sau đó, nhập / chỉnh sửa các lệnh sau trong tệp văn bản. Mở dấu nhắc lệnh của windows và chạy các lệnh bằng cách sao chép và dán (hoặc lưu văn bản và chạy dưới dạng tệp bó):

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%

Điều này sẽ mở ra ba trường hợp VLC, mỗi trường hợp có một trong ba video và tất cả đều phát theo kiểu rất đồng bộ, ít nhất là trong mắt bạn. Tuy nhiên, ba trường hợp sẽ chồng chéo lẫn nhau ban đầu. Bạn sẽ cần phải bấm vào thanh tiêu đề của từng trường hợp để di chuyển chúng xung quanh mà không làm gián đoạn quá trình phát lại để bạn có thể thấy chúng chơi cạnh nhau trên màn hình của bạn. Điều này khá khó chịu nhưng tôi coi đó là một bất tiện rất nhỏ.

Tôi đã thử nhưng không thể kiểm soát tất cả các trường hợp bằng phím nóng để dừng, chuyển tiếp, lùi, v.v. Tuy nhiên, tùy chọn '- lặp lại' sẽ đặt các video thành một vòng lặp, vì vậy bạn chỉ cần đợi chúng bắt đầu lại .

Đối với các video rất dài, tốt nhất có thể hợp nhất các video trong bố cục cạnh nhau thành một video bằng cách sử dụng ví dụ: ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.htmlhttp://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Lệnh này chỉ mô tả cách hợp nhất hai video, nhưng tôi tin (tức là tôi chưa kiểm tra) bạn có thể chạy lệnh nhiều lần để kết hợp nhiều tập tin video.


1

Tôi hình ảnh bạn có thể sử dụng tập lệnh AutoHotKey để gửi lối tắt "Phát" cho cả ba người chơi trong một khoảng thời gian rất ngắn.

Việc họ có thể bắt đầu chơi cùng một lúc hay không là một vấn đề khác. Ngay cả khi họ có thể bắt đầu ngay lập tức, tôi tưởng tượng sẽ có một số chiến đấu cho ổ cứng. Có thể muốn tạo một đĩa RAM nếu đây là một đánh giá quan trọng.


Bạn đang thiếu điểm: Tôi cần một trình phát có khả năng hiển thị nhiều hơn 1 video.
Grumpy ol 'Bear

Bất kỳ trình phát phương tiện nào mà bạn có thể mở nhiều hơn một phiên bản, ví dụ VLC
ta.speot.is

3
Không thực sự taspeotis. Bởi vì tôi phải tự khởi động từng ứng dụng mà lần lượt chuyển thành KHÔNG đồng bộ.
Grumpy ol 'Bear

-1

Nhiều người chơi sẽ có thể xuất hình ảnh của một khung hình duy nhất trong video.

Bạn có thể chọn nhiều điểm trong video của mình để so sánh các loại hình ảnh khác nhau (mây, khói, cây, cỏ, chuyển động rất tốt để so sánh mã hóa) và lấy cùng một khung hình từ mỗi video của bạn.

Sau đó, bạn có thể so sánh trên một hình ảnh tĩnh thay vì cố gắng phát hiện sự khác biệt trong chuyển động. Bạn có thể so sánh trên pixel theo pixel nếu bạn muốn.

Đảm bảo bạn không sử dụng JPG làm đầu ra mặc dù đây là định dạng mất dữ liệu và sẽ giới thiệu các đồ tạo tác của riêng nó.


2
Bạn đang thiếu điểm: Tôi cần một trình phát có khả năng hiển thị nhiều hơn 1 video.
Grumpy ol 'Bear

1
@NoCanDo: Tôi hiểu rằng, đây chỉ là một tùy chọn thay thế để bạn so sánh kết quả mã hóa video nếu bạn không tìm thấy câu trả lời phù hợp.
Shevek

-1

Nếu đây không phải là điều bạn thường xuyên làm, tôi sẽ sử dụng một phần mềm chỉnh sửa video như vegas để xây dựng một video với tất cả chúng hiển thị.

Ví dụ video Youtube về cách làm điều đó.


2
Đó là một cách rất bất tiện để làm điều đó. Vẫn tốt hơn là không có gì cho đến nay.
Grumpy ol 'Bear

Vui lòng trích dẫn các phần thiết yếu của câu trả lời từ (các) liên kết tham chiếu, vì câu trả lời có thể trở nên không hợp lệ nếu (các) trang được liên kết thay đổi.
DavidPostill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.