#av1 #multimedia #encoding

app grav1synth

Grain Synth analyzer and editor for AV1 files

11 releases

new 0.1.0-beta.7 May 11, 2024
0.1.0-beta.6 Feb 9, 2023
0.1.0-beta.5 Nov 9, 2022
0.1.0-beta.4 Oct 1, 2022
0.1.0-beta.1 Jul 23, 2022

#28 in Video

Download history 4/week @ 2024-02-19 9/week @ 2024-02-26 14/week @ 2024-03-11 46/week @ 2024-04-01 165/week @ 2024-05-06

165 downloads per month

MIT license

3MB
4K SLoC

Grav1synth

docs.rs Crates.io LICENSE

Grain Synth analyzer and editor for AV1 files

Build

  • Prerequisites:
    • ffmpeg headers
    • Rust compiler
  • Pull the repo
  • Run cargo build --release
  • Copy the binary from target/release/grav1synth to wherever you want

Usage

grav1synth inspect my_encode.mkv -o grain_file.txt

Reads my_encode.mkv and outputs a film grain table file at grain_file.txt

grav1synth apply my_encode.mkv -o grainy_encode.mkv -g grain_file.txt

Reads my_encode.mkv, adds film grain to it based on grain_file.txt, and outputs the video to grainy_encode.mkv

grav1synth generate my_encode.mkv -o grainy_encode.mkv --iso 400 --chroma

Reads my_encode.mkv, adds photon-noise-based film grain to it based on the strength provided by --iso (up to 6400), and outputs the video to grainy_encode.mkv. By default applies grain to only the luma plane. --chroma enables grain on chroma planes as well.

grav1synth remove my_encode.mkv -o clean_encode.mkv

Reads my_encode.mkv, removes all synthesized film grain, and outputs the video at clean_encode.mkv

grav1synth diff my_source.mkv denoised_source.mkv -o grain_file.txt

Compares my_source.mkv and denoised_source.mkv and generates a film grain table at grain_file.txt based on the difference between them. This will provide the most accurate estimation of source film grain.

Known Issues

  • There have been reports that certain videos will fail to apply film grain properly. This is likely related to aomenc's --keyframe-filtering=2.

Dependencies

~10–21MB
~301K SLoC