Python 不播放 Omxplayer 视频

Posted

技术标签:

【中文标题】Python 不播放 Omxplayer 视频【英文标题】:Python not playing Omxplayer video 【发布时间】:2021-04-10 13:09:17 【问题描述】:

我正在开发一个系统,其中 Raspberry Pi 使用 Omxplayer 在 PyQt GUI 上播放 YouTube 视频(我认为 PyQt 位无关紧要)(就像演员一样——人们以前做过)。

PyQt 程序没有播放视频,而是挂起,视频没有播放。该过程在下面更详细地解释:

通过 POST 请求将 YouTube 链接(例如:“https://www.youtube.com/watch?v=ciASlzZCQOU”)发送到我的 Python 脚本(在无头 RPi 上运行),并且脚本应该启动使用以下命令在 Raspberry Pi 上运行 omxplayer: "omxplayer -o both --orientation 0 `youtube-dl -g -f best \"\"`".format(youtube_link) 并在正在运行的 PyQt 程序上显示视频。如果我在 shell 中手动执行命令(通过 ssh 和物理),这确实有效。

整个过程由 RPi 上的以下代码块处理:

elif self.path.endswith("/playVideo"):
        content_length = int(self.headers['Content-Length']) # <--- Gets the size of data

        youtube_link = self.rfile.read(content_length).decode('utf-8')
        print(youtube_link)
        play_command = "omxplayer -o both --orientation 0 `youtube-dl -g -f best \"\"`".format(youtube_link)
        print(play_command)
        os.system(play_command)

该块的作用是解码 POST 数据,获取 YouTube 链接并使用子 shell 中的链接执行命令(使用 os.system())。

这个块输出:

https://www.youtube.com/watch?v=ciASlzZCQOU
omxplayer -o both --orientation 0 `youtube-dl -g -f best "https://www.youtube.com/watch?v=ciASlzZCQOU"`

几秒钟后导致主程序挂起。之后什么都没有发生,视频没有播放,我必须强制 Python 进程退出。

我以前能够完成这项工作,但我似乎已经破坏了它,我认为这是一个简单的问题,但我似乎看不到它。我曾尝试使用subprocess.Popen() 而不是os.system(),甚至创建了一个shell 脚本来执行此操作,但似乎没有任何解决问题的方法。

任何帮助将不胜感激。

【问题讨论】:

也许你需要在你的命令后面加上&amp; 啊,这个主意,我马上试试——谢谢 所以应该是play_command = "omxplayer -o both --orientation 0 `youtube-dl -g -f best \"\"` &amp;".format(youtube_link) ? 嗨,谢谢,它确实有效。我需要在重新启动后进行测试,也许是在压力条件下或其他什么情况下,以确保它不是侥幸,但到目前为止一切都很好! 【参考方案1】:

马克在 cmets 中的建议是解决方案:在命令中附加一个尾随 &amp; 可以解决问题 - 它与 os.system 关系不大。

【讨论】:

干得好!感谢您与 Stack Overflow 社区分享。顺便说一句,您可以接受自己的答案并获得积分。 哦,我没有意识到 - 谢谢你让我知道! 哦,它说在 2 天内 - 但嘿,这很酷!

以上是关于Python 不播放 Omxplayer 视频的主要内容,如果未能解决你的问题,请参考以下文章

树莓派播放视频的播放器omxplayer

播放视频时 OMXPlayer 卡住

尝试使用 Omxplayer 同步 LED 和视频 - 出现 omxplayer.bin 错误和其他问题

不要在 2 个视频之间显示桌面

Python 与 omxplayer 通信

cvlc 不能播放 rtsp(omxplayer 可以)