Module media.audio
Classes
class Audio (stream, mode='w')
-
Expand source code
class Audio(): def __init__(self, stream, mode="w"): self.ffmpeg = stream self.mode=mode self.played=False self.stopwatch=self.ffmpeg.stopwatch def play(self, channels=2, device=None): if not self.ffmpeg.loader["loaded"]: raise WrongOrderError("Stream is not loaded.") if self.played: self.sdStream.Stop() info=self.ffmpeg.info["streams"]["audio"][self.ffmpeg.loader["audio"]] self.channels=channels self.device=device streamOptions={"frames_per_buffer":info["frame_size"]} if self.mode == "rw": if type(self.device) in [list, tuple]: streamOptions.update(input_device_index=self.device[0], output_device_index=self.device[1]) else: streamOptions.update(input_device_index=self.device, output_device_index=self.device) elif self.mode == "r": streamOptions.update(input_device_index=self.device) else: streamOptions.update(output_device_index=self.device) self.streamOptions=streamOptions self.sdStream=Sounddevice(mode=self.mode, dataQueue=self.ffmpeg._audioQ, stopwatch=self.stopwatch, streamOptions={"samplerate":info["sample_rate"], "blocksize":info["frame_size"], "channels":self.channels, "device":self.device}) self.played=True self.sdStream.Play() def pause(self): if not self.played: raise WrongOrderError("Not played") self.sdStream.Pause() def resume(self): if not self.played: raise WrongOrderError("Not played") self.sdStream.fixDataQueue(self.ffmpeg._audioQ) self.sdStream.Resume() def stop(self): if not self.played: raise WrongOrderError("Not played") self.sdStream.Stop() def close(self): self.sdStream.Close()
Methods
def close(self)
-
Expand source code
def close(self): self.sdStream.Close()
def pause(self)
-
Expand source code
def pause(self): if not self.played: raise WrongOrderError("Not played") self.sdStream.Pause()
def play(self, channels=2, device=None)
-
Expand source code
def play(self, channels=2, device=None): if not self.ffmpeg.loader["loaded"]: raise WrongOrderError("Stream is not loaded.") if self.played: self.sdStream.Stop() info=self.ffmpeg.info["streams"]["audio"][self.ffmpeg.loader["audio"]] self.channels=channels self.device=device streamOptions={"frames_per_buffer":info["frame_size"]} if self.mode == "rw": if type(self.device) in [list, tuple]: streamOptions.update(input_device_index=self.device[0], output_device_index=self.device[1]) else: streamOptions.update(input_device_index=self.device, output_device_index=self.device) elif self.mode == "r": streamOptions.update(input_device_index=self.device) else: streamOptions.update(output_device_index=self.device) self.streamOptions=streamOptions self.sdStream=Sounddevice(mode=self.mode, dataQueue=self.ffmpeg._audioQ, stopwatch=self.stopwatch, streamOptions={"samplerate":info["sample_rate"], "blocksize":info["frame_size"], "channels":self.channels, "device":self.device}) self.played=True self.sdStream.Play()
def resume(self)
-
Expand source code
def resume(self): if not self.played: raise WrongOrderError("Not played") self.sdStream.fixDataQueue(self.ffmpeg._audioQ) self.sdStream.Resume()
def stop(self)
-
Expand source code
def stop(self): if not self.played: raise WrongOrderError("Not played") self.sdStream.Stop()