[英]Problem playing back audio with pydub with pyaudio's callback mode
我有一個腳本,它使用 pydub 讀取音頻媒體文件,然后將其輸出到 pyaudio 流。 使用下面的代碼播放速度非常快,我只能聽到音頻片段。 我相信問題在於 pydub 使用毫秒和 pyaudio 想要幀。
def _load_media(self, media_location) :
self.media = AudioSegment.from_file(media_location)
self.stream = self.p.open( format=self.p.get_format_from_width(self.media.sample_width),
channels=self.media.channels,
rate=self.media.frame_rate,
output=True,
stream_callback=self._load_frames)
self.media_loaded = True
def _load_frames(self, in_data, frame_count, time_info, status) :
data = self.media[:frame_count].raw_data
self.media = self.media[frame_count:]
return (data, pyaudio.paContinue)
我遇到了和你一樣的問題,已經解決了。 您的想法是正確的,pyDub 正在使用 ms,其中 pyAudio 為其提供幀。 你只需要像這樣轉換它:
def _load_frames(self, in_data, frame_count, time_info, status) :
time = ( frame_count / self.media.frame_rate ) * 1000.0
data = self.media[:time].raw_data
self.media = self.media[time:]
return (data, pyaudio.paContinue)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.