
У меня есть видеофайл длиной 15 секунд и весом 465 195 КБ. Я хотел бы уменьшить его до примерно 46 000 КБ. Есть ли простой способ сделать это? Я пробовал максимально допустимый битрейт
ffmpeg -i input -q:v 0 -b:v 900000k output
и я все равно получаю файл размером всего 3500 КБ
заранее спасибо
решение1
Как мне установить фиксированный размер файла с помощью ffmpeg
?
Если вы готовы перекодировать с помощью x264
, вы можете следоватьруководство по кодированиюгде приведены примеры того, как ориентироваться на определенный размер файла.
target bitrate = target filesize / duration
ie bitrate = 46000 / 15
ie bitrate = 3067 (kbit / s)
Вероятно, вам понадобится что-то из этого для звука; в руководстве в качестве приблизительного значения по умолчанию используется битрейт 128k, поэтому ваш целевой битрейт составляет2939 кбит/с. Затем вы можете использоватьдвухпроходнойспецификация кодировки:
ffmpeg -y -i input -c:v libx264 -preset medium -b:v 2939k -pass 1 -c:a libfdk_aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 2939k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4
Этот метод обычно используется, если вы ориентируетесь на определенный размер выходного файла, а качество вывода от кадра к кадру не имеет большого значения.
Конечно, вы можете настроить его под свои нужды с точки зрения кодирования звука и т. д., но в конечном итоге у вас должен получиться файл размером 46000 КБ.