Я пишу простой интерфейс на Python для воспроизведения и записи интернет-радиоканалов (например, из shoutcast) с помощью mplayer (в подпроцессе).Когда пользователь щелкает станцию, запускается следующий код:
url = http://77.111.88.131:8010 # only an example
cmd = "mplayer %s" % url
p = subprocess.Popen(cmd.split(), shell=False)
wait = os.waitpid(p.pid, 1)
return int(p.pid)
Это работает отлично, поток начинает воспроизводиться так, как должен.Хотя хотелось бы как-то разобрать заголовок потока.Кажется, мне нужно получить название из вывода mplayer.Это вывод при воспроизведении потока на терминале:
$ mplayer http://77.111.88.131:8010
MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing http://77.111.88.131:8010.
Resolving 77.111.88.131 for AF_INET6...
Couldn't resolve name for AF_INET6: 77.111.88.131
Connecting to server 77.111.88.131[77.111.88.131]: 8010...
Name : Justmusic.Fm
Genre : House
Website: http://www.justmusic.fm
Public : yes
Bitrate: 192kbit/s
Cache size set to 320 KBytes
Cache fill: 0.00% (0 bytes)
ICY Info: StreamTitle='(JustMusic.FM) Basement - Zajac, Migren live at Justmusic 2010-10-09';StreamUrl='http://www.justmusic.fm';
Cache fill: 17.50% (57344 bytes)
Audio only file format detected.
Затем он работает до тех пор, пока не остановится.Таким образом, вопрос в том, как я могу получить " (JustMusic.FM) Basement - Zajac, Migren Live на Justmusic 2010-10-09 " и все еще позволить процессу работать?Я не думаю, что subprocess () на самом деле хранит вывод, но я могу ошибаться.Любая помощь высоко ценится:)