비디오가 3 개 있는데, 3 개 모두 같은 시간, 같은 양의 프레임을 가지고 있으며 인코딩 품질 측면에서만 다릅니다.
이제 평가 목적으로 동기화 된 방식으로 나란히 실행해야합니다. "play"를 눌렀을 때의 의미! 비디오가 시작되어야합니다. 정지, 전진, 후진과 유사합니다.
누구든지 그렇게 할 수있는 선수를 알고 있습니까? 즉, 두 개 이상의 비디오를 나란히 재생한다는 의미입니다.
플랫폼 : Win7
비디오가 3 개 있는데, 3 개 모두 같은 시간, 같은 양의 프레임을 가지고 있으며 인코딩 품질 측면에서만 다릅니다.
이제 평가 목적으로 동기화 된 방식으로 나란히 실행해야합니다. "play"를 눌렀을 때의 의미! 비디오가 시작되어야합니다. 정지, 전진, 후진과 유사합니다.
누구든지 그렇게 할 수있는 선수를 알고 있습니까? 즉, 두 개 이상의 비디오를 나란히 재생한다는 의미입니다.
플랫폼 : Win7
답변:
Windows의 VLC (1.1.10 이상) :
OS X의 VLC는 동일한 옵션 세트를 제공하지 않습니다. 그러나을 사용하여 터미널에서 여러 인스턴스를 실행할 수 있습니다 open -a VLC
.
open -n -a vlc
Mac 용.
누구든지 여전히 이것에 관심이 있다면 VLC의 현재 버전은 어떠한 종류의 스크립팅이나 애드온 없이도이 작업을 매우 잘 수행 할 수 있습니다. 그러나 내가 아는 한 3 개의 파일이 아닌 2 개의 파일 만 동기식으로 재생할 수 있습니다.
: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
Bino 는 스테레오 스코픽 파일 재생에 일반적으로 권장되는 크로스 플랫폼 미디어 플레이어입니다. 다른 기능 중에서도 여러 스트림의 동기화 된 재생을 지원합니다.
인터페이스는 처음에는 약간 원시적이거나 혼란스러워 보일 수 있지만 필요한 것은
Voilà, 동기화 된 재생이 있습니다. @ ta.speot.가 제안하는 것처럼 단일 스트림의 재생 컨트롤 세트가 모든 스트림에 사용되므로 "손가락 무게에 투자하고 빠르게 클릭하도록 훈련" 할 필요가 없습니다 .
보너스로 입체 3D 렌더링을 지원합니다.
Kiran의 말을 마친 후 모든 비디오를 열고 다음 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%
}
}
명령 행을 사용하지 않아도되는 경우 mpv 로이를 수행 할 수 있습니다 .
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"
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 필터 를 참조하십시오.
구글은 아마 이미 당신에게 말했다, 당신은 그것을 할 수있는 몇 가지 독점 소프트웨어를 구입할 수 있지만, 경우에 따라 : videocompare, 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)
인코딩 할 필요가 없습니다 (어쨌든 자체 인코딩 아티팩트를 추가 할 필요가 있음), 함께 재생하는 두 vids의 인코딩을 생성하고 파일을 건너 뛰는 프로젝트를 만드십시오.
나는 같은 문제가 있지만 지금까지 온라인에서 만족스러운 솔루션을 보지 못했습니다 (그리고 철저한 검색을했다고 생각합니다). 마침내 나는 추가 $이 필요없는 내 자신의 솔루션을 생각해 냈습니다. 이것은 오래된 질문이지만 내 해결 방법이 여전히 유용하기를 바랍니다.
먼저 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%
이렇게하면 각각 3 개의 비디오 중 하나가 있고 적어도 모두 눈에 매우 동기화 된 방식으로 재생되는 3 개의 VLC 인스턴스가 열립니다. 그러나 세 인스턴스는 처음에 서로 겹칩니다. 재생을 중단하지 않고 각 인스턴스의 제목 표시 줄을 클릭하면 화면에서 나란히 재생되는 것을 볼 수 있습니다. 이것은 다소 성가신 일이지만 매우 불편합니다.
시도했지만 멈춤, 앞으로, 뒤로 등의 단축키를 사용하여 모든 인스턴스를 제어하는 것은 불가능합니다. 그러나 '--repeat'옵션은 비디오를 루프에 넣으므로 다시 시작할 때까지 기다릴 수 있습니다 .
매우 긴 동영상의 경우, 사용 하나 개의 비디오로 나란히 구성에서 비디오를 병합하는 것이 가장 좋습니다 예는 FFmpeg : https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html 및 http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html 이 명령은 두 개의 비디오를 병합하는 방법 만 설명하지만 테스트를하지 않은 경우 여러 번 명령을 실행할 수 있다고 생각합니다 여러 비디오 파일을 통합하십시오.
AutoHotKey 스크립트를 사용하여 매우 짧은 시간 안에 세 명의 플레이어에게 "재생"바로 가기를 보낼 수 있습니다.
그들이 정확히 동시에 연주를 시작할 수 있는지 여부는 다른 문제입니다. 그들이 곧바로 시작할 수 있다고하더라도, 나는 하드 드라이브와의 싸움이있을 것이라고 생각합니다. 이것이 중요한 평가라면 RAM 디스크를 만들고 싶을 수도 있습니다.
많은 플레이어들이 비디오에서 단일 프레임의 사진을 출력 할 수 있습니다.
비디오에서 여러 유형의 이미지 (구름, 연기, 나무, 잔디, 동작이 인코딩을 비교하는 데 적합 함)를 비교하고 각 비디오에서 동일한 프레임을 사용할 수 있도록 여러 지점을 선택할 수 있습니다.
그런 다음 동작의 차이를 발견하지 않고 정적 이미지를 비교할 수 있습니다. 원하는 경우 픽셀 단위로 비교할 수 있습니다.
JPG를 출력으로 사용하지 마십시오. 이는 손실 형식이며 자체 아티팩트를 소개합니다.
이것이 당신이 자주하지 않는 일이라면, vegas와 같은 비디오 편집 소프트웨어를 사용하여 하나의 비디오를 모두 보여줍니다.