⑴ android调用系统相机实现拍照和视频录制
(1)申请权限
(2)设置布局
这里做了一个简单的布局:添加了一个按钮和一个ImageView控件用于显示拍摄的图像。
(3)为按钮添加点击事件监听
点击按钮时,调用系统相机进行拍照,并在确定后将图像显示在ImageView控件中。
(1)申请权限
(2)设置布局
添加了一个按钮和一个VideoView控件用于显示录制的视频。
(3)为按钮添加点击事件监听
同前面一样,点击按钮后调用系统相机进行录制视频,录制完成后点击确定即可将录制的视频显示在VideoView控件中。
对于Android11.0的版本,在调用系统相近进行视频录制的时候,即使在AndroidMenifest.xml中申请了CAMERA权限,还是会在程序运行时报错: Permission Denial , . .... .... with revoked permission android.permission.CAMERA
解决方法是在程序中动态申请权限:
写在最后:文章是在学习过程中做的学习笔记,同时与志同道合者分享,文章内容均经过我自己实验证实可行,如有问题欢迎留言,很高兴一起交流讨论,共同进步!
⑵ ADB录制视频 Android 视频录制命令 screenrecord
在Android 4.4(Kitkat - API level 19)上集成了一个比较好用的视频(.mp4格式)录制功能 – screenrecord 。
使用方法
1. 基本用法
$ adb shell screenrecord /sdcard/myscreenrecord.mp4
/sdcard/myscreenrecord.mp4 为视频录制文件路径
录制默认分辨率,默认4Mbps,默认180s的视频,保存到sdcard上名为myscreenrecord.mp4
2. 旋转(参数:–rotate)
$ adb shell screenrecord --rotate /sdcard/myscreenrecord.mp4
旋转90度
3. 指定分辨率(参数:–size)
$adb shell screenrecord --size 112x112 /sdcard/myscreenrecord.mp4
分辨率为112x112,建议不要指定分辨率,使用默认分辨率效果最佳;
注意,分辨率不是完全可以随意定制的,比如在我手机上录制100x100的会提示错误:
The max width/height supported by codec is1920x1088
100x100is not supported by codec, suggest to set it as112x112
4. 指定比特率(参数:–bit-rate)
$adb shell screenrecord --bit -rate 8000000 /sdcard/myscreenrecord.mp4
设置比特率为8Mbps,比特率越大,文件越大,画面越清晰;
5. 限制录制时间 (参数: –time-limit)
$adb shell screenrecord --time -limit 10 /sdcard/myscreenrecord.mp4
限制视频录制时间为10s,如果不限制,默认180s
6. 导出视频
$adb pull /sdcard/myscreenrecord.mp4
7. 注意
请关注视频文件生成大小,根据自身情况而定;
暂不支持声音;
咱时不支持模拟器录制( 模拟器录制看这里 ),出现如下提示:Unable to get output buffers (err=-38)
Encoder failed (err=-38),可认为是此原因;
8. 命令查看
adb shell screenrecord --help
Usage: screenrecord [options]
Records the device's display to a .mp4 file.
Options:
--size WIDTHxHEIGHT
Set the video size, e.g."1280x720". Default is the device's main
display resolution (if supported), 1280x720if not. For best
results,use a size supported by the AVC encoder.
--bit -rate RATE
Set the video bit rate, in megabits per second. Default4Mbps.
--time -limit TIME
Set the maximum recording time, in seconds. Default / maximum is180.
--rotate
Rotate the output90 degrees.
--verbose
Display interesting information on stdout.
--help
Showthis message.
Recording continues until Ctrl-C is hit or the time limit is reached.
⑶ android开发设置屏蔽录制
项目开发中,为了用户信息的安全,会有禁止页面被截屏、录屏的需求。
这类资料,在网上有很多,一般都是通过设置Activity的Flag解决,如:
//禁止页面被截屏、录屏getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
这种设置可解决一般的防截屏、录屏的需求。
如果页面中有弹出Popupwindow,在录屏视频中的效果是:
非Popupwindow区域为黑色
但Popupwindow区域仍然是可以看到的
如下面两张Gif图所示:
未设置FLAG_SECURE,录屏的效果,如下图(git图片中间的水印忽略):
设置了FLAG_SECURE之后,录屏的效果,如下图(git图片中间的水印忽略):
⑷ 自家开发的AndroidApp里面自带的录像功能,录制的画面变形怎么解决
相机有自己支持的预览比例列表,是不是预览的view的宽高比和相机支持的比例不一样导致的?如果是的话不要固定那个view的大小,写成根据相机支持的preview大小自适应吧,然后多出来的部分给盖住。录出来的video也有支持的比例列表而且和preview的还不一样,自己设也可能会导致视频变形
⑸ 现在 做了个 android 视频录制的程序 ,后置摄像头总是旋转90度,如何用代码实现正常。
MediaRecorder 中一个方法setCamera();所以可以先设置好摄像头的参数,然后再设置到MediaRecorder 中(但是录制前需要解锁)。
部分关键的代码如果下:
//初始化相机信息
Camera mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
mCamera.setDisplayOrientation(90);//旋转了90度,最好先判断下JDK的版本号,再决定旋转不
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.unlock();//解锁
videoMediaRecorder.setCamera(mCamera);