“ffmpeg”中的 fps、tbr、tbn、tbc 是什么?

Chl*_*loe 11 ffmpeg

以下缩写词在ffmpeg和中的含义是什么ffprobe

\n\n
>ffprobe -hide_banner logo.gif\nInput #0, gif, from \'logo.gif\':\n  Duration: N/A, bitrate: N/A\n    Stream #0:0: Video: gif, bgra, 320x314, 33.33 fps, 33.33 tbr, 100 tbn, 100 tbc\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想 fps 是每秒帧数,但我不知道其他是什么。该文档没有帮助。tbr未找到。https://www.ffmpeg.org/ffmpeg.html

\n\n

tbrhttps://www.ffmpeg.org/ffmpeg-all.html找到了,但没有意义

\n\n
\xe2\x80\x98TBR\xe2\x80\x99\ntop back right\n
Run Code Online (Sandbox Code Playgroud)\n\n

常见问题解答也没有帮助。https://www.ffmpeg.org/faq.html

\n\n

与网络搜索一样https://duckduckgo.com/?q=ffmpeg+fps%2C+tbr%2C+tbn%2C+tbc&ia=web

\n

wis*_*cky 8

缩写 满的 多变的 解释
帧率 每秒帧数 AVStream.avg_frame_rate 平均帧率=总帧数/总秒数。可变帧率视频的 fps 可能为 57.16
tbr 时基,实数(?) AVStream.r_frame_rate 用户友好的目标帧速率。上面相同的可变帧率视频的 tbr 可能为 60。
TBN 时基数(?) AVStream.time_base 时间刻度(每秒滴答数)。该数字可以是 90000、15360 等。它用于根据 PTS(演示时间戳)计算实际时间。如果时间刻度为 90000,并且帧的 PTS 为 45000,则该帧将显示在 0.5 秒处。

(注意:这个缩写和变量名是用词不当,因为它实际上是时间刻度,而不是时基。时基应该是倒数,例如 1/90000、1/15360 等)
待定 时基、编解码器(?) AVCodecContext.time_base 编解码器时间刻度。与 tbn 相同,但针对编解码器。这已被弃用并删除。

源代码中没有提及解释 tbr、tbn、tbc 的完整单词。我的猜测是,tbr、tbn、tbc 最初是有含义的,但原来的名称不再适用,现在可能是用词不当。例如,tbn甚至不是时基,而是时间刻度(倒数)。我根据源代码的线索猜测了原始的完整单词。


参考


小智 2

对于 mp4/mov 文件,“tbn”是在 mdhd-box 中发出信号的时间刻度值。每个基本流在 mp4 容器中都有自己的轨道,因此有自己的 MDHD 盒和自己的时间尺度。“tbn”与帧速率或帧持续时间无关。这只是时间尺度。

对于传输流(扩展名“ts”或“m2ts”),“tbn”始终为 90kHz,这是 ISO/IEC 13818-1 的时间尺度。与 mp4 容器不同,ts-container 具有固定的时间尺度(PTS/DTS 为 90kHZ,PCR 为 27MHz)。