Chcę zakodować wideo, które ma długość 60 sekund, do celu lub maksymalnego rozmiaru 10 MB .
Są dwa podejścia, które znam. Jeden jest wyjaśniony na FFMPEG-Wiki, a drugi znalazłem w dokumentacji. Niestety nie znalazłem wyjaśnienia, kiedy użyć jakiej metody.
Czy którakolwiek z tych metod jest zalecana? Jeśli nie, jakie są zalety / wady każdej metody?
1) Oblicz i ustaw Bitrate, aby dopasować długość filmu, jak wyjaśniono na stronie ffmpeg-wiki
(10 MB * 8192 [konwertuje MB na kilobity]) / 60 sekund = ~ 1365 kbitów / s całkowity bitrate 1365k - 128k (pożądany bitrate audio) = 1237k bitrate wideo
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) Użyj -fs
parametru i pozwól, aby ffmpeg go zrozumiał.
ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4
libx264
jakoc:v
. W tymfs
przykładzie wideo nie jest transkodowane, ponieważ-c:v copy
jest używane. Tak więcpreset
icrf
również nie mają żadnego efektu.