https://github.com/rust-av/grav1synth
Grain Synth analyzer and editor for AV1 files
https://github.com/rust-av/grav1synth
Last synced: about 1 year ago
JSON representation
Grain Synth analyzer and editor for AV1 files
- Host: GitHub
- URL: https://github.com/rust-av/grav1synth
- Owner: rust-av
- License: mit
- Created: 2022-09-20T21:38:57.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-14T17:01:48.000Z (over 1 year ago)
- Last Synced: 2025-03-28T23:04:29.765Z (about 1 year ago)
- Language: Rust
- Size: 3.24 MB
- Stars: 61
- Watchers: 7
- Forks: 7
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 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 `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`.