ffmpeg - 使用 ffmpeg 提取帧并找出它们的偏移量(毫秒)
问题描述
我希望每 2 秒提取 10 个连续帧。(这是因为我希望从“附近偏移”中选择“最好的”)。我知道如何每 x 秒提取一帧:
ffmpeg -i /tmp/V.MP4 -vf fps=1 %02d.jpg
我知道如何从一些起始偏移中提取 10 帧:
ffmpeg -ss 20.0 -i /tmp/V.MP4 -vframes 10 %02d.jpg
我有两个问题:
- 如何找到每个输出图像的偏移量?我可以尝试计算它(使用视频 fps,在我的情况下为 29.97),但这听起来是个坏主意 - 数据就在视频中供 ffmpeg 抓取..
- 有没有一种有效的方法可以将两个命令“合并”为一个,从而每 x 秒获得 10 个连续帧?
解决方案
利用
ffmpeg -i source -vf select='eq(n,0)+if(mod(trunc(t)+1,2)*(trunc(t)-trunc(prev_t)),st(1,n),lt(n,ld(1)+10))' -vsync 0 -frame_pts 1 %d.jpg
如何找到每个输出图像的偏移量?
查看 frame_pts 值的含义,在ffmpeg 输出图像文件名和时间位置
这是因为我希望从“附近偏移”中选择“最好的”
缩略图过滤器可以做到这一点。
推荐阅读
- google-app-engine - 如何在 Google App Engine 中过滤和查看每日日志?
- python - 将字典转换为字符串
- android - 如何使线性布局在协调器布局内可滚动?
- java - 如何重用 maven 的 .repository 内容以避免重新下载每个项目构建的外部依赖项?
- python - 如何使用 get 请求的响应通过 aiohttp 上传文件?
- android - Android Studio HAXM 未安装
- azure - 区域出现故障时单个 Azure VM 会发生什么
- node.js - node.js 的 lambda 函数将如何用于使用存储到 DynamoDB 的 for application/x-www form-urlencoded 数据的发布请求
- javascript - 如何使用reactjs显示从表中的api获取的数据
- c# - 替换 Word 文档中的单词会导致多次替换为 C#