在FFmpeg文档(here和here)上,我读到,默认情况下,FFmpeg
选择以每秒25帧的速度提取帧(否则您可以指定帧率) -r
选项)
我的问题是我有一个包含数十个视频的文件夹,每个视频都以不同的帧速率录制,所以我的问题是:
有没有办法让FFmpeg
以“原生”帧速率(即录制视频的原始帧速率)从视频中提取帧?
如果重要,我正在处理MP4
个文件
答案 0 :(得分:2)
获取原始帧速率:
ffmpeg -i file.mp4 2>&1 | grep -o '[0-9]\{1,3\}\sfps'
示例输出:
25 fps
您可以将其发送至sed ... | sed 's/\sfps//'
以仅保留25
,并将其存储到变量中,以便您可以使用该变量转换视频,例如ffmpeg -r $originalFps
。
grep -o
将提取匹配,而不是包含匹配的整行。
[0-9]\{1,3\}
将匹配一到三位
\sfps
将匹配空格,后跟'fps'