如何从字节播放 mp3?
How to play mp3 from bytes?
有没有办法直接使用 python 从 bytes 播放 mp3?如果没有,我可以将二进制文件转换为不同的音频格式并使二进制文件可以播放吗?
编辑:以下代码适用于 wav
个文件,但不适用于 mp3
from pygame import mixer, time
mixer.pre_init(44100, -16, 2, 2048)
mixer.init()
data = open('filename.mp3', 'rb').read()
sound = mixer.Sound(buffer=data)
audio = sound.play()
while audio.get_busy():
time.Clock().tick(10)
编辑:
问题已经解决,如果你遇到类似问题,请看下面我的回答
我看到了你的 pygame 标签,所以我将在 pygame 中完成此操作。 Pygame 可以使用此行从字节加载文件:sound = pygame.mixer.Sound(bytes)
或 sound = pygame.mixer.Sound(buffer=bytes)
。我不能保证这适用于 mp3 文件,但是,您可能需要使用 OGG 或 WAV 文件,作为字节。
对于可能面临类似问题的任何人,此方法有效
from pydub import AudioSegment
from pydub.playback import play
import io
data = open('filename.mp3', 'rb').read()
song = AudioSegment.from_file(io.BytesIO(data), format="mp3")
play(song)
有没有办法直接使用 python 从 bytes 播放 mp3?如果没有,我可以将二进制文件转换为不同的音频格式并使二进制文件可以播放吗?
编辑:以下代码适用于 wav
个文件,但不适用于 mp3
from pygame import mixer, time
mixer.pre_init(44100, -16, 2, 2048)
mixer.init()
data = open('filename.mp3', 'rb').read()
sound = mixer.Sound(buffer=data)
audio = sound.play()
while audio.get_busy():
time.Clock().tick(10)
编辑: 问题已经解决,如果你遇到类似问题,请看下面我的回答
我看到了你的 pygame 标签,所以我将在 pygame 中完成此操作。 Pygame 可以使用此行从字节加载文件:sound = pygame.mixer.Sound(bytes)
或 sound = pygame.mixer.Sound(buffer=bytes)
。我不能保证这适用于 mp3 文件,但是,您可能需要使用 OGG 或 WAV 文件,作为字节。
对于可能面临类似问题的任何人,此方法有效
from pydub import AudioSegment
from pydub.playback import play
import io
data = open('filename.mp3', 'rb').read()
song = AudioSegment.from_file(io.BytesIO(data), format="mp3")
play(song)