102 votes

Conversion d'une vidéo de 1080p à 720p avec une perte de qualité minimale en utilisant ffmpeg

J'empile avec mon film de haute qualité : 1080p avec 60fps. Le problème, c'est qu'il y a des décalages pendant la lecture.

J'ai essayé de le convertir en 720p avec ffmpeg :

ffmpeg -i MyMovie.mkv -r 60 -s hd720 MyMovie_720p.mkv

Mais il y a une perte de qualité significative car le débit binaire a diminué de 32,3 Mbps à 2,8 Mbps. Comment puis-je spécifier le bon débit binaire pour le flux vidéo, et laisser tous les autres flux copiés intacts ?

Fichier d'entrée mediainfo :

ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.2
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 2h 58mn
Bit rate                                 : 32.3 Mbps
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 59.940 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.260
Stream size                              : 40.2 GiB (92%)
Writing library                          : x264 core 116 r2019 9cc407d
Encoding settings                        : cabac=1 / ref=4 / deblock=1:-2:-1 / analyse=0x3:0x113 / me=umh / subme=10 / psy=1 / psy_rd=0.80:0.20 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-3 / threads=6 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=6 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=0 / crf=14.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=50000 / vbv_bufsize=62500 / crf_max=0.0 / nal_hrd=none / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:0.60
Language                                 : English
Default                                  : Yes
Forced                                   : No
Matrix coefficients 

                 : BT.709-5, BT.1361, IEC 61966-2-4 709, SMPTE RP177

168voto

Nikola Dimitrijevic Points 3885

Voici un exemple qui devrait vous donner la meilleure qualité de vidéo (je ne parle pas de la taille du fichier résultant). Notez que cette vidéo peut ne pas être lisible sur tous les appareils ou lecteurs :

ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 0 -preset veryslow -c:a copy MyMovie_720p.mkv

Pour obtenir une qualité "visuellement sans perte", vous pouvez utiliser :

ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow -c:a copy MyMovie_720p.mkv

Maintenant, voyons ce que nous avons ici :

El filtre vidéo à échelle sert à redimensionner la vidéo. Il suffit de définir une taille - qui est la hauteur dans cet exemple - et d'utiliser la fonction -1 pour l'autre dimension. ffmpeg recalculera automatiquement la valeur correcte tout en préservant le rapport d'aspect.

Qualité contrôlée avec le -crf option :

La plage de l'échelle de quantification est de 0 à 51 : 0 étant sans perte, 23 étant la valeur par défaut, et 51 est le pire possible. Une valeur plus faible correspond à une meilleure qualité et une gamme subjectivement saine est 18-28. Considérer 18 comme étant visuellement sans perte ou presque : il doit avoir la même apparence ou presque que l'entrée l'entrée, mais il n'est pas techniquement sans perte.

La fourchette est exponentielle, de sorte que l'augmentation de la valeur du CRF de +6 correspond à peu près à moitié du débit binaire, tandis que -6 correspond à environ deux fois le débit binaire. L'usage général est de choisir la valeur CRF la plus élevée qui permet d'obtenir une qualité acceptable. qualité acceptable. Si le résultat est bon, essayez une valeur plus élevée et s'il est mauvais, choisissez une valeur plus faible. et si elle est mauvaise, choisissez une valeur plus faible.

Vous pouvez trouver plus d'informations dans le Guide d'encodage x264 .

Vous contrôlez le compromis entre la vitesse d'encodage vidéo et l'efficacité de la compression à l'aide des paramètres suivants -preset options. Celles-ci sont ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow . La valeur par défaut est moyen . Le site veryslow offre la meilleure efficacité de compression (ce qui se traduit par une taille de fichier plus petite pour la même qualité) mais elle est très lente - comme son nom l'indique.

L'audio sera flux copié directement du fichier d'entrée au fichier de sortie sans aucune modification.

8voto

Ewald Bos Points 151

Si vous souhaitez changer de taille, il y a des limitations sur les dimensions de mise à l'échelle de FFMPEG. Il n'accepte pas chaque hauteur, voici une petite liste des meilleures recommandations pour les dimensions.

Les codecs vidéo fonctionnent mieux lorsque la largeur et la hauteur en pixels sont des multiples de 16. Bien que vous puissiez utiliser n'importe quelle largeur et hauteur dans vos paramètres d'encodage, des dimensions non optimales peuvent entraîner une mauvaise qualité d'image et une fréquence d'images réduite. Pour une qualité d'image et une lecture optimales, vous devez utiliser des dimensions de largeur et de hauteur pour votre vidéo qui sont des multiples de 16 ; votre meilleur choix suivant est des multiples de 8, et après cela, des multiples de 4.

Recommended width and height for videos with 16:9 aspect ratios:

Best Choice:     2nd Best:        3rd Best:
Multiples of 16  Multiples of 8   Multiples of 4
1920 x 1080      1792 x 1008      1856 x 1044
1280 x 720       1152 x 648       1216 x 684
1024 x 576        896 x 504       1088 x 612
 768 x 432        640 x 360        960 x 540
 512 x 288        384 x 216        832 x 468
 256 x 144        128 x 72         704 x 396
                                   576 x 324
                                   448 x 252
                                   320 x 180
                                   192 x 108

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X