From 4e69c3e05bbbf61255dd5d888ff25ace290e6757 Mon Sep 17 00:00:00 2001 From: Antoine Van Elstraete Date: Mon, 23 Mar 2026 00:03:31 +0100 Subject: [PATCH] feat: profils d'encodage SVT-AV1 par type de contenu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Défaut (BluRay live action) : tune=0 + film-grain=8 + enable-qm=1:qm-min=0:scd=1 - --animation : tune=2 (SSIM, meilleur pour aplats/contours) + film-grain=4 (dithering) - --vhs : tune=0 + irefresh-type=1 + enable-tf=0 (source débruitée, pas de film-grain) - enable-qm=1:qm-min=0 et scd=1 appliqués à tous les profils (gains gratuits) - --animation est maintenant fonctionnel Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 2 +- vid_convert.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index a281f9d..726e515 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -57,4 +57,4 @@ Fichier unique : `vid_convert.py`. Flux d'exécution séquentiel : - **Fichier de sortie** : `NEW_{nom_source}.mkv`, généré dans le même répertoire que la source. Les fichiers temporaires (`_video.mkv`, `_audio_*.mka`, `_subtitle_*.mkv`) sont supprimés après assemblage. - **Fichiers temporaires orphelins** : en cas d'interruption, les intermédiaires peuvent rester dans le répertoire de la source. Les supprimer manuellement si besoin. - **HDR10+ et conteneur source** : `hevc_mp4toannexb` est appliqué uniquement pour les sources MP4/MOV (pas MKV) lors de l'extraction HDR10+ par `hdr10plus_parser`. -- **`--animation` non fonctionnel** : le flag est parsé mais n'a pas d'effet (tune=0 est utilisé pour tous les contenus). Conservé pour compatibilité future. +- **Profils d'encodage par contenu** : les flags `--animation` et `--vhs` modifient `enc_options` passé à SVT-AV1. Défaut (BluRay live action) : `tune=0:film-grain=8`. Animation : `tune=2:film-grain=4`. VHS : `tune=0:irefresh-type=1:enable-tf=0` (pas de film-grain, source déjà débruitée par hqdn3d). diff --git a/vid_convert.py b/vid_convert.py index 3c523ad..10653a5 100755 --- a/vid_convert.py +++ b/vid_convert.py @@ -322,7 +322,13 @@ if __name__ == '__main__': stabilization(file) cropsize = cropping(file, infos) volumes = volume_audio(file, infos) - enc_options = 'preset=3:tune=0' + base = 'preset=3:enable-qm=1:qm-min=0:scd=1' + if args.animation: + enc_options = f'{base}:tune=2:film-grain=4' + elif args.vhs: + enc_options = f'{base}:tune=0:irefresh-type=1:enable-tf=0' + else: + enc_options = f'{base}:tune=0:film-grain=8' is_hdr = 'side_data_list' in infos['video'] or 'hdr10plus' in infos['video'] crf = find_crf(file, enc_options, hdr=is_hdr) for track in infos['subtitles']: