簡體   English   中英

使用pyaudio的回調模式用pydub播放音頻的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM