в
может ли ffmpeg определить степень сжатия или битрейт для видео. вес / длительность = битрейт

о
конечно, ffmpeg (и идущий с ним в комплекте ffprobe) может легко извлекать и рассчитывать точный битрейт. [1]

Формула Вес / длительность = битрейт верна, и технически бтрейт выражается так:
Битрейт (бит/с) = Вес файла (в битах) / Длительность (в секундах)

Так как в 1 Байте = 8 бит, а размер обычно измеряется в мегабайтах (МБ), формула для получения килобит/с (kbps) выглядит так:
Битрейт (kbps) = ( Размер файла (МБ) * 8192 ) / Длительность (сек)
(где 8192 - это 8 * 1024 для перевода МБ в килобиты)

Подробная инструкция, как узнать нужные данные, приведена ниже.

1. Как узнать точный битрейт с помощью FFmpeg

Утилита ffprobe (входит в пакет FFmpeg) мгновенно считывает метаданные потока. Откройте терминал/командную строку и введите: [1, 2]

ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 inputvideo.mp4

Замените inputvideo.mp4 на путь к вашему видео.

Результат вы увидите в битах в секунду (например, 5469007). Разделите это число на 1,000, чтобы получить привычный kbps (в данном случае это будет 5469 kbps).
Если у вас MKV-файл, битрейт лучше смотреть на уровне всего контейнера, использовав команду:

ffprobe -i inputvideo.mkv -v 0 -show_entries format=bit_rate -of compact=p=0:nk=1

2. Как узнать степень сжатия (Ratio)

Степень сжатия показывает, во сколько раз исходный (несжатый) объем видео больше сжатого. Для этого:

Вычислите объем исходного видео (несжатого) по формуле:
Вес несжатого = Разрешение (ширина и высота) * Кадров в сек * Глубина цвета (обычно 24 бита) * Длительность
Разделите фактический размер сжатого файла на диске на этот расчетный объем.

Для ручного оценки с помощью ffprobe можно быстро получить все базовые данные для расчетов — длительность, размер, разрешение и fps:

ffprobe -v error -select_streams v:0 -show_entries format=size,duration -show_entries stream=width,height,r_frame_rate -of json inputvideo.mp4

3. Как изменить/установить битрейт в FFmpeg

Если степень сжатия текущего файла вас не устраивает и вы хотите перекодировать видео в другой битрейт (например, 2 Мбит/с), используйте команду: [1]

ffmpeg -i inputvideo.mp4 -b:v 2M -c:a copy outputvideo.mp4

-b:v 2M — устанавливает желаемый видеобитрейт 2 Мбит/с.
-c:a copy — копирует звук не меняя, сохраняя и качество