Gru*_*ear 55 windows-7 media-player software-rec
我有 3 个视频,所有 3 个都具有相同的时间,相同的帧数,它们仅在编码质量方面有所不同。
现在我需要它们以同步方式并行运行以进行评估。意思是当我同时按下“播放”时!视频应该开始。类比地表示停止、前进、后退。
有谁知道有哪位球员能够做到这一点?我的意思是并排播放超过 1 个视频...
平台:Win7
小智 44
如果有人仍然对此感兴趣,那么当前版本的 VLC 无需任何脚本或附加组件即可很好地完成此操作。但据我所知,您只能同步播放两个文件,而不是 3 个。
llo*_*gan 24
如果您不介意使用命令行,则可以使用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"
Run Code Online (Sandbox Code Playgroud)
mpv --lavfi-complex="[vid1][vid2]hstack[vo];[aid1][aid2]amix[ao]" input1.mkv --external-file=input2.mkv
Run Code Online (Sandbox Code Playgroud)
在 Windows 中使用;分隔每个文件名--external-files(如3 个视频示例所示)。在 Linux 和 macOS 中使用:. 或者,使用两个实例--external-file代替,例如:--external-file=input2.mkv --external-file=input3.mkv。
文件的高度必须相同。如果不是,则添加比例、填充和/或裁剪过滤器。有关更多信息,请参阅mpv 文档和FFmpeg 过滤器。
Ole*_*leg 18
Bino是一种跨平台媒体播放器,通常推荐用于立体文件播放。除其他功能外,它还支持多个流的同步播放。
界面起初可能看起来有点原始或令人困惑,但您需要做的就是
瞧,您获得了同步播放。对所有流使用一组播放控件的那种,因此您不必像@ta.speot.is 建议的那样“投资一些手指重量并训练自己非常快速地点击”。
作为奖励,它支持渲染立体 3D。
小智 16
Windows 上的 VLC(1.1.10 或更高版本):
OS X 上的 VLC 不提供相同的选项集。但是,您可以使用open -a VLC.
小智 10
GridPlayer可以同时播放任意数量的视频。您可以播放、停止、搜索所有视频或单独播放每个视频。可以设置循环。您还可以控制播放速率、音量、动物园等。
完全披露:我是作者:)
小智 5
谷歌可能已经告诉你,你可以购买一些可以做到这一点的专有软件,但以防万一:videocompare、tmpgenc、vidlord...
这是免费的:http ://forum.doom9.org/showthread.php?t=138430
(线程末尾的有效下载链接)
未经测试,因为我的葡萄酒设置现在完全搞砸了。它不会并排播放,而是堆叠播放(除非你有一个非常好的液晶显示器,否则你不会通过在屏幕的两个相对角播放相同的视频来看到相同的东西)
如果您认为您确实需要并排,您可以使用 avisynth 来执行 zimmer 所说的操作。
clip1 = DirectShowSource("C:\MyEncode1.foo", audio=false)
clip2 = DirectShowSource("C:\MyEncode2.foo", audio=false)
StackVertical(clip1,clip2)
Run Code Online (Sandbox Code Playgroud)
(参考forum.doom9.org/showthread.php?t=139769)
您不需要进行编码(无论如何都会添加自己的编码工件),只需创建一个项目即可生成一起播放的两个视频的编码并跳过文件。
执行 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%
}
}
Run Code Online (Sandbox Code Playgroud)
该脚本将您的击键发送到 VLC 媒体播放器的所有正在运行的实例。如果使用鼠标则不起作用。
这些事情应该有效:
Ctrl + right / Alt + right / Shift + right Ctrl + left / Alt + left / Shift + leftspace ] [ 您可以轻松地在该行下方添加其他击键:~^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%
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233492 次 |
| 最近记录: |