我正在使用 kubuntu 的默认视频播放器 - mpv。
例如,我希望所有视频仅在一个窗口中播放。
video01.mkv
video02.mkv
video03.mkv
当 mpv 正在播放 video01.mkv 时,如果我点击 video02.mkv,则当前 mpv 窗口将立即播放它,而不是打开另一个窗口,就像 video03.mkv 的情况一样
但是,我的 mpv 播放器将在三个不同的窗口中播放这 3 个视频。
如何配置它以在一个窗口中播放所有视频?
答案1
A) 简单的解决方案:只需从文件管理器中“拖放”视频文件即可。这会立即替换正在播放的视频,并继承其设置(音量设置、速度、亮度等)
B)没那么简单:编写一个包装脚本来在正在运行的实例中加载视频mpv
,否则启动一个实例
先决条件:
wmctrl
并且socat
必须安装(所有 Ubuntu 存储库中都应该可以找到)mpv
的配置文件中需要这一行:input-ipc-server=/tmp/mpvsocket
(您应该在/home/your/.mpv
或中找到该文件/home/your/.config/mpv
)
mps.sh
在您的目录中创建一个脚本,例如,/home/your/bin
保存以下代码:
#/bin/bash
fle=$1
if ! pgrep -x "mpv" >/dev/null ; then
mpv "$fle"
else
wmctrl -x -R gl.mpv
echo "{ \"command\": [\"loadfile\", \"$fle\"] }" | socat - /tmp/mpvsocket
fi
使其可执行,然后通过right-click视频文件使其成为某些视频格式的默认格式,然后 →打开用→使用其他应用程序打开。
怎么运行的:
- 如果没有,pgrep 找到 1 个 mpv-instance,则播放文件
- 否则 wmctrl 查找类名为 gl.mpv, ##1 的窗口
- 在当前工作区中置于前台
- 使用 socat ##2 将文件加载到该窗口
如果没有,请检查以下事项:
##1 您的系统上的窗口类别可能不同?在 mpv 中启动任何视频,然后在终端中执行此操作:
wmctrl -xl | grep mpv
最后一列显示视频标题的行在第三列显示类名。用gl.mpv
该名称替换 my。
##2socat
在播放视频时,在终端中使用此命令检查功能:
echo '{ "command": ["set_property", "pause", true] }' | socat - /tmp/mpvsocket
如果这确实暂停了视频,则表明 socat 连接有效。是时候再三检查脚本行中的引号和反斜杠了。这些是必需的,正如上面给出的那样,因为我们在$fle
那里有变量。在“暂停”示例中没有变量。
如果“暂停”示例不起作用,我可以提供更好的帮助:再次检查所有内容,重新启动机器,然后祈祷好运 ;-))