#rodio #ffmpeg #encoding

ffmpeg-decoder

使用ffmpeg通过Rust解码音频文件。可以作为rodio源使用。

4个版本

0.1.3 2020年9月16日
0.1.2 2020年3月27日
0.1.1 2020年3月26日
0.1.0 2020年3月26日

多媒体类别中排名412

MIT许可证

24KB
536 代码行

ffmpeg-decoder

Crates.io

解码音频文件并将样本格式转换为16位有符号整数。可以作为播放源与rodio一起使用。

Rodio源

Decoder表示rodio的Source特质,以及Iterator。启用特性标志rodio_source以包含它。然后可以将解码器作为Rodio的源使用,从而能够解码ffmpeg支持的所有内容。

使用CLI进行测试

将输入文件转换为16位有符号整数,并与其原始文件一起保存为.raw

cargo run --release -- convert path/to/test.mp3

使用rodio播放

cargo run --release -- play path/to/test.flac

lib.rs:

使用ffmpeg绑定解码音频文件

通过提供音频文件的路径来创建一个Decoder。此Decoder表示Iterator,其中每次迭代返回一个单个i16有符号16位样本。还实现了rodioSource特质,其中Decoder可以作为播放的接收源。

特性标志

  • rodio_source以启用rodio的Source特质

作为Rodio源的示例

use rodio::Sink;
use std::path::PathBuf;

fn play_file(input: PathBuf) -> Result<(), Error> {
    let decoder = ffmpeg_decoder::Decoder::open(&input)?;

    let device = rodio::default_output_device().unwrap();
    let sink = Sink::new(&device);

    sink.append(decoder);
    sink.play();
    sink.sleep_until_end();

    Ok(())
}

依赖项

~0.5–4MB
~70K SLoC