android屏幕录制

Android低版本需要实现屏幕录制,据我目前了解到的,都是需要获取Root权限才行。
本文介绍的屏幕录制是居于Android5.0及之后Android API实现的屏幕录制,以及录制后编码成h264格式保存到文件。屏幕采集主要使用类MediaProjection 和 MediaProjectionManager。数据编码使用类mediacodec

一、录屏步骤
1、获取MediaProjectionManager(getSystemService(MEDIA_PROJECTION_SERVICE))

2、录屏申请(createScreenCaptureIntent)
    Intent intent = mediaProjectionManager.createScreenCaptureIntent();
    startActivityForResult(intent, REQUEST_CODE);

3、申请同意后,获取到mediaProjection(ProjectionManager.getMediaProjection)

4、创建VirtualDisplay(createVirtualDisplay),输入参数surface,宽高、分辨率等
   创建VirtualDisplay需要传入surface,所以创建VirtualDisplay前,先初始化并配置编码器mediacodec,从mediacodec获取到surface,参考Encoder

5、如果想实现截一张图保存下来,创建VirtualDisplay时也是传入surface(一般是通过ImageReader获取到surface)

通过步骤5实现屏幕保存bitmap到文件(demo 里的CaptureImageActivity.java)

通过步骤4实现屏幕录制,配合mediacodec实现h264编码,编码保存到文件,文件可以通过ffmpeg播放、查看属性等 (录屏、编码参考demo EncodeActivity.java及Encoder.java)

二、mediacodec实现视频数据编码(h264格式介绍​​​​​​​)

1、在VirtualDisplay前创建mediacodec初始化(createEncoderByType),通过configure把编码参数配置好(MediaFormat)

2、通过VirtualDisplay创建后,循环mCodec.dequeueOutputBuffer获取编码器buffer输出index,index可以判断出buffer类型(sps、pps、图像帧),把数据保存到文件里。保存的文件可以使用vlc或者ffmpeg播放验证

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值