Skip to main content

ff_encode/video/builder/
audio.rs

1//! Audio stream settings for [`VideoEncoderBuilder`].
2
3use super::VideoEncoderBuilder;
4use crate::AudioCodec;
5
6impl VideoEncoderBuilder {
7    /// Configure audio stream settings.
8    #[must_use]
9    pub fn audio(mut self, sample_rate: u32, channels: u32) -> Self {
10        self.audio_sample_rate = Some(sample_rate);
11        self.audio_channels = Some(channels);
12        self
13    }
14
15    /// Set audio codec.
16    #[must_use]
17    pub fn audio_codec(mut self, codec: AudioCodec) -> Self {
18        self.audio_codec = codec;
19        self.audio_codec_explicit = true;
20        self
21    }
22
23    /// Set audio bitrate in bits per second.
24    #[must_use]
25    pub fn audio_bitrate(mut self, bitrate: u64) -> Self {
26        self.audio_bitrate = Some(bitrate);
27        self
28    }
29}
30
31#[cfg(test)]
32mod tests {
33    use super::*;
34    use std::path::PathBuf;
35
36    #[test]
37    fn builder_audio_settings_should_be_stored() {
38        let builder = VideoEncoderBuilder::new(PathBuf::from("output.mp4"))
39            .audio(48000, 2)
40            .audio_codec(AudioCodec::Aac)
41            .audio_bitrate(192_000);
42        assert_eq!(builder.audio_sample_rate, Some(48000));
43        assert_eq!(builder.audio_channels, Some(2));
44        assert_eq!(builder.audio_codec, AudioCodec::Aac);
45        assert_eq!(builder.audio_bitrate, Some(192_000));
46    }
47}