web-dev-qa-db-fra.com

Comment puis-je ré-encoder une vidéo H.264 avec une perte de qualité minimale?

J'ai beaucoup de fichiers MPEG-TS (conteneur .TS mais vidéo H.264) et la lecture est bonne sauf que lorsque vous passez en avant/arrière ou en avance rapide, il est très lent et se pixélise, etc.

J'ai essayé de faire de la recherche et j'imagine qu'ils encodaient avec très peu de blocs de référence (c'est-à-dire qu'il s'agit d'une capture d'un flux satellite DVB-S).

Quand je les ré-encode avec Handbrake (conteneur .MP4), ils jouent très très bien et la recherche dans la vidéo est instantanée, etc., etc.

Est-il possible de transcoder/réencoder mes fichiers MPEG-TS avec une perte de qualité minimale? Si oui, quel est mon meilleur pari? Ils ont chacun environ 2 Mbps (soit 2 Go par heure), mais je ne souhaite pas les ré-encoder si une "perte de qualité minimale" nécessite plus de 10 Go par fichier. J'espère que la vidéo aura la même taille.

Quelqu'un peut-il me donner un conseil?

19
SofaKng

C’est peut-être un problème de conteneur, le copier dans un nouveau format de conteneur avec

avconv -i input.ts -c copy output.mp4

peut bien résoudre votre problème. Ce sera 100% sans perte. Si cela ne fonctionne pas, un crf de 18 est normalement considéré "sans perte visuelle"; vous pouvez définir qu'il s'agit de HandBrake (sous l'onglet "vidéo") ou avec avconv:

avconv -i input.ts -c:a copy -c:v libx264 -crf 18 -preset veryfast output.mp4

Les préréglages sont les suivants: ultra-rapide, ultra-rapide, très rapide, plus rapide, moyen, plus lent, très lent. Plus le préréglage est lent, plus le fichier est petit (mais avec une augmentation du temps de codage). Lors de mes expérimentations personnelles, j'ai constaté que la baisse la plus importante en termes de taille de fichier se situe entre ultra-rapide et très rapide, après quoi cela semble être beaucoup plus incrémental.

REMARQUE: Si vous le souhaitez, ffmpeg peut faire tout ce que avconv peut faire, avec une syntaxe identique (remplacez simplement toutes les instances de avconv par ffmpeg).

NOTA: Vous pouvez trouver ce guide de codage ffmpeg x264 utile pour plus d'informations.

22
evilsoup

Sans entrer dans les détails du codage vidéo: Il n’existe pas de "perte de qualité minimale" lorsque votre contrainte est un codec vidéo spécifique (h.264) ou un certain débit. Un facteur limitant sera toujours là: s'il existait un moyen de conserver encore plus de qualité, ce serait le Saint Graal de l'encodage vidéo, pour ainsi dire.

Un encodeur tel que x264 ne peut pas faire plus - votre bouton de contrôle principal sera le réglage du facteur de débit constant, qui agit en quelque sorte comme un facteur de "qualité constante". Indépendamment de cela, il existe des limitations techniques sur la quantité de débit pouvant être économisée lors du réencodage et en conservant la même qualité visuelle/expérimentée avec un codeur spécifique.

Bien entendu, vous obtiendrez des résultats différents pour XviD (un simple encodeur MPEG 4 Part II) et x264, l'encodeur h.264 le plus avancé actuellement. Vous pouvez également essayer d'acheter le codeur Mainconcept h.264 et voir si son utilisation améliore la qualité au même débit moyen.

En encodage vidéo, vous devrez quand même faire quelques essais, car cela dépend aussi du matériel source. Une partie de football sera plus difficile à encoder qu’une partie de Snooker. Certaines options de x264 permettent d’ajuster certains types, par exemple. films, avec l’option -tune film dans FFmpeg, par exemple, mais la différence pourrait être minime.

Pour des exemples et plus d’informations, voir FFmpeg: L’outil de manipulation vidéo et audio ultime .

8
slhck

Pour mes rayons blu Si j'encode des fichiers MPEG-TS, j'utilise le profil haut du frein à main et utilise l'onglet Avancé avec les paramètres suivants: RF 20

b-adapt=2:rc-lookahead=60:bframes=8:direct=auto:trellis=2:ref=16:subq=10:me=umh:merange=24:analyse=all

Il faut un peu de temps pour encoder mais la qualité est difficile à distinguer d'un Blu-ray.

Si votre objectif est la même taille , cela ne se produira pas car il s'agit d'un codec/d'une compression différente. La taille et la qualité du fichier ne sont pas la même chose.

1
davefromcamp