🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1027閲覧

pygletで音声ファイルの再生がすぐに止まってしまう。

oook

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/27 08:23

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/02/27 23:21

wavファイルだと、どうでしょうか?
oook

2021/02/28 02:25

ご回答いただき、ありがとうございます。wavファイルのテストを失念していました。ただ、先ほど pyglet.resource.media("tmp.wav").play() を実施しても、mp3と挙動は変わりません(1秒程度音がなるだけです。)。FFmpegは、最初に入っていない、というエラーが出たので、事前にインストールしてあります。
oook

2021/02/28 03:36

ありがとうございます。 import pyglet music = pyglet.resource.media('tmp.mp3') music.play() pyglet.app.run() としたらいけました。問題は どうせオブジェクトなので、 pyglet.resource.media('tmp.mp3').play() pyglet.app.run() と書けば良いだろう、っと思い実行したのが原因でした。 分けて書いたら、上手くいきました。ありがとうございます。
jbpb0

2021/02/28 03:56

> 分けて書いたら、上手くいきました。 あれ? 手元のMac(Mojave)にpyglet入れて試したところでは、 pyglet.resource.media("tmp.wav").play() と music = pyglet.resource.media('tmp.wav') music.play() に、違いはありませんでした pyglet.app.run() が有るか無いかで、ちゃんと最後まで再生されるかどうかが変わりました (無いとダメ) MojaveとBig Surで違うのかな??
oook

2021/02/28 04:24

実は以前に、以下のコードを試していました。 詳しい理由は、上手く説明できないのですが、 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 の両方で試しましたが、そのような状況でした。
jbpb0

2021/02/28 07:01

> 音声は再生され続けるのですが、ぼつぼつという音がずっと聞こえます。 そうなんですか 当方のでは、雑音は気付きませんでした ハード(Macの機種)依存なのかもしれませんね
oook

2021/02/28 07:03

そうかもしれませんね。何れにしても、 ご教示いただきまして、ありがとうございました。
guest

回答1

0

ベストアンサー

コードの最後に

python

1pyglet.app.run()

を追加したら、再生が途中で止まらないと思います

参考 Playing sounds and music

投稿2021/02/28 09:06

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問