NoHttp开源地址:https://github.com/yanzhenjie/NoHttp
演示
大家看博客时经常看到下面这种图片,都很想知道怎么做的吧,好在自己写博客时也把操作录下来:
这个图是我另一个博客的图讲Android三级联动和ListView单选多选的,博客和源码传送门,现在呢就一步步教大家怎么来做这个图。
上方的Gif图是怎么来的
其实这个Gif是一个mp4的视频,只是后来转成了gif,就这么简单,这就是本质。但是Android怎么录mp4呢?
录制环境
Android4.4以上的系统可以用shell命令录视频,视频格式是mp4。
局限性
- 分辨率过高的设备不指定低分辨率录屏会失败,请尝试指定低分辨率再录屏
- 录制过程中屏幕不能旋转,如果发生旋转,录制过程可能被中断
- 录制过程中的声音不能被录下来
说到底就是录制屏幕画面啦,只不过格式是mp4的。
录制命令
视频格式为mp4,存放到手机sd卡里,默认录制时间为180s,可用ctrl + c结束录制。
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord /sdcard/demo.mp4</code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
指定录制时间
参数:–time-limit [秒数],例如指定录制10S:
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord <span class="hljs-comment">--time-limit 10 /sdcard/demo.mp4</span></code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
指定分辨率
参数:–size [宽*高],例如指定录制分辨率为720*1280
:
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord <span class="hljs-comment">--size 720*1280 /sdcard/demo.mp4</span></code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
指定比特率
参数:–bit-rate 比特率,为了发博客方便我们指定比特率为2Mbps
:
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord <span class="hljs-comment">--bit-rate 2000000 /sdcard/demo.mp4</span></code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
Log显示录制过程
参数:–verbose,例如:
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord <span class="hljs-comment">--verbose /sdcard/demo.mp4</span></code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
使视频旋转90度
参数: –rotate,例如:
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord <span class="hljs-comment">--rotate/sdcard/demo.mp4</span></code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
导出视频到电脑
这个命令大家应该经常用,后边的文件路径得是你刚才指定保存路径,会导出调用命令的目录下。例如:
<code class="language-shell hljs avrasm has-numbering">adb pull /sdcard/demo<span class="hljs-preprocessor">.mp</span>4</code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
查看帮助
参数:–help,例如:
<code class="language-shell hljs livecodeserver has-numbering">adb <span class="hljs-built_in">shell</span> screenrecord <span class="hljs-comment">--help</span></code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
怎么把mp4转为gif
如果和MP4转为gif,这里有两个方法。
用ffmpge
如果你电脑配置了ffmpge就很简单了,命令行一句话搞定:
<code class="language-shell hljs lasso has-numbering">ffmpeg <span class="hljs-attribute">-t</span> <span class="hljs-subst"><</span>视频时长<span class="hljs-subst">></span> <span class="hljs-attribute">-ss</span> <span class="hljs-attribute">-i</span> <span class="hljs-subst"><</span>视频文件<span class="hljs-subst">></span> demo<span class="hljs-built_in">.</span>gif</code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
比如我们生成一个13S的图:
<code class="language-shell hljs lasso has-numbering">ffmpeg <span class="hljs-attribute">-t</span> <span class="hljs-number">13</span> <span class="hljs-attribute">-ss</span> <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> <span class="hljs-attribute">-i</span> demo<span class="hljs-built_in">.</span>mp4 demo<span class="hljs-built_in">.</span>gif</code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>
用工具转,这个更好用一点,推荐喔
我已经下载好放百度网盘了,先附上下载地址:http://pan.baidu.com/s/1mgVhuf2
软件运行截图:
选择视频文件指定开始转的位置,结束的位置,宽高,帧每秒/帧率等:
选择图片质量保存转化好的gif图:
最后指定图片保存位置,就OK了。
NoHttp 源码及Demo托管在Github欢迎大家Star:https://github.com/yanzhenjie/NoHttp