Was bedeuten die Details des Videoausgabestreams von ffmpeg?

10

Wenn Sie ffmpeg -idie Videodatei als Eingabeparameter ausführen , gibt ffmpeg einige Details des Stream-Typs zurück, z. B. Codec, Bitrate und Auflösung. Was bedeuten die anderen Daten - "tbr", "tbn" und "tbc"? Anhand meiner Beispiele unten können Sie sehen, dass sie sehr unterschiedlich sind.

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

Sekundäre Frage: Warum wird die Bitrate nicht immer angezeigt?

Nilzor
quelle

Antworten:

6

Was Sie sehen, ist der Kehrwert der in FFmpeg verwendeten Zeitstempelbasen und der En / Decoder. Ich kann es nicht besser erklären und zitiere daher nur die FFmpeg-Mailingliste :

tbn ist die Zeitbasis in AVStream, die aus dem Container stammt, denke ich. Es wird für alle AVStream-Zeitstempel verwendet.

tbc ist die Zeitbasis in AVCodecContext für den Codec, der für einen bestimmten Stream verwendet wird. Es wird für alle AVCodecContext- und zugehörigen Zeitstempel verwendet.

tbr wird aus dem Videostream erraten und ist der Wert, den Benutzer sehen möchten, wenn sie nach der Videobildrate suchen, außer manchmal ist es doppelt so hoch, wie man es aufgrund der Feldrate gegenüber der Bildrate erwarten würde.

Am Ende möchten Sie tbr als den Wert nehmen, den man meistens als "Framerate" bezeichnet.

Bitrate wird nicht immer angezeigt, da Videostreams möglicherweise Inhalte mit variabler Bitrate enthalten. In diesem Fall können Sie die Bitrate nicht wirklich schätzen. Bei Streams mit konstanter Bitrate wird normalerweise die Bitrate angezeigt. In einigen Fällen werden variable Bitraten verwendet und FFmpeg zeigt den Durchschnitt an - zumindest bei h.264-Videos funktioniert dies manchmal.

Video: h264, yuv420p, 640x480, 22050 tbr, 22050 tbn, 44100 tbc scheint offensichtlich eher ein Audio-Stream zu sein.

slhck
quelle