如何在不使用终端的情况下退出 omxplayer?

Posted

技术标签:

【中文标题】如何在不使用终端的情况下退出 omxplayer?【英文标题】:how to quit omxplayer without using terminal? 【发布时间】:2015-07-14 08:54:28 【问题描述】:

我使用 Tkinter 为树莓派制作了一个应用程序启动器。我通过放置使应用程序启动器在 x 加载后自动启动

@/usr/bin/sudo /home/pi/myscript.py 在 /etc/xdg/lxsession/LXDE-pi/autostart 中。

对于从 python 脚本中启动应用程序,我使用的是 subprocess 模块。相同的代码是:

subprocess.Popen('python /home/pi/script.py')
subprocess.Popen('scratch')
subprocess.Popen('omxplayer -o local /home/pi/video.mp4',shell=True)

现在发生的事情是所有进程都运行良好,即所有应用程序都能完美启动,当我关闭应用程序(使用关闭按钮或 alt+f4)时,它也运行良好。

但是 omxplayer 似乎处于全屏模式(尽管它没有覆盖我的整个屏幕)。那里没有关闭按钮。一些文档说有快捷键,比如 q 用于退出,但也没有工作。alt+f4 也不起作用,而且因为我是从我的 python 脚本(应用程序启动器)中启动它,所以我不能使用终端退出。

但是当我从终端中启动相同的视频时,q 和 alt+f4 都可以正常工作(即我可以同时使用它们来退出 omxplayer)。

那么任何人都可以解释为什么会发生这种情况以及如何在从 python 脚本中启动 omxplayer 时启用退出功能?

【问题讨论】:

您是否尝试过杀死从 Python 中以omxplayer 提出的那些进程? 【参考方案1】:

omxPlayer 不能在您的 Xwindows 上运行。它使用 GPU 将自己直接渲染到您的显示器上。因为它不在 Xwindows 上运行,所以它不需要或没有任何关闭按钮。此外,当您启动此播放器时,它会成为您启动它的应用程序的活动窗口。

目前我正在使用另一个并行应用程序来执行命令并运行它

ps -ef | grep /usr/bin/omxplayer | grep -v grep | awk '打印 $2' | xargs 杀死 -9

命令退出。我现在正在寻找更好的解决方案。

【讨论】:

【参考方案2】:

我有同样的问题,omxplayer 在播放声音文件后往往会保持活动状态。我发现 omxplayer 在某些 TTY 上往往存在问题。有一个选项--no-keys 似乎让 omxplayer 在播放文件后退出。示例:

omxplayer --no-keys your_sound_file.mp3

【讨论】:

以上是关于如何在不使用终端的情况下退出 omxplayer?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不退出的情况下使用 Firebase API 创建新用户? [复制]

如何在不使用“除外”python的情况下退出不和谐机器人

如何在不使用 brew 的情况下使用终端将 maven 安装到 mac [重复]

在不关闭 MacOS 的情况下重启终端

如何在不保存的情况下退出 Eclipse

如何在不使用 pip 的情况下在 Linux 终端中查看 pysnmp 版本