Python 没有播放 Omxplayer 视频
Python not playing Omxplayer video
我正在开发一个系统,其中 Raspberry Pi 使用 Omxplayer 在 PyQt GUI 上播放 YouTube 视频(我认为 PyQt 位是无关紧要的)(就像演员 - 人们以前做过这个)。
PyQt 程序没有播放视频,而是挂起并且没有播放视频。下面更详细地解释了该过程:
YouTube link(例如:“https://www.youtube.com/watch?v=ciASlzZCQOU”)被发送到我的 Python 脚本(运行 在无头 RPi 上),通过 POST 请求,脚本应使用以下命令在 Raspberry Pi 上启动 omxplayer:
"omxplayer -o both --orientation 0 `youtube-dl -g -f best \"{}\"`".format(youtube_link)
并在 运行 的 PyQt 程序之上显示视频。如果我在 shell 中手动执行命令(通过 ssh 和物理),这确实有效。
整个过程由树莓派上的以下代码块负责:
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 link 并在子 shell 中使用 link 执行命令(使用 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 脚本来执行此操作,但似乎无法解决问题。
如有任何帮助,我们将不胜感激。
马克在评论中的建议是解决方案:在命令后附加一个尾随 &
解决了问题 - 它与 os.system
.
关系不大
我正在开发一个系统,其中 Raspberry Pi 使用 Omxplayer 在 PyQt GUI 上播放 YouTube 视频(我认为 PyQt 位是无关紧要的)(就像演员 - 人们以前做过这个)。
PyQt 程序没有播放视频,而是挂起并且没有播放视频。下面更详细地解释了该过程:
YouTube link(例如:“https://www.youtube.com/watch?v=ciASlzZCQOU”)被发送到我的 Python 脚本(运行 在无头 RPi 上),通过 POST 请求,脚本应使用以下命令在 Raspberry Pi 上启动 omxplayer:
"omxplayer -o both --orientation 0 `youtube-dl -g -f best \"{}\"`".format(youtube_link)
并在 运行 的 PyQt 程序之上显示视频。如果我在 shell 中手动执行命令(通过 ssh 和物理),这确实有效。
整个过程由树莓派上的以下代码块负责:
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 link 并在子 shell 中使用 link 执行命令(使用 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 脚本来执行此操作,但似乎无法解决问题。
如有任何帮助,我们将不胜感激。
马克在评论中的建议是解决方案:在命令后附加一个尾随 &
解决了问题 - 它与 os.system
.