Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

Android快速录制视频并转为gif动图



有时需要快速录制android手机上的操作步骤,并转换为gif动图,比如做一些演示范例。在没有其他软件的情况下,可以用到adb和ffmpeg。

先打开usb调试,连接电脑,执行如下命令:

adb shell screenrecord /storage/0000-0000/a.mp4

此时都用的默认参数,操作完成后按ctrl+c退出即可。常用的参数是--size(长和宽默认是手机分辨率或者为1280x720), --bit-rate(默认是4000000即4Mbps), --time-limit(默认180秒)。路径可以选择手机上的目录。

此时可以把该文件拷出来:

adb pull /storage/0000-0000/a.mp4 ./

然后用ffmpeg转换为gif:

ffmpeg -i 1.mp4 1.gif

如果录制了一些无用操作或者时间太长,可以截取部分片段转换为gif。如下命令代表从5秒开始截取3秒。

ffmpeg -t 3 -ss 00:00:05 -i 1.mp4 3s.gif

不过往往转换出来的gif动图文件过大,甚至大于视频文件大小。于是可以加一些额外的参数来减小文件大小。比如:

ffmpeg -t 10 -ss 00:00:05 -i 1.mp4 -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 10s.gif

此时转换出的文件大小就比较合理了。

其中fps代表每秒多少帧;scale代表缩减到宽度的像素,长度会根据宽度自动调整;loop为0代表会一直循环。

这个命令可以参考:https://superuser.com/questions/556029/how-do-i-convert-a-video-to-gif-using-ffmpeg-with-reasonable-quality/556031#556031

当然,也可以截取部分的视频,此时同时长的视频比动图文件小得多。

ffmpeg -t 10 -ss 8 -i 1.mp4 10s.mp4

如果想把两个视频合并为一个,且两个视频是左右同时播放的,可以用命令:

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex hstack output.mp4

如果想把两个视频合并为一个,且两个视频是串起来顺序播放,可以用如下两种命令:

一是:

ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a]\
concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4

二是先创建文件记录需要转换的文件,然后运行:

ffmpeg -f concat -safe 0 -i filelist.txt -y output.mp4

# filelist.txt contains below content
#  file '11.mp4'
#  file '22.mp4'

 

下一篇:  解决Google Chrome无法保存密码的问题
上一篇:  Django Restframework性能优化的选择

共有0条评论

添加评论

暂无评论