Je veux encoder une vidéo, qui a une longueur de 60 secondes, à une cible ou taille maximale de 10 Mo .
Je connais deux approches. L'un est expliqué dans le FFMPEG-Wiki, et l'autre que j'ai trouvé dans la documentation. Malheureusement, je n'ai pas trouvé d'explication sur le moment d'utiliser quelle méthode.
L'une de ces méthodes est-elle recommandée? Sinon, quels sont les avantages / inconvénients de chaque méthode?
1) Calculez et réglez le débit binaire pour qu'il corresponde à la longueur de la vidéo comme expliqué dans le ffmpeg-wiki
(10 Mo * 8192 [convertit les Mo en kilobits)) / 60 secondes = ~ 1365 kbits / s débit total 1365k - 128k (débit audio souhaité) = 1237k débit vidéo
ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4
2) Utilisez le -fs
paramètre et laissez ffmpeg le comprendre.
ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4
libx264
asc:v
. Dans l'fs
exemple, vous ne transcodez pas la vidéo, car-c:v copy
est utilisé. Ainsi, lepreset
etcrf
n'a également aucun effet.