繁体   English   中英

通过Python中的子进程暂停mpg123

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM