如何使用 ffmpeg 获取给定时间戳的帧号

问题描述 投票:0回答:1

如何使用 ffmpeg 获取最接近给定时间(相对于视频开头)的帧号? 视频具有可变帧速率。我不需要任何其他元数据或实际帧(图像)本身。速度比精度更重要(除非可能的误差超过几秒)。

示例:

输入

  • video.mp4(为简单起见,假设理想恒定 30 fps)
  • 00:00:05(时:分:秒)

输出

  • 150
video ffmpeg video-processing
1个回答
5
投票
ffmpeg -t 01:05 -i input.mp4 -nostats -vcodec copy -y -f rawvideo /dev/null 2>&1  |\
   grep frame |\
   awk '{print $2}'

这个 ffmpeg 命令获取您的 input.mp4,将其截断为 -t (在上面的示例中 01:05,并将文件写入 /dev/null

-y
会覆盖 / 上的所有内容)开发/空.

grep命令获取帧数,awk为您提供该行的第二个“单词”(以空格分隔)。

输入:

ffmpeg -t 01:05 -i baywatch.mp4 -nostats -vcodec copy -y -f rawvideo /dev/null 2>&1 | grep frame | awk '{print $2}'

输出:

1559

© www.soinside.com 2019 - 2024. All rights reserved.