9

Когда вы запускаете ffmpeg -i с видеофайлом в качестве входного параметра, ffmpeg возвращает некоторые подробности о типе потока, такие как кодек, битрейт и разрешение. Что означают другие данные - "tbr", "tbn" и "tbc"? Из приведенных ниже примеров видно, что они сильно различаются.

Stream #0.0(und): Video: h264, yuv420p, 1280x720, 25 tbr, 25 tbn, 50 tbc

Stream #0.0(eng): Video: h264, yuv420p, 640x480, 22050 tbr, 22050 tbn, 44100 tbc

Stream #0.1: Video: wmv3, yuv420p, 1280x720, 4000 kb/s, 29.97 tbr, 1k tbn, 1k tbc

Вторичный вопрос: почему не всегда отображается битрейт?

1 ответ1

6

То, что вы видите, является обратной величиной баз меток времени, используемых в FFmpeg и en/decoders. Я не могу объяснить это лучше, поэтому просто цитирую список рассылки FFmpeg:

Я думаю, что tbn - это временная база в AVStream, пришедшая из контейнера. Используется для всех отметок времени AVStream.

tbc - это временная база в AVCodecContext для кодека, используемого для определенного потока. Он используется для всех AVCodecContext и связанных меток времени.

tbr определяется из видеопотока и представляет собой значение, которое пользователи хотят видеть, когда ищут частоту кадров видео, за исключением того, что иногда она вдвое больше, чем можно было бы ожидать из-за частоты поля и частоты кадров.

В конце концов, вы хотите взять tbr в качестве значения, которое чаще всего называют "частотой кадров".

Битрейт не всегда отображается, поскольку видеопотоки могут содержать переменный битрейт - в этом случае вы не сможете реально оценить битрейт. Для потоков с постоянным битрейтом обычно отображается битрейт. В некоторых случаях используются переменные битрейты, и FFmpeg показывает среднее значение - по крайней мере, для видео h.264 это иногда работает.

Video: h264, yuv420p, 640x480, 22050 tbr, 22050 tbn, 44100 tbc больше похоже на аудиопоток.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .