Merge pull request #1173 from TheCodingLand/local-pyaudio-device-ids
adds configurable device ids for local audio transport
This commit is contained in:
@@ -26,8 +26,15 @@ except ModuleNotFoundError as e:
|
|||||||
raise Exception(f"Missing module: {e}")
|
raise Exception(f"Missing module: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
class LocalTransportParams(TransportParams):
|
||||||
|
input_device_index: int = 0
|
||||||
|
output_device_index: int = 0
|
||||||
|
|
||||||
|
|
||||||
class LocalAudioInputTransport(BaseInputTransport):
|
class LocalAudioInputTransport(BaseInputTransport):
|
||||||
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
|
_params: LocalTransportParams
|
||||||
|
|
||||||
|
def __init__(self, py_audio: pyaudio.PyAudio, params: LocalTransportParams):
|
||||||
super().__init__(params)
|
super().__init__(params)
|
||||||
self._py_audio = py_audio
|
self._py_audio = py_audio
|
||||||
self._in_stream = None
|
self._in_stream = None
|
||||||
@@ -46,6 +53,7 @@ class LocalAudioInputTransport(BaseInputTransport):
|
|||||||
frames_per_buffer=num_frames,
|
frames_per_buffer=num_frames,
|
||||||
stream_callback=self._audio_in_callback,
|
stream_callback=self._audio_in_callback,
|
||||||
input=True,
|
input=True,
|
||||||
|
input_device_index=self._params.input_device_index,
|
||||||
)
|
)
|
||||||
self._in_stream.start_stream()
|
self._in_stream.start_stream()
|
||||||
|
|
||||||
@@ -69,6 +77,8 @@ class LocalAudioInputTransport(BaseInputTransport):
|
|||||||
|
|
||||||
|
|
||||||
class LocalAudioOutputTransport(BaseOutputTransport):
|
class LocalAudioOutputTransport(BaseOutputTransport):
|
||||||
|
_params: LocalTransportParams
|
||||||
|
|
||||||
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
|
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
|
||||||
super().__init__(params)
|
super().__init__(params)
|
||||||
self._py_audio = py_audio
|
self._py_audio = py_audio
|
||||||
@@ -89,6 +99,7 @@ class LocalAudioOutputTransport(BaseOutputTransport):
|
|||||||
channels=self._params.audio_out_channels,
|
channels=self._params.audio_out_channels,
|
||||||
rate=self._sample_rate,
|
rate=self._sample_rate,
|
||||||
output=True,
|
output=True,
|
||||||
|
output_device_index=self._params.output_device_index,
|
||||||
)
|
)
|
||||||
self._out_stream.start_stream()
|
self._out_stream.start_stream()
|
||||||
|
|
||||||
@@ -105,8 +116,8 @@ class LocalAudioOutputTransport(BaseOutputTransport):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class LocalAudioTransport(BaseTransport):
|
class LocalAudioTransport(LocalTransportParams):
|
||||||
def __init__(self, params: TransportParams):
|
def __init__(self, params: LocalTransportParams):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._params = params
|
self._params = params
|
||||||
self._pyaudio = pyaudio.PyAudio()
|
self._pyaudio = pyaudio.PyAudio()
|
||||||
|
|||||||
Reference in New Issue
Block a user