Je cherche à encoder une vidéo 4k avec iPhone 6s en VP9 dans la meilleure qualité possible.FFmpeg - sélection du débit approprié pour l'encodage VP9
Pour référence, les données de flux de la vidéo que je voudrais encoder, via ffprobe
:
Duration: 00:00:10.48, start: 0.000000, bitrate: 46047 kb/s
Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709), 3840x2160, 45959 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2017-03-13T21:12:56.000000Z
handler_name : Core Media Data Handler
encoder : H.264
Stream #0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 44100 Hz, mono, fltp, 79 kb/s (default)
Metadata:
creation_time : 2017-03-13T21:12:56.000000Z
handler_name : Core Media Data Handler
J'utilise les commandes FFmpeg suivantes, sur la base these instructions (voir Best Quality (Slowest) Recommended Settings
section).
ffmpeg -i INPUT.mov -c:v libvpx-vp9 -pass 1 -b:v 46000K -threads 4 -speed 4 -g 9999 -an -f webm -y /dev/null
ffmpeg -I INPUT.mov -c:v libvpx-vp9 -pass 2 -b:v 46000K -threads 4 -speed 0 -g 9999 -an -f webm OUTPUT.webm
est-il un les meilleures pratiques pour sélectionner une valeur optimale -b:v
telle que la vidéo résultante est visuellement identique à l'original? J'ai essayé des valeurs allant de 36000K-46000K, mais celles-ci résultent en des fichiers massifs avec un débit global dépassant le débit cible.
Merci d'avance!
C'est pour cela que le mode CRF (qualité constante) est utilisé. Utilisez '-crf 20 -b: v 0' Passer les deux passes. Testez avec différentes valeurs CRF (0 à 63) sur un court segment sur l'entrée. Une fois que vous avez atteint une valeur qui produit une sortie assez petite et assez bonne, utilisez cette valeur. – Mulvya
Points bonus en plus du commentaire de @ Mulvya: même si avec d'autres encodeurs, 1-pass et 2-pass CRF devraient donner les mêmes résultats, ce n'est malheureusement pas le cas pour libvpx, faire CRF ... –