實現效果以下

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_video" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.p_.VideoActivity"><SurfaceView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/sfv_miand" /><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="開始錄制" android:onClick="start" /><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止錄制" android:layout_marginLeft="260dp" android:onClick="stop" /></RelativeLayout>二:使用MediaRecorder類進行視頻的錄制
1.實例化媒體錄制器
MediaRecorder=mediaRecorder = new MediaRecorder();2.重置
mediaRecorder.reset();3.設置視頻和音頻的來源
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);4.設置保存的格式(mp4格式)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);5.設置編碼格式
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);6.設置保存的路徑
mediaRecorder.setOutputFile("mnt/sdcard/lx"+System.currentTimeMillis()+".mp4");7.將畫面展示到SurfaceView
mediaRecorder.setPReviewDisplay(sfv_miand.getHolder().getSurface());8.準備
try { mediaRecorder.prepare(); mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); }9.停止錄制
mediaRecorder.stop(); mediaRecorder.reset();三:權限
權限一:獲取寫文件權限;
權限二:獲取音頻權限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.RECORD_AUDIO"/>四:java文件具體代碼
package com.example.p_;import android.media.MediaRecorder;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.SurfaceView;import android.view.View;import java.io.IOException;public class VideoActivity extends AppCompatActivity { private MediaRecorder mediaRecorder; private SurfaceView sfv_miand; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video); //獲取 sfv_miand = (SurfaceView) findViewById(R.id.sfv_miand); //實例化媒體錄制器 mediaRecorder = new MediaRecorder(); } //開始錄制 public void start(View view){ //重置 mediaRecorder.reset(); //設置視頻和音頻的來源 mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //設置保存的格式 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //設置編碼格式 mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setVideoFrameRate(3); //設置保存的路徑 mediaRecorder.setOutputFile("mnt/sdcard/lx"+System.currentTimeMillis()+".mp4"); //將畫面展示到SurfaceView mediaRecorder.setPreviewDisplay(sfv_miand.getHolder().getSurface()); //準備 try { mediaRecorder.prepare(); mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } } //停止錄制 public void stop(View view){ mediaRecorder.stop(); mediaRecorder.reset(); }}記住步驟,想一下怎么實現,不要記住死代碼。
新聞熱點
疑難解答