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