2014-11-14 5 views
0

pyaudio에 문제가 있습니다. 채널 번호를 1로 설정했을 때만 논 블로킹 스트림으로 사운드를 재생할 수 있습니다. 2로 설정하면 소리와 스크립트가 불투명하게 들립니다. 데이터가 모노 인 경우에도 올바르게 재생하면 안됩니까?Python으로 2 채널 사운드 재생하기 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 

를 삽입하는 것입니다