ffmpeg输出中的含义(tbc,tbn,tbr)是什么?

221

我正在使用ffmpeg来获取视频信息。具体来说:

ffmpeg -i video.ext

我得到的输出是:

Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 704x576 [PAR 12:11 DAR 4:3], 9578 kb/s, 25 tbr, 90k tbn, 50 tbc

有人知道tbr、tbn和tbc确切是什么吗?我在网上看到了一些猜测但没有明确的答案。


9
如可能,请将此转移到 video.se。 - v010dya
2
请查看此详细答案在超级用户上的链接:https://superuser.com/questions/1362410/what-is-fps-tbr-tbn-tbc-in-ffmpeg/1759811#1759811 - wisbucky
或者在视频堆栈交换中查看 https://video.stackexchange.com/questions/35455/meaning-of-ffmpeg-output-tbc-tbn-tbr - Antonio
1个回答

242

这涉及到时间问题。FFMpeg实际上使用了三种不同的时间戳,以不同的基数进行工作。

  • tbn = 来自容器的AVStream中的时间基数
  • tbc = 用于特定流的编解码器的AVCodecContext中的时间基数
  • tbr = tbr从视频流中猜测而来,是用户查找视频帧速率时想要看到的值

这也在FFmpeg邮件列表上提出了问题: FFmpeg的输出意味着什么?tbr tbn tbc等等?


9
谢谢您提供这个信息,针对这些帖子中使用“我认为”的方式,我不确定它是“事实”还是“观点”。TBR与每秒帧数的关系是什么?在什么条件下它们会有所不同,原因是什么? - user7289
8
请看这个答案和ffmpeg的源代码 - djvg
24
“从容器中获取的AVStream中的时间基是一个毫无意义的句子。” - Chloe
41
@Gyan 什么是“时间基准”?什么是“AVStream”?什么是“容器”?为什么时间值会来自容器?时间不是客观的吗?所有三个问题都是如此。这个答案需要更多的词汇。首先尝试用最少的基本英语单词重新表述,然后在第二个版本中附加更长的描述每个行话术语的许多更多单词,并说明它们如何相互关联,并提供示例。 - Chloe
23
刚刚花了一段时间弄明白这个问题。背景:视频和音频都使用某种编解码器(例如H.264)进行编码,然后一起存储在容器中(例如MP4)。容器和编解码器都有一个时间概念——视频的长度是多少,每一帧什么时候开始?这些时间以“tick”的方式衡量。在编解码器中,一个帧可能从第10个tick开始,下一个从第12个tick开始。在容器中,音轨可能长达1000个tick。而“时间基数”是每秒钟的tick数。关键是,容器(tbn)和编解码器(tbc)的时间基数可以不同。 - ianh
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接