ffmpeg输出的含义(tbc,tbn,tbr)

use*_*289 157 video ffmpeg

我正在使用ffmpeg告诉我视频信息.特别:

ffmpeg -i video.ext
Run Code Online (Sandbox Code Playgroud)

我得到输出:

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

有谁知道tbr,tbn和tbc究竟是什么?我看过网上的猜测,但没有确定的?

Ole*_*ade 183

嗯,这都是关于时间的.事实上,FFMpeg使用不同基础上的三个不同时间戳来工作.

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

这也是在FFmpeg邮件列表中提出的:ffmpeg的输出是什么意思?tbr tbn tbc等?

  • @Gyan 什么是“时基”?什么是“AVStream”?什么是“容器”?为什么时间值来自容器?时间不是客观的吗?与所有 3 相同。这个答案需要更多的话。首先尝试用最少的基本英语单词重新措辞,然后再添加更长的版本,用更多的单词用简单的语言描述每个行话术语,以及它们之间的关系,并附有示例。 (23认同)
  • 谢谢你 - 在这些帖子中使用'我认为'的方式 - 我不确定它是'事实'还是'意见'.TBR如何准确地与每秒帧数相关联,它们在什么条件下有所不同?为什么? (5认同)
  • 另请参阅[此答案](/sf/answers/658036921/)和ffmpeg [源代码](https://github.com/FFmpeg/FFmpeg/blob/e5c11ab9cef60a6c9141d7a60145ea833dd88485/libavformat/dump.c# L509) (4认同)
  • tbr 是分路器应该使用的帧率。在较新的版本中,ffmepg/avlib 甚至会直接称其为“fps”。这是较新版本的输出:`Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 23.98 fps, 90k tbn, 47.95 tbc` (3认同)
  • “来自容器的AVStream中的时基”是一个毫无意义的句子。 (2认同)
  • @Chloe 这怎么毫无意义呢? (2认同)
  • @Chloe时基:确定帧定时的依据;avstream:音频/视频顺序数据;容器:可以包含音频/视频数据通道的文件格式,例如avi,mp4或mkv;这些是数字视频单词,可能来自ffmpeg来源,但是我认为您的意思是答案不能解释这些ffmpeg术语,这是有效的。 (2认同)
  • 答案有一定价值,但没有回答问题 (2认同)
  • 刚刚花了一段时间才弄清楚这一点。上下文:视频和音频均使用**编解码器**(例如,H.264)进行编码,然后一起存储在**容器**(例如,MP4)中。容器和编解码器都有时间概念——视频有多长,每帧何时开始?这些时间以刻度为单位。在编解码器中,一帧可能从刻度 10 开始,下一帧从刻度 12 开始。在容器中,音轨可能有 1000 刻度长。**时基**是每秒的刻度数。这里的关键是容器 (**tbn**) 和编解码器 (**tbc**) 的时基可以不同。 (2认同)
  • 这个答案有助于描述这些概念术语:/sf/answers/3033606481/ (2认同)
  • 有关更多详细信息,请参阅超级用户的答案:https://superuser.com/questions/1362410/what-is-fps-tbr-tbn-tbc-in-ffmpeg/1759811#1759811 (2认同)