使用MediaRecorder能够编写从设备麦克风与相机捕获音视频,保存音频并(使用MediaPlayer)进行播放的应用。

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布局文件activity_main.xml

<?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=".MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="录制视频"android:onClick="record"app:layout_constraintBottom_toTopOf="@+id/button2"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

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);}/*** 录制视频* @param view*/public void record(View view) {//跳转到MediaRecorderActivity完成录制视频startActivity(new Intent(this, MediaRecorderActivity.class));}
}

MediaRecorderActivity.java布局文件activity_media_recorder.xml

<?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=".MediaRecorderActivity"><!--显示当前预览的界面(录屏使用)--><SurfaceViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/surface"/><!--开始/结束录屏按钮--><Buttonandroid:id="@+id/btn_opt"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>

MediaRecorderActivity.java

package com.example.mediademo;
import androidx.appcompat.app.AppCompatActivity;
import android.hardware.Camera;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import java.io.File;
import java.io.IOException;public class MediaRecorderActivity extends AppCompatActivity implements View.OnClickListener {private Button button;private SurfaceView surfaceView;private MediaRecorder mediaRecorder;private Camera camera; //摄像头的一些配置@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_media_recorder);//当前手机预览的页面surfaceView = findViewById(R.id.surface);//开始或结束按钮button = findViewById(R.id.btn_opt);//按钮点击事件button.setOnClickListener(this);}@Overridepublic void onClick(View view) {//获取按钮文本内容String s = button.getText().toString();if(s.equals("开始")){//点击了开始则设置按钮文本值为结束button.setText("结束");/*** 开始录制*///1.创建recorder对象mediaRecorder = new MediaRecorder();//2.设置录制视频的方向camera = Camera.open();//摄像头对象camera.setDisplayOrientation(90);//将摄像头预览的角度进行调整camera.unlock();mediaRecorder.setCamera(camera);//3.设置音频源(MIC:麦克风采集音频)mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//4.设置视频源(CAMERA:摄像头采集视频)mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//5.设置视频输出格式(MP4)mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//6.设置音频编码格式mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);//7.设置视频编码格式mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//8.设置视频播放的方向mediaRecorder.setOrientationHint(90);//9.设置输出文件的位置mediaRecorder.setOutputFile(new File(getExternalFilesDir(""),"a.mp4").getAbsolutePath());//10.设置输出视频的大小mediaRecorder.setVideoSize(640,480);//11.设置视频的帧率mediaRecorder.setVideoFrameRate(30);//12.设置预览界面(设置一个Surface,也就是预览的页面,然后交给)mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());try {//13.准备录制mediaRecorder.prepare();} catch (IOException e) {e.printStackTrace();}//14.开始录制mediaRecorder.start();}else{//点击了结束则设置按钮文本值为开始button.setText("开始");//1.结束录制mediaRecorder.stop();//2.释放recorder对象mediaRecorder.release();//3.关闭摄像头camera.stopPreview();//4.释放camera.release();}}
}

建议使用真机测试

Android MediaRecorder录制视频详细步骤相关推荐

  1. Android MediaRecorder录制视频音量小问题解决 (音视频转码合成)

    之前写得太乱,回头看看感觉自己都有点看不懂,重新写下. 在android上需要做一个录像留言功能,需要生成MP4或者waw格式视频.但是使用MediaRecorder录制出的MP4视频格式音量太小,几 ...

  2. Android MediaPlayer播放视频详细步骤

    MediaPlayer类是媒体框架最重要的组成部分之一,此类的对象能够获取,解码以及播放音频和视频,而且只需极少量设置,它支持多种不同的媒体源,例如: 本地资源 内部Url,例如您可能从内容解析器获取 ...

  3. Android MediaRecorder录制视频提示start failed的解决办法

    转自https://blog.csdn.net/w815878564/article/details/49247411 今天测试MediaRecorder录制功能的时候出现一个蛋疼的BUG,按照官方提 ...

  4. Android多媒体四:MediaRecorder录制视频短片

    Android多媒体四:MediaRecorder录制视频短片 MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同. 只 ...

  5. Android音视频之MediaRecorder录制视频

    1 MediaRecorder 录制视频步骤 这篇文章介绍了Android录音MediaRecorder使用和SoundPool的使用 主要讲解了音频的录制和播放,这篇AudioRecord和Audi ...

  6. android 横屏录制视频,MediaRecorder怎么在竖屏的时候录像结果是横屏录的结果

    public class VideoActivity extends Activity implements SurfaceHolder.Callback { private Button start ...

  7. 使用MediaRecorder录制视频短片

    MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...

  8. mediaRecorder录制视频与播放

    1.添加权限 <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-p ...

  9. 怎么锁定电脑屏幕_怎么录制视频?在电脑上录制视频的步骤详解

    原标题:怎么录制视频?在电脑上录制视频的步骤详解 作为重要的办公工具之一,电脑可不只是用来发发文件.看看文档,有时候我们还会对它进行录屏.特别是在短视频自媒体行业中,学会.掌握电脑录屏是基础技能,很多 ...

最新文章

  1. 中​文​字​号​、​磅​和​像​素​对​照​关​系
  2. linux的编程命令,linux编程常用命令
  3. Uncaught ReferenceError: layer is not defined
  4. 商业周刊评出08年增长最快的美国科技公司
  5. LeetCode119.杨辉三角II
  6. 实现主从关系Form中汇总行金额/数量
  7. indexof java_java indexOf()简单字符查找实例
  8. 物理渲染-基于物理的光照模型
  9. html中滤镜的效果图,CSS滤镜之Mask属性-网页设计,HTML/CSS
  10. 【Java】Java 8 新特性-----Lambda 表达式
  11. 【剑指 offer】(十)—— 二进制形式 1 的个数
  12. java判断简体和繁体字_java获取系统语言(区分简体中文和繁体中文)
  13. Wap模拟器,pc端浏览器,手机wap网站,web项目
  14. 群辉linux系统,[教程] 群晖VMM虚拟机安装Linux系统无法成功启动桌面的解决办法...
  15. 谷歌浏览器报错-应用程序正常初始化(0xc0000005)
  16. 调用新浪网址缩短服务生成网址短链接
  17. excel怎么把竖排变成横排_排版丑怎么办?5个方法拯救你
  18. res.data, res.data.data, res.data.data.rows的含义
  19. ubuntu快捷复制粘贴
  20. centos 安装、配置metis

热门文章

  1. 读《男子为让孩子成为北京人执意找京籍女结婚(图)》有感——致北漂的XDJM
  2. csv、txt和tsv数据文件的异同点,以及如何使用Python读取和生成
  3. 呸!都TM开始打广告了,垃圾!
  4. 如何用 Python 爬取需要登录的网站?
  5. oracle10g笔记1
  6. 心情不好 多吃香蕉或葡萄
  7. android wifi 流程图_实现双wifi的方法及Android终端与流程
  8. 剑指offer T51数组中的逆序对
  9. ubuntu安装ActiveMQ
  10. 模拟电话交换机和IPPBX之间进行连接