前提・実現したいこと
pygletを利用してmp3ファイルを再生したい。
しかし、3分程度の音声ファイルでも、2秒程度で再生が終わってしまいます。
その原因と対処策を知りたいです。
該当のソースコード
Python
1import pyglet 2pyglet.resource.media("tmp.mp3",streaming=False).play()
試したこと
異なる Mac OS で Mojave や Big Sur で試したが、変わらなかった。
import time を導入し、time.sleep などを利用した。
pyglet.media.load()の関数も試してみた。
Jupyter notebook 以外にもコマンドラインからの実行を試した。
補足情報(FW/ツールのバージョンなど)
Mac OS Big Sur
Python 3.8
pyglet=1.5.6
Jupyter notebook
wavファイルだと、どうでしょうか?
https://pyglet.readthedocs.io/en/latest/modules/media.html
に「pyglet can play WAV files, and if FFmpeg is installed, many other audio and video formats.」とありますが、それは大丈夫でしょうか?
ご回答いただき、ありがとうございます。wavファイルのテストを失念していました。ただ、先ほど pyglet.resource.media("tmp.wav").play() を実施しても、mp3と挙動は変わりません(1秒程度音がなるだけです。)。FFmpegは、最初に入っていない、というエラーが出たので、事前にインストールしてあります。
コードの最後に
pyglet.app.run()
を追加したら、いかがでしょうか?
参考
https://pyglet.readthedocs.io/en/latest/programming_guide/quickstart.html#playing-sounds-and-music
ありがとうございます。
import pyglet
music = pyglet.resource.media('tmp.mp3')
music.play()
pyglet.app.run()
としたらいけました。問題は
どうせオブジェクトなので、
pyglet.resource.media('tmp.mp3').play()
pyglet.app.run()
と書けば良いだろう、っと思い実行したのが原因でした。
分けて書いたら、上手くいきました。ありがとうございます。
> 分けて書いたら、上手くいきました。
あれ? 手元のMac(Mojave)にpyglet入れて試したところでは、
pyglet.resource.media("tmp.wav").play()
と
music = pyglet.resource.media('tmp.wav')
music.play()
に、違いはありませんでした
pyglet.app.run()
が有るか無いかで、ちゃんと最後まで再生されるかどうかが変わりました
(無いとダメ)
MojaveとBig Surで違うのかな??
実は以前に、以下のコードを試していました。
詳しい理由は、上手く説明できないのですが、
import pyglet
pyglet.resource.media('tmp.mp3').play()
pyglet.app.run()
っと実行すると、音声は再生され続けるのですが、ぼつぼつという音がずっと聞こえます。
しかし、
music = pyglet.resource.media('tmp.mp3')
music.play()
pyglet.app.run()
っと省略されずに書くと意図通り動きました。
一瞬でなって聞こえなくなってしまうのは、
pyglet.app.run()
を入れたら、解決できました。
MojaveとBig Sur の両方で試しましたが、そのような状況でした。
> 音声は再生され続けるのですが、ぼつぼつという音がずっと聞こえます。
そうなんですか
当方のでは、雑音は気付きませんでした
ハード(Macの機種)依存なのかもしれませんね
そうかもしれませんね。何れにしても、
ご教示いただきまして、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー