pub struct MediaStreamAudioDestinationNode { /* private fields */ }
Expand description
An audio stream destination (e.g. WebRTC sink)
- MDN documentation: https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode
- specification: https://www.w3.org/TR/webaudio/#mediastreamaudiodestinationnode
- see also:
BaseAudioContext::create_media_stream_destination
Since the w3c MediaStream
interface is not part of this library, we cannot adhere to the
official specification. Instead, you can pass in any callback that handles audio buffers.
IMPORTANT: you must consume the buffers faster than the render thread produces them, or you will miss frames. Consider to spin up a dedicated thread to consume the buffers and cache them.
Usage
use web_audio_api::context::{AudioContext, BaseAudioContext};
use web_audio_api::node::{AudioNode, AudioScheduledSourceNode};
// Create an audio context where all audio nodes lives
let context = AudioContext::new(None);
// Create an oscillator node with sine (default) type
let osc = context.create_oscillator();
// Create a media destination node
let dest = context.create_media_stream_destination();
osc.connect(&dest);
osc.start();
// Handle recorded buffers
println!("samples recorded:");
let mut samples_recorded = 0;
for item in dest.stream() {
let buffer = item.unwrap();
// You could write the samples to a file here.
samples_recorded += buffer.length();
print!("{}\r", samples_recorded);
}
Examples
cargo run --release --example recorder
Implementations
sourceimpl MediaStreamAudioDestinationNode
impl MediaStreamAudioDestinationNode
sourcepub fn new<C: BaseAudioContext>(
context: &C,
options: ChannelConfigOptions
) -> Self
pub fn new<C: BaseAudioContext>(
context: &C,
options: ChannelConfigOptions
) -> Self
Create a new MediaStreamAudioDestinationNode
sourcepub fn stream(&self) -> impl MediaStream
pub fn stream(&self) -> impl MediaStream
A MediaStream
iterator producing audio buffers with the same number of channels as the
node itself
Note that while you can call this function multiple times and poll all iterators concurrently, this could lead to unexpected behavior as the buffers will only be offered once.
Trait Implementations
sourceimpl AudioNode for MediaStreamAudioDestinationNode
impl AudioNode for MediaStreamAudioDestinationNode
fn registration(&self) -> &AudioContextRegistration
fn channel_config_raw(&self) -> &ChannelConfig
sourcefn number_of_inputs(&self) -> u32
fn number_of_inputs(&self) -> u32
The number of inputs feeding into the AudioNode. For source nodes, this will be 0.
sourcefn number_of_outputs(&self) -> u32
fn number_of_outputs(&self) -> u32
The number of outputs coming out of the AudioNode.
fn id(&self) -> &AudioNodeId
fn channel_config_cloned(&self) -> ChannelConfig
sourcefn context(&self) -> &ConcreteBaseAudioContext
fn context(&self) -> &ConcreteBaseAudioContext
The BaseAudioContext which owns this AudioNode.
sourcefn connect<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode
fn connect<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode
Connect the output of this AudioNode to the input of another node. Read more
sourcefn connect_at<'a>(
&self,
dest: &'a dyn AudioNode,
output: u32,
input: u32
) -> &'a dyn AudioNode
fn connect_at<'a>(
&self,
dest: &'a dyn AudioNode,
output: u32,
input: u32
) -> &'a dyn AudioNode
Connect a specific output of this AudioNode to a specific input of another node. Read more
sourcefn disconnect_from<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode
fn disconnect_from<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode
Disconnects all outputs of the AudioNode that go to a specific destination AudioNode.
sourcefn disconnect(&self)
fn disconnect(&self)
Disconnects all outgoing connections from the AudioNode.
sourcefn channel_count_mode(&self) -> ChannelCountMode
fn channel_count_mode(&self) -> ChannelCountMode
Represents an enumerated value describing the way channels must be matched between the node’s inputs and outputs. Read more
fn set_channel_count_mode(&self, v: ChannelCountMode)
sourcefn channel_interpretation(&self) -> ChannelInterpretation
fn channel_interpretation(&self) -> ChannelInterpretation
Represents an enumerated value describing the meaning of the channels. This interpretation will define how audio up-mixing and down-mixing will happen. Read more
fn set_channel_interpretation(&self, v: ChannelInterpretation)
sourcefn channel_count(&self) -> usize
fn channel_count(&self) -> usize
Represents an integer used to determine how many channels are used when up-mixing and down-mixing connections to any inputs to the node. Read more
fn set_channel_count(&self, v: usize)
Auto Trait Implementations
impl RefUnwindSafe for MediaStreamAudioDestinationNode
impl Send for MediaStreamAudioDestinationNode
impl Sync for MediaStreamAudioDestinationNode
impl Unpin for MediaStreamAudioDestinationNode
impl UnwindSafe for MediaStreamAudioDestinationNode
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more