Почему при использовании опции -s 640x480 в численном формате в VirtualDub и внешнем энкодере ffmpeg опция -b:v 1500k игнорируется?

Какие команды используются для кодирования видео и мультиплексирования в данном примере?
  • 4 октября 2023 г. 13:07
Ответы на вопрос 2
Возможная причина игнорирования опции -b:v 1500k при использовании опции -s 640x480 в формате 640 пикселей по ширине и 480 пикселей по высоте может быть связана с тем, что параметр -s изменяет только разрешение видео, не затрагивая битрейт или размер файла. В данном случае, опция -b:v 1500k указывает на желаемый битрейт 1500 килобит в секунду, однако, при изменении разрешения с 640x480 параметр битрейта может быть пересчитан или проигнорирован.

Чтобы правильно установить и использовать опции -s и -b:v для кодирования видео и мультиплексирования, следует отдельно указывать значения разрешения размера видео и битрейта:

1. Для VirtualDub:

- Откройте видеофайл в VirtualDub.
- Выберите пункт "File" (Файл) -> "Export" (Экспорт).
- В открывшемся окне выберите желаемые настройки видео кодирования и мультиплексирования (например, формат кодека, разрешение, битрейт и т.д.).
- Нажмите кнопку "Save" (Сохранить) и выберите место сохранения файла.
- Нажмите кнопку "OK" (Ок) для начала процесса кодирования и мультиплексирования.

2. Для ffmpeg:

- Откройте командную строку или терминал.
- Введите команду, указывая путь к ffmpeg и нужные опции для кодирования видео и мультиплексирования. Например:
  ffmpeg -i входной_файл -s 640x480 -b:v 1500k выходной_файл
  Здесь "-i" указывает входной файл, "-s 640x480" изменяет разрешение на 640x480, а "-b:v 1500k" задает битрейт в 1500 килобит в секунду.
- Запустите команду и дождитесь окончания процесса кодирования и мультиплексирования.

При использовании правильных команд и опций для кодирования видео и мультиплексирования, устанавливаемые значения разрешения и битрейта будут учтены в процессе обработки.
Получилось только путем использования фильтра для масштабирования и установки ограниченных значений битрейта. Непонятно в чем именно разница (существуют различные типы билдов, фильтров и алгоритмов скалирования, которые могут быть применены). Документации, указывающей на это, тоже нет. 

Encoder: -f rawvideo -s %(width)x%(height) -i - -c:v mpeg4 -filter:v scale=480:-1 -b:v 500k -maxrate:v 500k -minrate:v 400k "%(tempvideofile)"
Похожие вопросы