[英]Pausing mpg123 through subprocess in Python
我的问题是我想在后台运行mpg123并播放/暂停mp3文件。
我像这样打开子进程:
player = subprocess.Popen(["mpg123", "alarm.mp3", "-C"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
但是,当我尝试使用以下命令暂停mpg123时
player.stdin.write("s")
它仅返回一个基于字符串长度的数字(在这种情况下:1)
发现了问题! 大约每次输入后,您都必须刷新标准输入。 工作代码(请注意,我切换到了mplayer,因为使用mpg123无法正常工作):
player = subprocess.Popen(["mplayer", "/music.mp3"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
time.sleep(10)
player.stdin.write("pause")
player.stdin.flush()
mpg123需要类似终端的标准输入,PIPE无法正常工作。 试试:
import os
import pty
import subprocess
import time
master, slave = os.openpty()
p = subprocess.Popen(['mpg123', '-C', 'music.mp3'], stdin=master)
time.sleep(3)
os.write(slave, 's')
time.sleep(3)
os.write(slave, 's')
time.sleep(6)
os.write(slave, 'q')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.