#encoder #apple #audio #format #alac

alac-encoder

Apple开源ALAC库的Rust版本

4个版本 (2个重大变更)

0.3.0 2022年1月10日
0.2.0 2021年10月22日
0.1.1 2019年5月15日
0.1.0 2019年5月15日

#248 in 压缩

Apache-2.0 OR MIT

67KB
1K SLoC

ALAC编码器,适用于Rust

Rust版本的Apple开源ALAC库

安装

该crate与Cargo兼容,可在crates.io上找到。

使用

use alac_encoder::{AlacEncoder, FormatDescription};

// Specify the input format as signed 16-bit raw PCM, 44100 Hz & 2 channels
let input_format = FormatDescription::pcm::<i16>(44100.0, 2);

// Specify the output format as 44100 Hz ALAC with a frame size of 4096 & 2 channels
let output_format = FormatDescription::alac(44100.0, 4096, 2);

// Initialize the encoder
let mut encoder = AlacEncoder::new(&output_format);

// Allocate a buffer for the encoder to write chunks to.
let mut output = vec![0u8; output_format.max_packet_size()];

// Get a hold of the source data, e.g. from a file
let pcm = fs::read("foobar.pcm").unwrap();

// Iterate over chunks from the input
for chunk in pcm.chunks(frame_size as usize * channels as usize * 2) {
  // Feed the current chunk to the encoder
  let size = encoder.encode(&input_format, &chunk, &mut output);

  // Here you can do whatever you want with the result:
  Vec::from(&output[0..size]);
}

许可

许可协议为以下之一:

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可协议定义的,您有意提交的任何贡献,包括在本作品中包含的贡献,都应双重许可,如上所述,无需任何额外条款或条件。

依赖项

~87KB