Android中小视频录制,预览

工作中项目需求,在动态里面支持查看录制的小视频;录制视频主要用到Android中MediaRecorder这个类,在录制的过程中需要结合SurfaceView和Camera,Camera管理手机摄像头,SurfaceView负责将Camera捕捉到的图像渲染出来,MediaRecorder类则相当于这两者之间的枢纽,负责协调。

一、主要功能:

视频录制,可设置录制最大时长和最小时长,支持横屏竖屏录制,视频预览(录制出来的视频格式都是MP4格式。因为只是录制视频,所以对视频的后期处理都没有做,比如视频压缩,裁剪等等,这些可能都需要使用ffmpeg命令。个人感觉这个ffmpeg功能是强大,但是依赖包也挺大的,在我的项目中,拍摄出来的10s的视频大概16M的样子,就没压缩,只用到了裁剪,而裁剪我使用的是isoviewer-1.0-RC-27.jar这个jar包)

二、预览:视频录、预览、横屏录、预览

               


三、代码分析

1.视频录制的主要代码

 /*** 初始化* @throws IOException*/@SuppressLint("NewApi")private void initRecord() throws IOException {mMediaRecorder = new MediaRecorder();mMediaRecorder.reset();if (mCamera != null)mMediaRecorder.setCamera(mCamera);mMediaRecorder.setOnErrorListener(this);mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 视频源mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 音频源//注释掉的代码官方说这样的配置方法是Android2.2以下使用
//		mMediaRecorder.setOutputFormat(OutputFormat.MPEG_4);// 视频输出格式
//		mMediaRecorder.setAudioEncoder(AudioEncoder.AAC);// 音频格式:AAC兼容会高点
//      mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设置视频编码:h264在常见的网页上都可播放
//		mMediaRecorder.setVideoSize(mWidth, mHeight);// 设置分辨率:
//		mMediaRecorder.setVideoEncodingBitRate(1 * 1024 * 1024*100);// 设置帧频率//Android2.2以上直接用MediaRecorder.setProfile得到统一的配置mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_720P));mMediaRecorder.setOrientationHint(mRotationRecord);// 输出旋转90度,保持竖屏录制mMediaRecorder.setOutputFile(mRecordFile.getAbsolutePath());try {mMediaRecorder.prepare();mMediaRecorder.start();} catch (IllegalStateException e) {e.printStackTrace();} catch (RuntimeException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}

这里主要初始化录制参数,然后开始录制,注释掉的代码是2.2以前配置视频参数,在以后只需要setProfile(CamcorderProfile.get(CamcorderProfile))这个方法代替,这个会自动获取手机里面已经配置好的参数,而CamcorderProfile里面的几个参数,视情况而定,推荐 QUALITY_HIGH,直接获取手机里面支持的最高分辨率;setOrientationHint()设置视频的输出角度,这个可以控制录制出来的视频是否是横屏还是竖屏,等下说明;setOutputFile()录制的视频保存地址;


2.停止录制

/*** 停止录制*/public void stopRecord() {if (mMediaRecorder != null) {// 设置后不会崩mMediaRecorder.setOnErrorListener(null);mMediaRecorder.setPreviewDisplay(null);try {mMediaRecorder.stop();mMediaRecorder.release();} catch (IllegalStateException e) {e.printStackTrace();} catch (RuntimeException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}

3.监控手机横竖屏录制

//手机旋转监听OrientationEventListener orientationEventListener=new OrientationEventListener(this) {@Overridepublic void onOrientationChanged(int rotation) {//录制的过程不改变if(isRecording){return;}if (((rotation >= 0) && (rotation <= 30)) || (rotation >= 330)) {// 竖屏拍摄mRotationRecord=90;} else if (((rotation >= 230) && (rotation <= 310))) {// 横屏拍摄mRotationRecord=0;} else if (rotation > 30 && rotation < 95) {// 反横屏拍摄mRotationRecord=180;}}};orientationEventListener.enable();

这里使用到的是OrientatinEvenListener手机方向事件监听器,rotation表示手机旋转角度,垂直为0,顺时针角度逐渐增加;通过对rotation的监听可以知道当前手机是竖直,横屏,还是反横屏,从而改变mRotationRecord(就是设置视频输出角度的参数),


到此视频录制的代码也就这么多了,其中录制视频的圆形按钮可以看看我的另一片博客,视频预览的代码我没有贴出,下面直接给出源码,可能很多做的不是很到,更多的是供新手参考,录制视频该怎么做,以及视频该怎么做


下载地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143220.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何下载网页上的视频

方法一&#xff1a;使用 Firefox浏览器中Video DownloadHelper扩展 下载知乎视频 方法二&#xff1a;使用 https://xbeibeix.com/api/bilibili/ 下载B站biliili的视频 1&#xff0c;使用GitHub项目you-get&#xff0c;中文解释 cd 需要下载的目录为止&#xff08;下载的文件在…

html实现视频录制,保存和回放

录制和保存视频&#xff0c;通过三个按钮配合完成。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body ><div style"width: 80%; margin: 0 au…

视频录制软件哪个好,推荐几款简单实用的视频课件录制软件

日常生活中&#xff0c;我们有时候会因为工作或学习的原因&#xff0c;会使用到一些视频录制软件&#xff0c;通过视频录制软件&#xff0c;我们可以记录一些错过的细节&#xff0c;提高学习或工作效率。当然&#xff0c;现在网上的视频录制软件那么多&#xff0c;到底视频录制…

视频录制工具OBS选择区域录制

视频录制工具OBS录制时默认是对整个屏幕区域进行录制的&#xff0c;如果我们想只是录取某一屏幕区域&#xff0c;就需要进行一些修改。 相关的修改步骤如下&#xff1a; &#xff08;1&#xff09;新建一个“显示器采集”。 在弹出的对话框中&#xff0c;指定名字。 接着&…

基于Camera2和MediaRecorder实现视频录制

一、概述 视频录制&#xff0c;在一般开发中很少遇到&#xff0c;大部分开发工作都是写写页面&#xff0c;请求接口&#xff0c;展示数据等等。真要遇到&#xff0c;可能采用第三方库实现&#xff0c;一来实现快速&#xff0c;二来可能觉得别人实现的比较好。特别是在开发周期…

html 手机录视频,手机怎么录制视频 怎么用手机录视频?

问&#xff1a;手机怎么录制视频 怎么用手机录视频&#xff1f; 答&#xff1a;这里要分两种情况&#xff0c;一、安卓手机录视频&#xff0c;二、苹果手机录视频。其实录制视频是最简单的事了&#xff0c;下载一个好用的视频录制软件就可以搞定了&#xff0c;现在的视频录制软…

Hololens录制视频

说明&#xff1a; 最近老有兄弟伙在问&#xff0c;如何录制视频&#xff0c;讲道理的话这些东西Hololens官网上面都有详细的说明&#xff0c;不需要过于累赘说明&#xff1b;这里还是简要的讲讲如何录制&#xff0c;对Hololens新朋友们一点说明. 这里只对录制视频的步骤做简要说…

腾讯会议录制视频下载

背景解决方法 默认播放页面下全屏播放页面下 小总结 背景 最近在腾讯会议上参加了一场培训&#xff0c;我觉得特别棒&#xff0c;里面干货很多。老师使用了腾讯会议的云录制功能&#xff0c;然后把录制好的视频链接发给了我们。 如此优秀的培训课程&#xff0c;我想自己下载…

html5视频页面的源码,html5 网页录制视频示例源码

【实例简介】该示例必须在 https环境下运行,否则会遇到意想不到的问题 【实例截图】 【核心代码】MeidaRecorder *{box-sizing: border-box; margin: 0; padding: 0; font-family:monospace; } html,body{height: 100%; } html{-webkit-font-smoothing: antialiased; -moz-osx…

前端 视频录制剖析

前端 视频录制剖析 作者&#xff1a; 很菜的小白在分享 时间&#xff1a;2021年12月7日 音视频三部曲 前端 音频录制剖析 前端 视频录制剖析 前端 桌面共享剖析 介绍 身为一个优秀的前端 coder 我们可能会遇到各种各样的需求&#xff0c;昨天我接到了一个新的需求&#xff0…

python实现屏幕视频录制_用Python来做一个屏幕录制工具

一、写在前面 作为一名测试,有时候经常会遇到需要录屏记录自己操作,方便后续开发同学定位。以前都是用screentogif来录屏制作成动态图,偶尔的机会看到python也能实现。那就赶紧学习下。 二、效果展示 三、知识串讲 这次要讲的东西可能比较多了,涉及到pyqt5 gui软件的制作、…

ffmpeg视频录制

录制视频的基本步骤是&#xff1a; 1. 初始化ffmpeg的基本对象&#xff0c;并将这些对象关联起来&#xff0c;然后打开文件并写入文件头。 2. 编码视频&#xff0c;并将编码后数据存写到文件中。 3. 写入文件尾&#xff0c;并清理ffmpeg对象。 首先&#xff0c;需要初始化f…

html 视频录制插件,网页视频录制插件工具(浏览器插件 Recorder)

网页视频录制插件工具(浏览器插件 Recorder)Loom Video Recorder是一款视频录制工具扩展插件&#xff0c;可以一键录制浏览器的单个标签页,&#xff0c;也支持摄像头录制&#xff0c;能够将录制的视频内容下载道本地&#xff0c;有需要的用户不要错过了&#xff0c;欢迎下载使用…

如何录制一个高品质的网页直播视频,录制在线直播视频的快速教程

怎么录制网页上的直播视频&#xff1f;怎么录制网页上正在播放的视频&#xff1f;怎么把别人在线直播的视频快速录制下来&#xff1f; 今天就教大家用超级捕快来快速录制一个高品质的网页直播视频&#xff0c;高清无损&#xff0c;没有水印。不仅能录制在线直播视频&#xff0…

浏览器怎么录制网页视频?3种网页视频录制方法

我们每天都会在浏览器上观看大量的视频&#xff0c;尤其是在爱奇艺、腾讯、哔哩哔哩等网页上。有时候就会观看到一些精彩的视频画面&#xff0c;就想要将这些画面给下载。 那怎么把网页视频录制下来&#xff1f;今天本文就给大家分享3种有效的网页视频录制方法&#xff0c;有需…

k8s进阶5——AppArmor、Seccomp、ImagePolicyWebhook

文章目录 一、AppArmor限制容器对资源访问1.1 实现步骤1.1.1 定义策略1.1.2 加载策略1.1.3 引用策略 2.2 案例 二、Seccomp 限制容器进程系统调用案例一&#xff1a;使用自定义策略案例二&#xff1a;使用容器运行时默认策略 三、动态准入控制Webhook3.1 ImagePolicyWebhook控制…

数组如何转对象

最近做项目的时候需要把拿到的数组转为对象使用 let arr [{id:1,value:正式},{id:2,value:非正式}]//首先定义一个空对象let obj{}//循环遍历数组arr.forEach(item>{//把id作为对象的键 把value作为对象的值值obj[item.id]item.value})console.log(obj);运行结果如下 这样…

对象转为数组

对象转成数组 在开发中&#xff0c;前端处理数据&#xff0c;很多时候都会用到把对象转成数组&#xff0c;话不多说&#xff0c;咱们直接上代码 // 对象转数组&#xff0c;想要转成什么字段根据需求 function fmObjToArr (data) {let arr []for (let key in data) {arr.push…

js数组对象转对象

将数组对象的数据转换为普通对象键值对key:value的形式 let arr [{id:1,employeeNo:110,name:张三},{id:2,employeeNo:111,name:李四},{id:3,employeeNo:112,name:王五},{id:4,employeeNo:113,name:章雨},{id:5,employeeNo:114,name:小红}, ] let newObj {} arr.map(item >…

JS对象转数组

一、JS对象转数组方法如下(不考虑for相关遍历): 1.[...res] 2.Array.from(res) 3.Object.values(res) 4. Array.prototype.slice.call(res) let obj {name:李四, age:22, gender:男} //可枚举 let obj2 {0:李四, 1:22, 2:男, length:3} //可枚举 伪数组 let set new Set([…