mpv 在一个窗口中播放所有视频

mpv 在一个窗口中播放所有视频

我正在使用 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那里有变量。在“暂停”示例中没有变量。

如果“暂停”示例不起作用,我可以提供更好的帮助:再次检查所有内容,重新启动机器,然后祈祷好运 ;-))

相关内容