FFmpeg生成长视频缩略图幻灯片视频的命令问题求助
FFmpeg生成长视频缩略图幻灯片视频的命令问题求助
嗨,我来帮你排查并解决这个FFmpeg的问题~
你的需求很清晰:每60秒从原视频提取一帧,然后让每帧在幻灯片视频里显示2秒,但原命令因为滤镜逻辑冲突导致了异常,具体问题和修复方案如下:
原命令的问题分析
你连续使用了两个fps滤镜,还搭配了逻辑冲突的setpts参数,导致FFmpeg的帧处理逻辑混乱:
- 第一个
fps=1/60确实能按每60秒提取一帧,但后续的setpts=N/FR/TB是默认时间戳设置,没改变帧的显示时长; - 最后再加
fps=1/2,相当于告诉FFmpeg每秒只保留1/2帧(也就是每2秒一帧),但前面已经只有每60秒一帧的输入,最终就只留下了单帧,自然输出视频时长不对。
修复后的正确命令
ffmpeg.exe -i "D:/input-video-1.mkv" -vf "fps=1/60,scale=-2:240,setpts=2*N/FR/TB" -an -sn -dn -y "D:/output-3.mp4"
命令参数详解
fps=1/60:核心提取逻辑,告诉FFmpeg每秒仅提取1/60帧,等价于每60秒取一帧;scale=-2:240:将提取到的帧按比例缩放到高度240,宽度自动适配(-2表示保持宽高比);setpts=2*N/FR/TB:关键的时长控制参数,2*表示给每个帧设置2秒的显示时长,确保幻灯片视频里每帧停留2秒;-an -sn -dn:分别禁用音频、字幕、数据流,符合你只做幻灯片视频的需求;-y:自动覆盖已存在的输出文件,避免交互提示。
额外优化建议
如果输出视频兼容性有问题,可以手动指定H.264编码器,让输出更稳定:
ffmpeg.exe -i "D:/input-video-1.mkv" -vf "fps=1/60,scale=-2:240,setpts=2*N/FR/TB" -c:v libx264 -an -sn -dn -y "D:/output-3.mp4"
备注:内容来源于stack exchange,提问作者Pankaj
相关产品推荐
相关产品推荐

