2015-02-22 6 views
1

Я отправляю URL-адрес, загружая аудиофайл (m4a) и пытаюсь воспроизвести его с терминала с помощью скрипта Python. Когда я печатаюСлушать m4a в скрипте python с mplayer

mplayer asdf.m4a 

в терминале он отлично играет. Но когда я выполнить следующий код

from mplayer import Player 

player = Player() 
player.loadfile('asdf.m4a') 

, как показано в руководстве MPlayer, я получаю следующие ошибки:

mplayer: could not connect to socket 
mplayer: No such file or directory 

Я пытался выяснить это в течение нескольких дней, и теперь он кажется, что это должно быть очень просто. Я не знаю, что случилось. Я смог использовать pygame для воспроизведения mp3 и ogg, но мне нужно играть в m4a, и я просто не могу заставить mplayer работать для меня.

Только связанные проблемы, которые я видел, предложили добавить nolirc = yes в файл конфигурации mplayer. Не помогло.

Любая помощь была бы принята с благодарностью.

+0

Вы уверены, что вы скрипт находится в том же каталоге, что и файл? –

+0

Да, безусловно. –

ответ

1

Худший способ, но может быть полезно:

from subprocess import Popen, PIPE 

pipes = dict(stdin=PIPE, stdout=PIPE, stderr=PIPE) 
mplayer = Popen(["mplayer", "asdf.m4a"], **pipes) 

# to control u can use Popen.communicate 
mplayer.communicate(input=b">") 
sys.stdout.flush() 
+0

Я понятия не имею, что делает этот код, но похоже, что он работает. Спасибо. –

+0

@ChrisLavan этот код открывает новый процесс и ввод и вывод конвейера в существующий интерпретатор python. – Deerenaros

+0

Не могли бы вы рассказать мне, что означает ** трубы? Кроме того, я хотел бы знать, когда будет играть mplayer, и я понимаю, что я могу контролировать данные, проходящие через трубу, но я понятия не имею, как этого добиться. –

0

Попробуйте использовать абсолютный путь к файлу. Если вы запускаете этот скрипт в среде IDE или отладчике, иногда это может испортить относительный путь.

Я хотел бы попробовать:

import os 
from mplayer import Player 

player = Player() 
abspath = os.path.join(os.path.dirname(__file__), 'asdf.m4a') 
player.loadfile(abspath)