我是一个完全的初学者,所以对任何错误表示歉意。这是我在 Python 3.5 中的代码。它在 Raspberry Pi 3 上以 Raspbian 执行。
import subprocess
radio = subprocess.Popen(["mplayer", 'http://edge-bauerabsolute-02-gos1.sharp-stream.com/absolute90s.mp3?'], shell = False , stdout=subprocess.PIPE)
print ("Other code - no waiting for the subprocess to finish")
收音机播放约 30 秒,然后停止。我希望它在后台运行,而无需脚本等待子进程结束。另外,在 Linux 中,如果我停止脚本,收音机会作为 mplayer 的运行进程再次返回(所以 python 脚本一定以某种方式停止它?)
似乎子进程仍在继续,但音乐/声音停止了。它似乎与互联网连接无关,而且如果我等待它也不会再次启动。我尝试过执行 radio.communicate() 或 radio.stdout.read() ,这很有趣,可以让我的收音机连续播放,但不会继续脚本。我没有任何输出,脚本只是有效。
问题:当脚本执行其他操作时,如何允许“广播”进程在后台继续(同时播放音乐)?
幸运的是我自己解决了。 subprocess.PIPE 显然停止/干扰了进程,所以我没有像 stdout=subprocess.PIPE 那样完成 DEVNULL :
DEVNULL = open(os.devnull, 'wb')
radiostream = subprocess.Popen(["mplayer", 'http://edge-bauerabsolute-02-gos1.sharp-stream.com/absolute90s.mp3?&'], shell = False, stdout=DEVNULL, stderr=DEVNULL)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)