我是一个完全的初学者,如果有任何错误,我深表歉意。这是我在 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")
radio 播放了大约 30 秒,然后停止。我希望它在后台运行而无需脚本等待子进程结束。此外,在 Linux 中,如果我停止脚本, radio 会作为 mplayer 的运行进程再次返回(所以 python 脚本必须以某种方式停止它?)
似乎子进程继续但音乐/声音停止了。它似乎与互联网连接无关,如果我等待它也不会再次启动。我试过做 radio.communicate() 或 radio.stdout.read() 这足够有趣让我的 radio 连续播放,但不会继续脚本。我没有任何输出,脚本只是保留。
问题:如何在脚本执行其他操作时让“广播”进程在后台继续(同时播放音乐)?
最佳答案
幸好我自己解决了。 subprocess.PIPE 显然停止/干扰了进程,所以我没有像这样执行 DEVNULL 而不是 stdout=subprocess.PIPE :
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)
关于python - 几秒钟后 Subprocess.Popen 停止(或出现故障),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297000/