rsmp4decrypt 0.2.0

Rust bindings and a CLI for Bento4 mp4decrypt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use rsmp4decrypt::Mp4Decryptor;
use std::{fs, io::Write};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let decryptor = Mp4Decryptor::builder()
        .key_spec("eb676abbcb345e96bbcf616630f1a3da:100b6c20940f779a4589152b57d2dacb")?
        .build()?;

    let init = fs::read("video-init.mp4")?;
    let encrypted_segment = fs::read("encrypted-video.m4s")?;
    let clear_segment = decryptor.decrypt(&encrypted_segment, Some(&init))?;

    let mut output = fs::File::create("playable-output.mp4")?;
    output.write_all(&init)?;
    output.write_all(&clear_segment)?;

    Ok(())
}