2014-11-14 36 views
0

我有一個pyaudio問題。只有當我將頻道號設置爲1時,才能播放非阻塞流的聲音。當我將其設置爲2時,我聽不到任何聲音,腳本無法退出。即使數據是單聲道的,它不應該正常播放嗎?這裏是我的代碼片段:使用Python播放雙聲道聲音PyAudio

pa = pyaudio.PyAudio() 
out_stream = pa.open(format = pyaudio.paFloat32, 
      channels = 2, 
      rate = 44100, 
      output = True, 
      stream_callback = self._output_callback(out_data), 
      frames_per_buffer=100) 

out_stream.start_stream() 
    while(out_stream.is_active()): 
     time.sleep(0.1) 
    out_stream.stop_stream() 

pa.terminate() 


@staticmethod 
def _output_callback(wav_data): 

    def callback(in_data, frame_count, time_info, status): 
     pos = callback.pos 
     callback.pos += frame_count 
     out_data = wav_data[pos:pos+frame_count] 
     return (out_data, pyaudio.paContinue) 
    callback.pos = 0 

    return callback 

OUT_DATA是numpy.float32格式numpy的陣列

回答

0

好吧,我知道其中的原因。以前我不知道,但跳水後一點到pyaudio soruce我意識到,在回調函數我應該返回

frame_count * number_of_channels 

幀。所以在我的情況的解決方案是在回調函數的開頭插入

frame_count *= 2  # Because of 2 channels