ffmpeg 如何生成一个预览视频

假如我有一个100秒的视频,想生成一个10秒预览视频,我对ffmpeg不熟悉,首先想到的是,把100秒分成10段,每段取前面一秒,也就是

0~1 
10~11
20~21
....
90~91

得到10个1秒的片段,再合并一个10秒视频
但是这样要执行 11 次命令,如果换个视频,每次都要计算片段时间,
有没有像 select='not(mod(n\,x))'这样每多少秒或者每多少帧,就截取1秒视频,最后合并到一个视频的命令


@zxdposter 的回答已经解决了问题,后来我又想了下,还可以用 select='lt(mod(t, X),Y)的方式

假设源视频长度为 1420秒,要平均10个1秒视频,把视频平均分为10段,每段是142秒

取每一段开头那秒,也注是 select='lte(mod(t, 142),1)',如果要到每段中间,可结合 lt,gt做比较

生成预览视频完整命令

./ffmpeg.exe -i 'input.mp4' -vf "select='lte(mod(t, 142),1)',scale=-1:240,setpts=N/FRAME_RATE/TB" -an -y preview.ts

scale=-1:240是把预览视频高设为 240 宽度为-1自适应
-an 删除声音

阅读 6.2k
2 个回答
ffmpeg -i video \
       -vf "select='between(t,4,6.5)+between(t,17,26)+between(t,74,91)',
            setpts=N/FRAME_RATE/TB" \
       -af "aselect='between(t,4,6.5)+between(t,17,26)+between(t,74,91)',
            asetpts=N/SR/TB" out.mp4

你可以这样做,来自于stackoverflow

参数什么的,你可以自己写一小段命令拼就行了。

现在都是云的时代了,为啥还保守残缺的思想——什么都要自己做,什么都得会?

视频处理为啥不考虑优酷开放API?你想做的什么视频处理都有,而且不用你操心带宽,优酷有免费额度,商业使用你也可以付费,满足你各种体量的需求

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进