Уменьшение битрейта с помощью ffmpeg с помощью `-b: v 500k` на самом деле не уменьшает битрейт до 500k

Я пытаюсь создать несколько пониженных версий видеофайла с помощью ffmpeg. Я использую следующую команду через командную строку (команда взята из документация):

ffmpeg -i ../../tos.avi -b:v 500k tos_500k.avi

Я пытаюсь это сделать с несколькими значениями ниже 2000 Кбит / с (до ~ 125 Кбит / с), однако нижний предел, который фактически создается, когда я проверяю сгенерированные видеофайлы, составляет около 2000 Кбит / с. Я проверяю значения с помощью программного обеспечения videospec.

  1. кто-нибудь знает, почему дальнейшее уменьшение битрейта не дает никакого эффекта?
  2. можете ли вы дать мне подсказку, как я могу эффективно снизить битрейт видео до заданного уровня?

[EDIT] чтобы быть немного более точным, мое оригинальное видео имеет разрешение 1920x1080 со скоростью передачи около 15 Мбит / с. При использовании вышеуказанной команды я могу понизить ее без проблем до большего битрейты, такие как 8000, 5000, вплоть до 2000 kbps. Тем не менее, все, что ниже 2000, похоже, не обрабатывается, результирующие выходные файлы всегда застревают с битрейтом чуть более 2000 Кбит / с. (Размер файла также очень близок к файлу, который был успешно понижен до 2000 Кбит / с.)

5
задан nburk
13.12.2022 23:11 Количество просмотров материала 3660
Распечатать страницу

1 ответ

при перекодировании файла не следует указывать только битрейт. Я предполагаю, что ffmpeg пытается использовать кодек mpeg4 по умолчанию, и он отказывается использовать менее 2 Мбит / с, Потому что он просто не может спуститься ниже с таким высоким разрешением.

Я предлагаю вам перекодировать с кодеком H. 264, который вы можете сделать как этот :

ffmpeg -i ../../tos.avi -c:v libx264 -b:v 500k tos_500k.mp4

обратите внимание, однако, что это будет использовать метод среднего битрейта 1-pass, который довольно плох для качества. Вместо этого, вы должны попробовать кодирование с "коэффициент постоянной скорости", т. е. вы ориентируетесь на определенное качество, и кодировщик решает, какой средний битрейт лучше для вашего файла :

ffmpeg -i ../../tos.avi -c:v libx264 -crf 23 tos_500k.mp4

вы можете экспериментировать со значением crf. Увеличение его будет означать более низкий битрейт и худшее качество, снижение его наоборот.

Если вы абсолютно хотите ориентироваться на средний битрейт, вы должны checkout 2-pass кодировка. Кроме того, не забывайте о шаблоны !

в качестве примечания, 500k для 1080p слишком низко, и вы получите плохие результаты. Если вы хотите настроить такой низкий битрейт, я предлагаю вам уменьшить масштаб до 480p (854x480). 720p должен иметь минимальный битрейт 1,5 Мбит / с и 1080p 3 Мбит / с.

для ваших будущих вопросов, не забудьте разместить журналы ввода / вывода из ffmpeg, они всегда полезны: -).

5
отвечен Ely 2022-12-15 06:59

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх