哇塞哇塞--一行命令搞定视频截取和gif制作!
文|梁佐佐
假如你平时方便用Linux,或者为了更高效的做一些简单的视频剪辑,不妨试试Linux下强大的视频编辑软件,即ImageMagick和ffmpeg。本文将言简意赅的介绍怎样一行命令实现——视频截取、视频中的帧图片提取、短视频转换为gif、多张图片合成gif、gif图片压缩这5个技巧。
首先,我下载了最新一集的一拳超人(第二季第十集):
至于是怎么下载的,现在这不是重点。
在linux环境下,可以看见这个视频的名字--***ONEPUNCH*******
开始操作了!!
1. 怎样一行命令剪切视频中的某一片段?
输入下行命令,将截取该集动画片中的19分55秒——20分00秒总共5s的视频(Ps: 我发现第二季一拳超人每集中精彩的打斗场面真是太少了,远远不如第一季,本来想剪辑海贼王的,可是海贼王最新几集更是没有打斗,而且真是PPT动画的感觉==不说了)。
ffmpeg -i \[HYSUB\]ONE\ PUNCH\MAN\[22\]\[GB_MP4\]\[1280X720\].mp4 -vcodec copy -acodec copy -ss 00:19:55 -to00:20:00 cutout5s.mp4 –y
-i:读取视频文件名
-vcodec copy表示使用跟原视频一样的视频编解码器。
-acodec copy表示使用跟原视频一样的音频编解码器。
-ss 00:19:55 -to00:20:00:从00:19:00开始剪切到00:20:00总共5s
cutout5s.mp4 –y:剪切出的视频命名为cutout5s.mp4,-y表示覆盖掉同名的文件(不加也行)
2. 怎样将视频安帧拆解为很多图片?
ffmpeg -i cutout5s.mp4 image%d.jpg
-i cutout5s.mp4 image%d.jpg:读取cutout5s.mp4,将其拆解为image*.jpg。
3. 怎样用这个cutout5s.mp4或者是很多图片合成制作一个gif动图?(这其实是两个问题)
ffmpeg -icutout5s.mp4 out.gif
或者是
convert -delay 10-loop 0 *.jpg out.gif
-delay 10:其中,120表示10*10ms=0.1s,每帧图片播放时间隔1.2s
-loop 0:其中,0表示无限循环此gif。
*.jpg表示当前目录默认排序下的所有jpg图片
out.gif表示最后生成的gif动图
4. 生成的gif太大了,好几十M或者十几M,怎样压缩?
mogrify -resize320x240 out.gif
-resize 640x480 out.gif:将out.gif(直接从视频转换后的大小为27M !)画幅大小调整为640*480。你也可以320 x240或者其他数值,看一下这两者的区别吧:
最后,让我们看看只懂技术不懂审美的小编合成的gif是怎样的:
(因为图片上传要求小于2M,该gif包含的图片帧数是100多张,然后这么模糊实在是。。。。。。情有可原=。=)
更多细节参考:
https://blog.csdn.net/huangxingli/article/details/46663143
https://www.jianshu.com/p/6b629dc305af
https://blog.csdn.net/tge7618291/article/details/7553807
喜欢的话,分享一下吧~^o^~