NoHttp开源地址:​​https://github.com/yanzhenjie/NoHttp​


演示

  大家看博客时经常看到下面这种图片,都很想知道怎么做的吧,好在自己写博客时也把操作录下来:

Android录屏命令、Android录Gif、Android录视频_github


  这个图是我另一个博客的图讲​​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​​​
  软件运行截图:
  
选择视频文件指定开始转的位置,结束的位置,宽高,帧每秒/帧率等:

Android录屏命令、Android录Gif、Android录视频_Android_02

选择图片质量保存转化好的gif图:

Android录屏命令、Android录Gif、Android录视频_github_03

最后指定图片保存位置,就OK了。

NoHttp 源码及Demo托管在Github欢迎大家Star:​​https://github.com/yanzhenjie/NoHttp​