Feature: add MediaRecordController

pull/209/head
xufuji456 3 years ago
parent 426b478fe1
commit 2cc9949570
  1. 71
      AndroidMedia/src/main/java/com/frank/androidmedia/controller/MediaRecordController.kt

@ -0,0 +1,71 @@
package com.frank.androidmedia.controller
import android.hardware.Camera
import android.media.CamcorderProfile
import android.media.MediaRecorder
import android.util.Log
import android.view.Surface
/**
* Using MediaRecorder to record a media file.
*
* @author frank
* @date 2022/3/21
*/
open class MediaRecordController {
private var mCamera: Camera? = null
private var mMediaRecorder: MediaRecorder? = null
private fun initMediaRecord(surface: Surface, outputPath: String) {
// open camera
mCamera = Camera.open()
mCamera!!.setDisplayOrientation(90)
mCamera!!.unlock()
// Note: pay attention to calling order
mMediaRecorder?.setCamera(mCamera)
mMediaRecorder?.setAudioSource(MediaRecorder.AudioSource.MIC)
mMediaRecorder?.setVideoSource(MediaRecorder.VideoSource.CAMERA)
mMediaRecorder?.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
mMediaRecorder?.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
mMediaRecorder?.setVideoEncoder(MediaRecorder.VideoEncoder.H264)
mMediaRecorder?.setOutputFile(outputPath)
mMediaRecorder?.setPreviewDisplay(surface)
}
fun startRecord(surface: Surface, outputPath: String) {
if (mMediaRecorder == null) {
mMediaRecorder = MediaRecorder()
}
initMediaRecord(surface, outputPath)
try {
mMediaRecorder?.prepare()
mMediaRecorder?.start()
} catch (e: Exception) {
Log.e("MediaRecorder", "start recorder error=$e")
}
Log.i("MediaRecorder", "startRecord...")
}
fun stopRecord() {
if (mMediaRecorder != null) {
mMediaRecorder?.stop()
mMediaRecorder?.reset()
}
mCamera?.stopPreview()
Log.i("MediaRecorder", "stopRecord...")
}
fun release() {
if (mMediaRecorder != null) {
mMediaRecorder?.release()
mMediaRecorder = null
}
if (mCamera != null) {
mCamera!!.release()
mCamera!!.lock()
}
}
}
Loading…
Cancel
Save