cheibi
@cheibi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

SDカードからmp3を取得し再生する際のエラー

解決したいこと

下のSDカードからsample.mp3というファイルを取得し、イヤホンジャックから出力するというプログラムをCircuitPython ドライバーをインストールしたRaspberry pi picoで実行するとMP3ファイルのパーズに失敗というエラーが出ます。対処法を教えて頂きたいです。

発生している問題・エラー

トレースバック(最新の呼び出しが末尾):
  ファイル "<stdin>", 行 18<module> 内の
RuntimeError: MP3ファイルのパーズに失敗

該当するソースコード

import board
import audiomp3
import audiopwmio
import busio
import storage
import adafruit_sdcard
import digitalio
import os

spi = busio.SPI(clock=board.GP2, MOSI=board.GP3, MISO=board.GP4)
sd = adafruit_sdcard.SDCard(spi, digitalio.DigitalInOut(board.GP1))
vfs = storage.VfsFat(sd)
storage.mount(vfs, '/sd')
os.listdir('/')

audio = audiopwmio.PWMAudioOut(board.GP0)

decoder = audiomp3.MP3Decoder(open("/sd/sample.mp3","rb"))
print("Playing...")
audio.play(decoder)
while audio.playing:
    pass
print("Done playing!")
0

1Answer

SDカードではなく、内蔵フラッシュにMP3ファイルを置いても、同じエラーとなりますか?
ex., "/sample.mp3"

0Like

Comments

  1. @cheibi

    Questioner

    raspberry pi pico内に保存したファイルを再生する場合は問題ありませんでした。

  2. SDカードに置いた WAVファイルの再生は可能ですか?

    WAVファイルの再生は、次の箇所を変更するだけです。

    - decoder = audiomp3.MP3Decoder(open("/sd/sample.mp3","rb"))
    
    + import audiocore
    + decoder = audiocore.WaveFil(open("/sd/sample.wav","rb"))
    
  3. 同様な環境を作ってやってみましが、自分の場合は「RuntimeError: MP3ファイルのパーズに失敗」も出ず、picoがフリーズしてしまいます。内部フラッシュのMP3は再生できます。

    そもそもSDカードからの読み込みが遅いうえ、mp3デコード処理もあり、再生に間に合わないのかな??

  4. @cheibi

    Questioner

    何度も回答していただきありがとうございますm(_ _)m
    まだ帰宅しておらず試せていないのですが、wavファイルを用いれば再生可能なのでしょうか?

  5. wavファイルを用いれば再生可能なのでしょうか?

    はい、自分はwavファイルは問題なく再生できました。

  6. @cheibi

    Questioner

    ありがとうございます
    帰宅してから試してみます。
    他の質問でもありがとうございましたm(_ _)m

Your answer might help someone💌