Comment puis-je obtenir des MP4 de haute qualité / faible taille comme le groupe de sortie LOL?

20

Le groupe de versions LOL fait un excellent travail pour encoder leurs versions sur The Vampire Diaries (sur d'autres émissions comme How I Met Your Mother, le débit est plus élevé, donc cela ne semble pas aussi efficace).

Environ 200 Mo chacun ~ 45 minutes de fichier MP4, une 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'y suis pas vraiment parvenu.

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

thankyouinadv
la source

Réponses:

28

Les directives pour l'encodage de vidéos (piratées) sont appelées "guides de scène". Ils sont signés par différents groupes de diffusion qui s'assureront que leurs vidéos sont conformes au guide, LOL étant l'un de ces groupes.

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

Quant aux outils d'encodage, vous pouvez aller assez loin avec FFmpeg (sur lequel Handbrake est basé). Le seul coupable est que l'utilisation de FFmpeg et de l'audio FAAC est interdite pour ce guide de scène, mais à moins que vous ne contribuiez réellement, cela n'aura pas d'importance.

Si vous n'avez aucune expérience préalable de l'encodage vidéo et que tous ces mots clés ne signifient rien pour vous, veuillez consulter les articles de blog / questions Super utilisateur suivants:

Fondamentalement, les règles stipulent que vous devez utiliser l'encodeur x264 avec un paramètre de qualité de 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 définir le CRF pour que x264 code la vidéo avec une qualité constante.

Les niveaux CRF typiques se situent entre 18 et 28, et le groupe de version recommande 19-20 pour un codage de haute qualité de matériel 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 juste une bonne qualité.

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

Voici les paramètres clés:

  • Vidéo x264 avec:
    • CRF 19-20
    • slow profil (meilleure efficacité de compression au détriment du temps d'encodage)
    • H.264 niveau 3.1, qui définit quelques contraintes
    • La réduction d'échelle doit être effectuée avec tout redimensionneur autre que bicubique (qui est le FFmpeg par défaut). Les Lanczos peuvent être utilisés , par exemple.
    • Un tuneréglage pour la source (par exemple filmpour un contenu de type film)
  • Audio AAC avec:
    • Encodage à débit binaire variable
    • Débit binaire entre 96 et 160 kBit / s

Dans ffmpeg, cela se traduit par ce qui suit:

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 l'encodage AAC sont un peu limités. Voir ici pour vos choix AAC et reportez-vous également au guide de codage FFmpeg et AAC pour plus d'informations.

Si votre vidéo s'avère trop volumineuse, vous pouvez ajuster le CRF. Les valeurs ± 6 entraîneront la moitié / le double du débit binaire, donc si vous commencez avec 19 et passez à 25, vous vous retrouverez avec la moitié du débit binaire. Les règles de la scène ne permettent pas un CRF supérieur à 24, mais cela ne vous dérangera probablement pas.

slhck
la source
2

Je ne peux pas parler au groupe de diffusion que vous avez mentionné car vous n'avez pas posté le mediainfo. Mais voici un guide pour faire 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 à encoder (avec une action et des détails fins). Dans la section Destination , sélectionnez libmkv . Dans l' onglet Vidéo , décochez Utiliser les options avancées (vous pouvez toujours ajouter ces options au cas par cas dans plus de paramètres ), sélectionnez --rc=crfRatecontrol, le plus élevé que --presetvotre ordinateur peut supporter ( slowerou veryslow), un --tunequi correspond à la source ( filmou animationdevrait le couvrir), et définissez le profil et le niveau sur auto/ auto. Jouez ensuite avec la résolution (uniquement si la source est HD; dans les paramètres d'image, définissez anamorphique sur lâche et faites varier l'un des axes, à partir de la résolution haute suivante et vers le bas) et --crfjusqu'à ce que vous trouviez un bon compromis entre qualité et débit pour votre segment court. Notez que le crf est lié au reste de vos paramètres d'encodage, c'est pourquoi ce devrait être le dernier paramètre vidéo que vous modifiez. En audio , optez pour Vorbis à 160 kbps (cela utilisera AoTuV -q5, réalisant la transparence sans réglage supplémentaire). Dans les autres onglets, vérifiez que tout ce dont vous pourriez avoir besoin est conservé (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 en 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, de profil et de version à auto signifie qu'il n'y aura pas de contraintes de lecture pour retenir l'encodeur. Un court segment (quelques secondes) vous donne beaucoup plus de temps pour modifier les choses et regarder les résultats. Tune optimise la qualité psychovisuelle (perçue) de ce à quoi la source est censée ressembler. Des préréglages plus élevés améliorent la compacité au détriment du temps d'encodage (cela peut ne pas être perceptible sur votre segment difficile, mais améliorera le débit binaire dans la plupart des autres scènes). CRF ratecontrol signifie que votre encodage fera varier le débit pour cibler une qualité donnée, avec des épisodes plus exigeants obtenant plus d'espace.

Un filtre de débruitage peut également être très utile si vous conservez la résolution d'origine. Vous voudrez le garder léger car le but 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 d'utilisation du débruiteur HQDN3D de HandBrake , qui se situe entre x264 --nret des débruiteurs de pointe pour la qualité.

Tobu
la source
2

FFmpeg TV

Sur la base de la réponse slhck, j'ai construit cette solution Python simple pour appeler les bons ffmpegparamètres. Basé sur les dernières normes télévisées scenerules 2016 .

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

Décrit, vous pouvez trouver tous les paramètres, et une brève description des raisons pour lesquelles 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'. 
  # /superuser/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.

zurfyx
la source