Как рассчитать размер выходного файла ffmpeg? - PullRequest
5 голосов
/ 25 сентября 2011

Я использую ffmpeg для преобразования домашнего видео в формат DVD и хочу рассчитать размер выходного файла перед выполнением преобразования.

Мой входной файл имеет скорость передачи данных 7700 кбит / с и длину 114 секунд. Скорость передачи аудио составляет 256 кбит (в секунду?). Входной файл составляет 77 МБ. Чтобы получить эту информацию, я побежал:

mplayer -vo null -ao null -frames 0 -identify input.MOD

Таким образом, теоретически входной файл должен иметь (примерно) размер файла:

((7700/8) * 114) / 1024

То есть (7700/8) - это килобайты в секунду, умноженные на 114 секунд, а затем преобразованные в мегабайты. Это дает мне 107 МБ, что намного превышает мои 77. Таким образом, я скептически отношусь к его формуле.

Тем не менее, после преобразования видео:

ffmpeg -i input.MOD -y -target ntsc-dvd -sameq -aspect 4:3 output.mpg

Числа, кажется, имеют больше смысла. Битрейт составляет 9000 кбит / с, и, применяя приведенную выше формулу, я получаю 125 МБ, а мой фактический размер выходного файла составляет 126 МБ.

Итак, два вопроса:

  1. Как включить битрейт аудио в этот расчет? Это дополнение (размер видеофайла + размер аудиофайла)?

  2. Всегда ли DVD имеют скорость 9000 килобит / секунду? Это определение DVD? Или это может измениться в зависимости от качества моего входного видео? Что "-target ntsc-dvd" гарантирует относительно моего видео?

  3. Почему мой входной файл не «соответствует» расчету, а выходной файл соответствует? Есть ли какая-то другая переменная, которую я не учитываю?

Как правильно рассчитать размер файла?

1 Ответ

3 голосов
/ 25 сентября 2011

Следует иметь в виду, что существует несколько различных измерений битрейта:

  • максимальный битрейт - битрейт наиболее интенсивного фрагмента видео
  • средний (целевой) битрейт - битрейт, рассчитанный точно по вашей формуле

  • управление скоростью (насколько быстро кодер реагирует на изменения сложности видео)

Кодирование видео с потерями работает за счет исключения функций, которые трудно увидеть человеческому глазу.Это означает, что замедленное движение говорящей головы может быть сжато дальше, чем вращающийся полноэкранный зум / панорама.

Почему это важно?Стандарты определяют «максимальный» битрейт по какой-то причине - именно так должен быть проигрыватель, чтобы считывать и декодировать видео, соответствующее стандартам.DVD имеет это около 9000 кбит / с.

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

Например, у вас может быть видео с максимальным битрейтом 7000 кбит / с и средним битрейтом 5500 кбит / с.Наконец, управление скоростью - это алгоритм, используемый для определения того, сколько «космического» кодера следует назначить различным фрагментам.Если вы выполняете многопроходное кодирование, вы повторно используете эту информацию из предыдущих проходов, улучшая качество и распределение битрейта.

...