web-dev-qa-db-fra.com

Comment obtenir des MP4 de haute qualité / faible comme le groupe de versions LOL?

Le groupe de release LOL fait un excellent travail pour coder leurs sorties sur The Vampire Diaries (dans d'autres émissions comme Comment j'ai rencontré votre mère, le débit binaire est plus élevé, donc ça ne semble pas si efficace).

Environ 200 Mo chaque fichier MP4 ~ 45 minutes, qualité incroyable compte tenu.

Je me demande simplement quels paramètres et quels logiciels ils utilisent. J'ai essayé d'obtenir des informations de ces fichiers à l'aide de MediaInfo, puis d'utiliser les paramètres de HandBrake, mais je n'ai pas vraiment réussi.

Quelqu'un pourrait-il m'aider s'il vous plaît? Je n'ai pas beaucoup de connaissances sur l'encodage/compression.

19
thankyouinadv

Les instructions pour l'encodage de vidéos (piratées) sont appelées "guides de scènes". Ils sont signés par divers groupes de release qui veilleront à ce que leurs vidéos soient conformes au guide, LOL constituant l'un de ces groupes.

Vous pouvez trouver une liste de guides de scènes scenerules.org . La norme que vous recherchez est, si je ne me trompe pas, la norme de relâchement de la télé SD x264 , en supposant que votre vidéo mesure 1280 × 780. Si vous avez une vidéo HD, vous n'allez probablement pas obtenir une qualité vraiment satisfaisante à 200 Mo pendant 45 minutes. Cela se traduirait par environ 600 kBit/s et serait suffisant pour 720p cependant.

En ce qui concerne les outils d’encodage, vous pouvez aller assez loin avec FFmpeg (sur lequel est basé Handbrake). Le seul coupable est que l'utilisation de FFmpeg et de FAAC audio est interdite pour ce guide de scènes, mais si vous contribuez, cela n'aura pas d'importance.

Si vous n'avez aucune expérience en matière de codage vidéo et que tous ces mots clés ne vous disent rien, veuillez consulter les articles de blog suivants/les questions des super utilisateurs:

En gros, les règles indiquent que vous devez utiliser le codeur x264 avec un paramètre de qualité Facteur de débit constant . Ce qu’il fait est très différent de la définition d’un débit binaire constant: vous pouvez configurer le CRF pour que x264 code la vidéo avec une qualité constante.

Les niveaux de CRF typiques sont compris entre 18 et 28, et le groupe de publication recommande de 19 à 20 pour un codage de haute qualité d'un matériau facile à compresser. Vous ne connaîtrez pas à l'avance la taille finale du fichier, mais c'est tout l'intérêt de l'encodage CRF: vous ne vous souciez pas de la taille réelle du fichier, vous voulez simplement une bonne qualité.

Une fois que vous avez configuré ffmpeg et que votre vidéo d'entrée est prête, le codage est en réalité assez simple. Notez cependant que votre vidéo source doit être de haute qualité, sinon le ré-encodage ne fera que détériorer beaucoup plus sa qualité.

Voici les paramètres clés:

  • x264 vidéo avec:
    • CRF 19–20
    • slow profile (meilleure efficacité de compression aux dépens du temps d'encodage)
    • Niveau H.264 3.1, qui définit quelques contraintes
    • La réduction de la taille doit être effectuée avec n’importe quel redimensionneur autre que bicubic (qui est le paramètre par défaut FFmpeg). Lanczos peut être utilisé , par exemple.
    • A tune setting for the source (e.g. film for film-like content)
  • Audio AAC avec:
    • Encodage à débit binaire variable
    • Débit binaire compris entre 96 et 160 kBit/s

Dans ffmpeg, cela se traduit par:

ffmpeg -i input.mp4 \
-c:v libx264 -crf 19 -level 3.1 -preset slow -tune film \
-filter:v scale=-1:720 -sws_flags lanczos \
-c:a libfdk_aac -vbr 5 \
output.mp4

Dans FFmpeg, vos choix pour le codage AAC sont un peu limités. Voir ici pour vos choix AAC et également vous référer au FFmpeg et AAC Encoding Guide pour plus d'informations.

Si votre vidéo est trop longue, vous pouvez ajuster le CRF. Les valeurs ± 6 entraînent un débit binaire de moitié/double. Par conséquent, si vous commencez par 19 et passez à 25, vous obtiendrez un débit inférieur de moitié. Les règles de la scène n'autorisent pas le CRF supérieur à 24, mais cela ne vous dérangera probablement pas.

28
slhck

FFmpeg TV

Basé sur slhck answer, j'ai construit cette solution simple en Python pour appeler les bons paramètres ffmpeg. Basé sur les derniers scénarios 2016 normes TV .

python3 ffmpeg-tv.py input.mp4 output.mkv

Décrit vous pouvez trouver tous les paramètres, et une brève description de la raison pour laquelle ils ont été définis de cette façon par défaut.

  # 1.3) Providers which downscale 1080i to 720p (e.g. BellTV) are not allowed.
  # 5.10) Resized video must be within 0.5% of the original aspect ratio.
  scale="-1:-1" # <width>:<height>; -1 maintain ratio.

  # 4.1) Video must be H.264/MPEG-4 AVC encoded with x264 8-bit.
  video_encoder="libx264"

  # 4.4) Constant Rate Factor (--crf) must be used.
  # 4.4.1) CRF values below 18 and above 23 are never allowed.
  # http://slhck.info/video/2017/02/24/crf-guide.html
  # (lossless) 0 <- (better) 23 <- (worst) 51
  # ┌─────────────────┬───────┬───────────────────────────────────────────┐
  # │ Compressibility      │  CRF    │ General Examples                                      │
  # ├─────────────────┼───────┼───────────────────────────────────────────┤
  # │ High                 │ 18-19   │ Scripted, Talk Shows, Animation, Stand-Up             │
  # │ Medium               │ 20-21   │ Documentary, Reality, Variety, Poker                  │
  # │ Low                  │ 22-23   │ Sports, Awards, Live Events                           │
  # └─────────────────┴───────┴───────────────────────────────────────────┘
  crf="19"

  # 4.6) Settings cannot go below what is specified by preset (--preset) 'slow'.
  preset="slow"

  # 4.7) Level (--level) must be '4.1'.
  level="4.1"

  # 6.4) Only sharp resizers, such as Spline36Resize, BlackmanResize or LanczosResize/Lanczos4Resize,
  # must be used.
  # 6.4.1) Simple resizers, such as Bicubic, PointResize or Simple, are not allowed. 
  resizer="lanczos"

  # 4.17) Optional tuning (--tune) parameters allowed are: 'film', 'grain' or 'animation'. 
  # https://superuser.com/questions/564402/explanation-of-x264-tune
  # film – intended for high-bitrate/high-quality movie content. Lower deblocking is used here.
  tune="film"

  # 8.1) Audio must be in the original format provided.
  # 8.1.1) Transcoding audio is not allowed.
  # 8.2) Multiple language audio tracks are allowed.
  # Since we cannot ensure that the external content is in an acceptable TV format, we'll recode
  # it into aac. We're just playing safe here.
  # 
  # FFmpeg supports two AAC-LC encoders (aac and libfdk_aac) and one HE-AAC (v1/2) encoder
  # (libfdk_aac). The license of libfdk_aac is not compatible with GPL, so the GPL does not permit
  # distribution of binaries containing incompatible code when GPL-licensed code is also included.
  # libfdk_aac is "non-free", and requires ffmpeg to be compiled manually.
  # Second best encoder is the native FFmpeg AAC encoder. (aac)
  audio_encoder="aac"

  # Audio quality (bit rate).
  # Use either VBR or CBR. VBR is the easiest.
  # https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr
  # VBR: Target a quality, rather than a specific bit rate. 1 is lowest quality and 5 is highest
  # quality.
  # https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
  # http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Bitrate_Modes
  # CBR: kbps
  vbr="5"
  cbr=None

  # 8.2) Multiple language audio tracks are allowed.
  # 8.2.1) The default audio track must be the language intended for release (e.g. An English release
  # containing English, German and Russian audio tracks, must have the default flag set on the English
  # track).
  # https://trac.ffmpeg.org/wiki/Map
  # Include "all" inputs to the output: -map 0
  map="0"

Voir ffmpeg-tv.py pour le code source complet.

2
zurfyx

Vous ne pouvez pas parler au groupe de publication que vous avez mentionné car vous n'avez pas posté le mediainfo. Mais voici un guide pour réaliser des encodages compacts, ce qui signifie trouver un bon équilibre qualité/taille.

Vous devriez commencer par HandBrake et la meilleure source disponible. Dans la section Source , sélectionnez un segment court mais difficile à coder (avec action et détail détaillé). Dans la section Destination , sélectionnez libmkv . Dans l'onglet Vidéo , décochez les options avancées (vous pouvez toujours ajouter ces options au cas par cas dans d'autres paramètres ), sélectionnez --rc=crf ratecontrol, le --preset le plus élevé que votre ordinateur puisse supporter (slower ou veryslow), un --tune qui correspond à la source (film ou animation devrait le couvrir) et définissez le profil et le niveau sur auto/auto. Puis jouez avec la résolution (uniquement si la source est HD; dans paramètres d’image , définissez anamorphique sur lâche et faites varier l’un des axes, à partir de la résolution haute et suivante) et de la --crf jusqu’à ce que vous trouviez un bon compromis entre qualité et débit pour votre segment court. Notez que le fichier crf est lié au reste de vos paramètres d’encodage. C’est pourquoi il devrait s'agir du dernier paramètre vidéo que vous avez modifié. Dans Audio , optez pour Vorbis à 160 kbps (cela utilisera AoTuV -q5, pour une transparence sans réglage ultérieur). Dans les autres onglets , vérifiez que tout ce dont vous pourriez avoir besoin est préservé (marques de chapitre, pistes de sous-titres, métadonnées, etc.). Lorsque vous êtes satisfait, vous pouvez utiliser ces paramètres pour encoder le reste de l'épisode. le débit moyen devrait finir bien plus bas que sur le segment difficile. Lorsque vous avez confiance dans vos paramètres, vous pouvez les utiliser pour encoder des saisons entières.

Comment les étapes ci-dessus améliorent la compacité: libmkv vous donne accès à plus de codecs, profil et version à auto signifie qu'il n'y aura pas de contrainte de lecture pour retenir l'encodeur. Un court segment (quelques secondes) vous laisse beaucoup plus de temps pour peaufiner les choses et regarder les résultats. Tune optimise la qualité psychovisuelle (perçue) de ce à quoi la source est supposée ressembler. Des presets plus élevés améliorent la compacité aux dépens du temps d’encodage (ceci peut ne pas être perceptible sur votre segment difficile, mais améliorera le débit dans la plupart des autres scènes). Le contrôle de rapport CRF signifie que votre code variera le débit pour cibler une qualité donnée, les épisodes les plus exigeants occupant plus de place.

Un filtre de réduction de bruit peut également être très utile si vous conservez la résolution d'origine. Vous voudrez le garder léger car l'objectif n'est pas de nettoyer un défaut de source perceptible, mais d'améliorer la compressibilité sans dégrader sensiblement la qualité. Voici un guide pour utiliser le dénoiseur HQDN3D de HandBrake , qui se situe entre les --nr et x = de x264 pour la qualité.

2
Tobu