Как мне установить фиксированный размер файла с помощью ffmpeg?

Как мне установить фиксированный размер файла с помощью ffmpeg?

У меня есть видеофайл длиной 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 КБ.

Связанный контент