mediaRecorder录制视频与播放
1、添加权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
2、动态添加权限
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO},100);
3、创建一个MediaRecorderActivity,使用Intent连接MainActivity和MediaRecorderActivity
4、创建 MediaRecorder ()源码即步骤:
(1)、创建recorder对象:new MediaRecorder()
(2)、设置录制视频的方向:setCamera(camera);其中camera为
Camera camera = Camera.open();
camera.setDisplayOrientation( );
camera.unlock();
(3)、设置音频的采集方式:setAudioSource();设置视频的采集方式:setVideoSource()
(4)、设置视频的输出格式:setOutputFormat()
(5)、设置音频的编码格式:setAudioEncoder();设置视频的编码格式:setVideoEncoder()
(6)、设置视频播放的方向:setOrientationHint()
(7)、设置输出文件的位置:setOutputFile()
(8)、设置输出视频的大小:setVideoSize()
(9)、设置视频的帧率:setVideoFrameRate()
(10)、设置视频预览:setPreviewDisplay()
(11)、准备录制:prepare()
(12)、开始录制:start()
(13)、结束录制:stop()
(14)、释放recorder对象:release()
(15)、关闭与释放camera:stopPreview(),release()
完整代码:
mainActivity
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//android 6.0以上需要进行动态权限申请ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO},100);}public void record(View view) {Intent intent = new Intent(this, MediaRecoderActivity.class);startActivity(intent);}
}
MediaRecorderActivity
public class MediaRecoderActivity extends AppCompatActivity implements View.OnClickListener {private Button button;private MediaRecorder mediaRecorder;private SurfaceView surfaceView;private Camera camera;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_media_recoder);surfaceView = findViewById(R.id.surface);button = findViewById(R.id.button);button.setOnClickListener(this);}@Overridepublic void onClick(View view) {String s = button.getText().toString();if(s.equals("开始")){button.setText("结束");mediaRecorder = new MediaRecorder();camera = Camera.open();camera.setDisplayOrientation(90);//将摄像头预览的角度进行调整camera.unlock();mediaRecorder.setCamera(camera);mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置音频源mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//设置视频源mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//设置视频输出格式mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);//设置音频编码格式mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设置视频编码格式mediaRecorder.setOrientationHint(90);//设置视频播放的方向mediaRecorder.setOutputFile(new File(getExternalFilesDir(""),"a.mp4").getAbsolutePath());//设置存储路径mediaRecorder.setVideoSize(640,480);//大小mediaRecorder.setVideoFrameRate(30);//帧率mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());//设置预览界面try {mediaRecorder.prepare();//准备录制} catch (IOException e) {e.printStackTrace();}mediaRecorder.start();//开始录制}else{button.setText("开始");mediaRecorder.stop();//结束录制mediaRecorder.release();//释放camera.stopPreview();//关闭摄像头camera.release();//释放}}}
布局
activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="录制视频"android:onClick="record"android:layout_gravity="center"android:layout_marginTop="100dp"/></LinearLayout>
activity_media_recorder
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MediaRecoderActivity"><SurfaceViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/surface"/><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开始"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
mediaRecorder录制视频与播放相关推荐
- 前端 mediaRecorder 录制视频源代码实例,和本地播放器无法定位进度条问题分析和解决
问题 mediaRecorder 本质上录制的是webm 当我们使用getUserMedia.MediaRecorder等API生成的webm视频时,会发现最终的webm是无法拖动进度条的 解决方案 ...
- Android音视频之MediaRecorder录制视频
1 MediaRecorder 录制视频步骤 这篇文章介绍了Android录音MediaRecorder使用和SoundPool的使用 主要讲解了音频的录制和播放,这篇AudioRecord和Audi ...
- 机试题:地图定位、拍照并显示、录制视频并播放
这两天参加面试,有个公司先出了机试题,然后才能进入下一步,机试题大意是要求实现:地图定位.拍照并显示照片.录制视频并且播放视频三个小功能. 先上我的效果图: 1.地图定位关键代码(ios8后,开启地图 ...
- 使用MediaRecorder录制视频短片
MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...
- Android多媒体四:MediaRecorder录制视频短片
Android多媒体四:MediaRecorder录制视频短片 MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同. 只 ...
- MediaRecorder录制视频时计算文件大小
MediaRecorder录制视频时通过音频编码率和视频编码率计算文件大小或时间 计算公式:(音频编码率(单位k)+视频编码率(单位k))/8*时间(秒) = 文件大小(kb) 例: mediaRec ...
- Android MediaRecorder录制视频详细步骤
使用MediaRecorder能够编写从设备麦克风与相机捕获音视频,保存音频并(使用MediaPlayer)进行播放的应用. 1.添加权限: <uses-permission android:n ...
- 利用MediaRecorder录制视频切片上传到ftp服务器
文章目录 1.前言 2.思路 思路一 思路二 1.前言 之前项目中用Canvas+H5合并流实现录屏功能,但是因为视频流是一直保存到内存中,当你的合成的视频流越来越来,那么导致内存消耗越大(后面浏览器 ...
- Android 仿微信长按录制视频并播放的功能
一.点击按钮进行录制 首先要获取摄像拍照的权限和读取权限 <uses-permission android:name="android.permission.CAMERA" ...
最新文章
- Windows10看视频出现蓝屏重启
- 太强了!Kaggle竞赛宝典方案汇总
- Model Explorer中变量Scope属性的意义
- 另一种办法直接在宿主机上的文件夹内查看Docker镜像运行的日志文件
- winform能连MySQL吗_c# winform中怎么连接mysql
- 从委托而起(二)认识委托
- 浅谈Fluent Ribbon 中的SplitButton
- C 语言实例 -求分数数列1/2+2/3+3/5+5/8+...的前n项和
- ImageView显示图像控件
- 荣之联:生物云仅仅是开始
- Novel-Ai本地部署教程
- cisco、华为交换机常用配置对照表
- 微信小程序 一键授权 给第三方平台代开发管理(一,创建第三方平台)
- 纯前端实现—点一个小圆圈变四个动画效果
- 城市智慧水务供水测试床在工业互联网上发布
- [.NET源码] asp.net中手机版和PC版识别
- 域名的DA值和PA值用什么工具查询?
- ZOJ 2975-K - Kinds of Fuwas-暴力+bitset
- 985大学计算机专业起薪,985名校毕业生有多值钱?看完这份大学毕业生薪酬榜你就知道了...
- iphone连接linux系统电脑,为什么iphone连不上电脑 多种解决方法【图文教程】