【问题标题】:Problem playing back audio with pydub with pyaudio's callback mode使用pyaudio的回调模式使用pydub播放音频时出现问题
【发布时间】:2020-12-31 00:28:05
【问题描述】:

我有一个脚本,它使用 pydub 读取音频媒体文件,然后将其输出到 pyaudio 流。使用下面的代码,它播放速度非常快,我只听到音频的 sn-ps。我认为问题在于 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)

【问题讨论】:

    标签: python pyaudio pydub


    【解决方案1】:

    我遇到了和你一样的问题,然后解决了。您的想法是正确的,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)
    

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      相关资源
      最近更新 更多