android 手机录屏代码,Android录屏命令、Android录Gif、Android录视频(示例代码)

演示

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

6d64674f516849613dd0120487170672.gif

这个图是我还有一个博客的图讲Android三级联动和ListView单选多选的,博客和源代码传送门,如今呢就一步步教大家怎么来做这个图。

上方的Gif图是怎么来的

事实上这个Gif是一个mp4的视频。仅仅是后来转成了gif,就这么简单。这就是本质。可是Android怎么录mp4呢?

录制环境

Android4.4以上的系统能够用shell命令录视频,视频格式是mp4。

局限性

分辨率过高的设备不指定低分辨率录屏会失败。请尝试指定低分辨率再录屏

录制过程中屏幕不能旋转,假设发生旋转。录制过程可能被中断

录制过程中的声音不能被录下来

说究竟就是录制屏幕画面啦,仅仅只是格式是mp4的。

录制命令

视频格式为mp4,存放到手机sd卡里,默认录制时间为180s,可用ctrl + c结束录制。

adb shell screenrecord /sdcard/demo.mp4

指定录制时间

參数:–time-limit [秒数]。比如指定录制10S:

adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

指定分辨率

參数:–size [宽*高]。比如指定录制分辨率为720*1280:

adb shell screenrecord --size 720*1280 /sdcard/demo.mp4

指定比特率

參数:–bit-rate 比特率,为了发博客方便我们指定比特率为2Mbps:

adb shell screenrecord --bit-rate 2000000 /sdcard/demo.mp4

Log显示录制过程

參数:–verbose,比如:

adb shell screenrecord --verbose /sdcard/demo.mp4

使视频旋转90度

參数: –rotate,比如:

adb shell screenrecord --rotate/sdcard/demo.mp4

导出视频到电脑

这个命令大家应该常常常使用,后边的文件路径得是你刚才指定保存路径,会导出调用命令的文件夹下。比如:

adb pull /sdcard/demo.mp4

查看帮助

參数:–help,比如:

adb shell screenrecord --help

怎么把mp4转为gif

假设和MP4转为gif,这里有两个方法。

用ffmpge

假设你电脑配置了ffmpge就非常easy了,命令行一句话搞定:

ffmpeg -t -ss -i demo.gif

比方我们生成一个13S的图:

ffmpeg -t 13 -ss 00:00:00 -i demo.mp4 demo.gif

用工具转。这个更好用一点,推荐喔

我已经下载好放百度网盘了,先附上下载地址:http://pan.baidu.com/s/1mgVhuf2

软件执行截图:

选择视频文件指定開始转的位置,结束的位置,宽高,帧每秒/帧率等:

24beece43318f52dfd132f622c39c6d4.png

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

010320704c1520dac79e8016c192a7bb.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 10中,可以使用MediaProjectionManager类和MediaProjection类来实现屏幕制的功能。以下是制屏幕的基本代码示例: 1. 首先,在Manifest文件中添加录屏所需的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/> <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions" /> ``` 2. 在Activity中,定义以下变量: ```java private static final int REQUEST_CODE_SCREEN_CAPTURE = 1; private MediaProjectionManager mediaProjectionManager; private MediaProjection mediaProjection; private VirtualDisplay virtualDisplay; private MediaRecorder mediaRecorder; private int screenWidth; private int screenHeight; private int screenDensity; ``` 3. 在onCreate方法中,初始化变量并请求录屏权限: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE); DisplayMetrics metrics = getResources().getDisplayMetrics(); screenWidth = metrics.widthPixels; screenHeight = metrics.heightPixels; screenDensity = metrics.densityDpi; requestScreenCapturePermission(); } private void requestScreenCapturePermission() { startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), REQUEST_CODE_SCREEN_CAPTURE); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_SCREEN_CAPTURE && resultCode == RESULT_OK && data != null) { mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data); startRecording(); } } ``` 4. 开始制屏幕: ```java private void startRecording() { mediaRecorder = new MediaRecorder(); virtualDisplay = createVirtualDisplay(); mediaRecorder.start(); } private VirtualDisplay createVirtualDisplay() { return mediaProjection.createVirtualDisplay("ScreenCapture", screenWidth, screenHeight, screenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, mediaRecorder.getSurface(), null, null); } ``` 5. 停止制屏幕: ```java private void stopRecording() { mediaRecorder.stop(); mediaRecorder.reset(); virtualDisplay.release(); mediaProjection.stop(); } @Override protected void onDestroy() { super.onDestroy(); stopRecording(); } ``` 请注意,在使用完毕后,您需要调用mediaProjection.stop()来停止MediaProjection对象,并且对MediaRecorder和VirtualDisplay进行适当的释放。此外,对于像WRITE_EXTERNAL_STORAGE和RECORD_AUDIO这样的权限,您也需要在运行时动态请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值