# Grav1synth
[](https://docs.rs/grav1synth)
[](https://crates.io/crates/grav1synth)
[](https://github.com/rust-av/grav1synth/blob/main/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 `4294967295`), 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`.