前几天看 v 站有位 v 友发了个帖子《有沒有視頻產生縮略圖並記錄時間點的軟件》/t/1034649。 当时有兴趣就研究了一下。
不得不说 ffmpeg 本身真是强大,经过几天研究,有了一些心得和产出。
先给出 GitHub 地址:https://github.com/jifengg/ffmpeg-script
使用方式:
node ffmpeg.video2bookmark.js -i <file|folder> [-temp <folder> ...]
支持的参数:
-i <string> [必须]要处理的文件或目录
-y 是否覆盖已经存在的 pbf 文件,默认:false
-size <number> 缩略图高度,默认:72
-score <number> 0.0 到 1.0 之间的值,表示视频帧可能为新场景的概率;建议设置在 0.3 到 0.5 之间。太小的值会出现过多场景帧,而太大的值会导致过少的场景帧。默认:0.5
-temp <string> 缓存目录,默认为脚本所在目录下的“temp”目录
-min-interval <number> 两个场景帧之间的最小间隔,间隔比这个值小的场景帧将被丢弃,这个值保证书签不会太密集,单位秒,默认:20.0
-max-interval <number> 两个场景帧之间的最大间隔,如果间隔比这个值大,将在他们之间每 max-interval 秒取一帧,这个值保证书签不会太稀疏,单位秒,默认:60.0
-h 显示这个帮助信息
-debug 是否开启 debug 模式,打印更详细的日志
以下是一些技术点总结:
select
,结合scene
,实现按照场景帧来提取视频帧,而不是机械的每 n 秒一帧,画面更有代表性;select
中的prev_selected_t
,实现场景帧太密集或太稀疏的优化,实现最小间隔和最大间隔;这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.