android 录屏 sdk,浅析Android录屏 MediaRecorder

本文介绍了Android录屏的三种方案:screenrecord命令、MediaRecorder和MediaCodec+MediaMuxer,重点讲解了MediaRecorder的使用流程,包括如何启动、停止录屏,并提供了简单的代码示例。此外,还提到了MediaProjectionManager在录屏过程中的作用。
摘要由CSDN通过智能技术生成

MediaRecorder类介绍:

MediaRecorder类是Android sdk提供的一个专门用于音视频录制,一般利用手机麦克风采集音频,摄像头采集图片信息。

Android录屏的三种方案

1、adb shell命令screenrecord

2、MediaRecorder, MediaProjection

3、MediaCodec和MediaMuxer, MediaProjection ,

一、screenrecord命令

screenrecord是一个shell命令,支持Android4.4(API level 19)以上,

录制的视频格式为mp4 ,存放到手机sd卡里,默认录制时间为180s

adb shell screenrecord --size 1280x720 --bit-rate 6000000 --time-limit 30 /sdcard/demo.mp4

--size 指定视频分辨率,根据手机情况决定

--bit-rate 指定视频比特率,默认为4M,该值越小,保存的视频文件越小;

--time-limit 指定录制时长,若设定大于180,命令不会被执行;

并不是所以手机都执行screenrecord命令,部分手机不识别。

我在几款华为手机就没执行成功报错:

/system/bin/sh: screenrecord: inaccessible or not found

二、 MediaRecorder

MediaProjection是Android5.0后才开放的屏幕采集接口,通过系统级服务MediaProjectionManager进行管理。

这里先整体说一下屏幕录制的流程,不然看起来费劲。

1、通过startActivityForResult(Intent intent)判断是否录屏授权的Activity

其中intent对象就需要MediaProjectionManager.createScreenCaptureIntent();获取

2、在onActivityResult回调方法中做具体录屏工作

比如:创建MediaRecorder,设置MP4文件路径

创建VirtualDisplay,设置屏幕相关参数

如果不在onActivityResult回调中执行会有问题。

3、开始录屏

MediaRecorder.start()

4、停止录屏

MediaRecorder.reset();

MediaRecorder.release();

录屏过程用到录音权限和数据读写权限。

三、MediaCodec和MediaMuxer

MediaCodec提供对音视频压缩编码和解码功能,MediaMuxer可以将音视频混合生成多媒体文件,生成MP4文件。

这个录屏的方式和MediaRecorder是类似的,只是流程第二部有点不同,这里不做介绍。

四、MediaRecorder项目示例的主要代码

这里只做了录制和停止录制,没有做相关适配,比如横竖屏切换后尺寸变化。

简单效果:

d558b1426f418b45cfcb1fdd77878dc7.gif

生成的MP4文件会在sdcard目录下,并且以录屏时间为文件名。

1、MainActivity

package com.liwenzhi.screen;

import android.Manifest;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.media.projection.MediaProjection;

import android.media.projection.MediaProjectionManager;

import android.os.Handler;

import android.os.Message;

import android.support.v4.app.ActivityCompat;

import android.support.v4.content.ContextCompat;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

import java.io.File;

p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值