android 录制手机视频与生成gif图片

在我们写博客或做PPT的时候,经常希望把自己的动画效果演示给别人看。

但是用手机照相机拍摄下来无论从清晰度还是技术角度都感觉太low了,

所以下面我介绍一下我们这些程序员应该怎么做。先看一下效果图


1.录制手机视频

这个很简单,需要如下:

  • 一台4.4以上的手机
  • 输入 adb shell screenrecord /sdcard/test.mp4

  • 操作手机,使用ctrl + C按键结束录制
  • 在手机的sdcard/文件夹下,找到test.mp4并且取出
这个过程很简单,但是我们视频毕竟不是很方便演示,我们的目的是转化为gif图片,
找了很多转换工具,要不就是收费的,要不就是效果不好,所以决定使用自己使用ffmpeg搞吧,这样自己想要什么自己搞就可以了,可控性比较高。
下面介绍如何使用:

2.下载ffmpeg
我使用的是mac,所以只介绍mac的工作方式了,

brew install ffmpeg 安装成功之后,就可以使用了


3.mp4 转换为 gif

  • ffmpeg -i /Users/xiepengchong/Desktop/test.mp4 /Users/xiepengchong/Desktop/test.gif
多么简单,一句命令就转换成功了,
但是别高兴的太早了,我的视频是901k,转换完gif竟然是 4M多,我了个日了,打开一看3s的视频,转换了38张图片,这个明显不适合啊,
下面就是搞一个小一点的了

  • ffmpeg -i /Users/xiepengchong/Desktop/test.mp4 -s 320x480 /Users/xiepengchong/Desktop/output.gif
这样就把我们的图片压缩小了,效果也没什么问题,这样就搞定了,

当然如果你想拥有其他效果,自己研究一下ffmpeg吧,功能很强大的,



                         当然也欢迎大家留言讨论,共同学习


高阶:摘取其他文章

最近,项目里需要做一个把视频片段转成GIF动画的功能,便于用户分享到微博。惊奇地发现,原来强大的FFmpeg是支持的!

可以简单地执行下面的命令行:

ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -f gif D:\a.gif

意思是:将D:\Media目录下的源文件bear.wmv,从第25秒的位置开始,截取10秒长度的视频转成GIF文件,保存为D:\a.gif。

想要知道FFmpeg到底支持哪些格式吗?执行ffmpeg –formats即可。发现gif赫然在列,放心了!


问题来了,你的源文件可能是1080P的高清视频,帧率可能还比较高。为了便于网络分享,GIF文件最好小一点。于是,我们需要使用-s参数来进行图像的缩放,使用-r参数来限制目标文件的帧率。命令行如下:

ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -s 320x240 -f gif -r 1 D:\b.gif

把b.gif拖进浏览器预览,结果发现:虽然帧率降到了1 fps(从源视频里每隔一秒抽取一帧图像输出到目标文件),整个动画播放还是持续了10秒钟,看着很揪心!能不能在源视频跳帧的情况下同时提高GIF的播放速率呢(比如说在2秒内播完)?查了一遍FFmpeg的说明文档,似乎没有哪个参数可以快速达到这样的目的。也罢,那就分两步走吧:

首先,执行ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -r 1 -s 320x240 -f image2 D:\foo-%03d.jpeg,从源视频中每秒钟抽取一帧图像,保存为一系列JPEG文件。然后,再执行ffmpeg -f image2 -framerate 5 -i D:\foo-%03d.jpeg D:\c.gif,将这一系列JPEG图像合成为帧率5 fps的GIF文件。Bingo!

上面提到,把GIF文件拖进浏览器可以进行预览。当然,使用ffplay.exe工具也是可以的——命令行:ffplay D:\a.gif。




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值