当前位置: 首页 > 知识库问答 >
问题:

ffmpeg中显示的FPS与总帧/持续时间不匹配

贺乐意
2023-03-14

FPS定义为每秒的帧数。但当我尝试使用总帧数/持续时间计算FPS时,得到的数字与ffmpeg中显示的FPS略有不同:

为了这个视频http://commondatastorage.html" target="_blank">googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4 使用ffmpeg,我们可以获得其FPS、持续时间和总帧数:

ffprobe-选择\u streams v-显示\u streams以获得更大的乐趣。mp4 | grep nb|u帧

nb_帧=1440

ffmpeg-我想找个大乐子。mp4

23.98 fps时长:00:01:00.07

如果我们使用nb_帧计算每帧的持续时间,我们得到fps=nb_帧/持续时间=1440/60.07=23.972032628599965,这与23.98不同

哪个值更可靠?这种差异是否意味着帧的持续时间可能不同于其他帧(帧的分布不均匀)?

共有1个答案

益锦程
2023-03-14

请注意,持续时间和fps都四舍五入到小数点后两位。

要获得更精确的读数,请运行

ffprobe -v 0 -select_streams v -show_entries stream=duration_ts,time_base,nb_frames  ForBiggerFun.mp4

那会产生什么

[STREAM]
time_base=1/48000
duration_ts=2881920
nb_frames=1440
[/STREAM]

您的精确帧率是nb_frames/(duration_ts/time_base)=1440 / (2881920 / 48000)=23.9840。但是请注意,所有流不会有相同的持续时间。事实上,音频流长了30毫秒,播放器将延长视频的持续时间以与之匹配,因此从算术上讲,有效帧速率略小。

 类似资料:
  • 使用FFmpeg C API,我试图将输入视频转换成类似动画gif的视频,这意味着没有音频流,视频流为4/fps。 我有解码/编码部分工作。我可以从输出文件中删除音频流,但在降低fps时遇到了问题。我可以将输出视频流的time_base更改为4/fps,但它会增加视频的持续时间-基本上是以慢速模式播放。 我想我需要先删除额外的帧,然后再将它们写入输出容器。 下面是我读取输入帧,然后将它们写入输出容

  • 对于我的项目,我必须读取在CSV文件中提供给我们的数据并以某种格式将其写出。我几乎完成了,但我遇到的问题是我的程序没有完全读取给定的时间。从这里开始,我的程序只是读取所有给定的时间。 我试图将<code>字符串时间。 这应该会回来 [芝麻街|埃尔莫之最1240:28:11] 但它返回 [Elmo的最佳|芝麻街124;2:29,1:30,2:09,1:46,1:55,2:02,1:42,2:40,1

  • 我正在使用AV Foundation来处理视频摄像头(iPhone4S和iOS 6.1.2)中的帧。我正在根据AV Foundation编程指南设置AVCaptureSession、AVCaptureDeviceInput、AVCaptureVideoDataOutput。所有工作都按预期进行,并且我能够接收委托中的帧。 我还有一个预览图层设置是这样的: 事情是,我不需要30帧每秒在我的帧处理和我

  • 问题内容: 要获取有关媒体文件的大量信息,可以做 它会输出很多行,特别是一行 我只想输出,所以我尝试 但是它可以打印所有内容,而不仅仅是长度。 甚至输出所有内容。 如何获得持续时间长度? 问题答案: ffmpeg正在将该信息写入,而不是。尝试这个: 注意重定向到: 编辑: 您的陈述也不起作用。尝试这个:

  • 我正在尝试用FFMPEG录制一段H264视频。 以下是我在FFMPEG中使用的选项: -thread_queue_size 512-framerate 30-f rawvideo-pix_fmt rgb32-video_size 1920x1080-i\.\pipe\pipe_name-vcodec libx264-crf 23-pix_fmt yuv420p-preset超快-r 30“outp

  • 问题内容: 我有一个表,其中有两列开始时间和结束时间。我能够计算每一行的持续时间,但我也想获得总持续时间。这该怎么做。 谢谢 问题答案: 您的列的数据类型为TIMESTAMP,如下所示: 从一个时间戳减去另一个时间戳会导致一个INTERVAL数据类型: 并且不能对INTERVAL数据类型求和。这是一个令人讨厌的限制: 为了规避此限制,您可以使用秒数进行转换和计算,如下所示: 然后它们是可以累加的普