2016-04-24 9 views
1

私は、デフォルトのプレーヤーを使用せずにプレイmp3をしようとしているので、私はpygletを試してみたいが、何も動作私はこのようにそれを試してみたプレイmp3

import pyglet 

music = pyglet.resource.media('D:/folder/folder/audio.mp3') 
music.play() 

pyglet.app.run() 

music = pyglet.resource.media('D:\folder\folder\audio.mp3') 

music = pyglet.resource.media('D:\\folder\\folder\\audio.mp3') 

が、このエラー

があります。このような
Traceback (most recent call last): 
    File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pyglet\resource.py", line 624, in media 
    location = self._index[name] 
KeyError: 'D:\folder\folder\audio.mp3' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "D:/PC/PyCharm_project/0_TEMP.py", line 3, in <module> 
    music = pyglet.resource.media('D:\folder\folder\audio.mp3') 
    File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\pyglet\resource.py", line 634, in media 
    raise ResourceNotFoundException(name) 
pyglet.resource.ResourceNotFoundException: Resource "D:\folder\folder\audio.mp3" was not found on the path. Ensure that the filename has the correct captialisation. 
+0

を持って強くお勧めしたいですあなたのエラーメッセージには、Python(pyglet)が 'D:\ f ...'ファイルをフェッチしようとしていることを伝えているエスケープ '\\'のないパスがあります。 '\ f'はエスケープシーケンス'^f 'これはうまくいきません。そして、エラーメッセージはおそらくあなたが与えた他の例には当てはまりません。他のコード行にも同じエラーメッセージ(同一)がありますか? – Torxed

+0

はい、私は上記のすべてのスラッシュの亜種に同じエラーがあります –

答えて

0

これは、リソースをロードする方法によるものです。
は、例えば、このコードを試してみてください。

import pyglet 

music = pyglet.media.load(r'D:\folder\folder\audio.mp3') 
music.play() 

pyglet.app.run() 

これが動作する方法は、それがファイルをロードし、pyglet.resource.media容器にそれを置くことです。名前空間などのために、あなたが書いたコードは作業ディレクトリからのリソースの読み込みのみが許可されています。代わりにpyglet.media.loadを使用して、必要なリソースを現在の名前空間にロードすることができます(注: pygletのソースコードを見ずに、より良い用語が不足しているため、ここで "namespace"これは私が思いつくことができる最高の説明です)。

は、スクリプトフォルダに.mp3を配置することによって、試して、もう一度あなたのコードを実行しますが、相対パスを持つことができます:

import pyglet 

music = pyglet.resource.media('audio.mp3') 
music.play() 

pyglet.app.run() 

しかし、私はあなたがpyglet.media.load()を使用し、見た目at the documentation

+0

ディレクトリ内でオーディオファイルを持っていますが、この方法では別のエラーが表示されます。 '' AVbinは圧縮メディアを解読する必要があります ') pyglet.media.riff。 WAVEFormatException:圧縮メディアを解読するにはAVbinが必要です。 ' –

+0

@L_Oniここでは、pygletの先頭ページを引用しています。「pygletはオプションでAVbinを使用してMP3などのオーディオ形式を再生できます。 mp3形式やその他の形式は、エンコードされたファイル形式であるため、ネイティブにデコードするのは難しいです。別のライブラリを追加しない場合は、代わりに '.wav'オーディオファイルを使用してください。 – Torxed

+0

問題は、simpleaudioがwavファイルで行うのと同じように、gTTSからmp3ファイルを再生するソリューションを探しています。今os.startfileを持っていますが、GUI用のコードを使用したいので、デフォルトプレーヤーがベストアイデアではありません。 –