我正在开发一个系统,其中Raspberry Pi使用Omxplayer在PyQt GUI上播放YouTube视频(我认为PyQt位是不相关的)(就像演员扮演一样,人们以前也这样做过)
PyQt程序将挂起而不播放视频,而不是播放视频。下面将更详细地解释该过程:
YouTube链接(例如:https://www.youtube.com/watch?v=ciASlzZCQOU)通过POST请求发送到我的Python脚本(在无头RPi上运行),脚本应使用以下命令在Raspberry Pi上启动omxplayer:
"omxplayer -o both --orientation 0 `youtube-dl -g -f best \"{}\"`".format(youtube_link)
并在正在运行的PyQt程序上显示视频。如果我在shell中手动执行commmand(通过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脚本来完成这项工作,但似乎没有解决问题
任何帮助都将不胜感激
马克在评论中的建议是解决方案:在命令后面附加一个
&
修复了这个问题——它与os.system
的关系不大相关问题 更多 >
编程相关推荐