parent
426b478fe1
commit
2cc9949570
@ -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…
Reference in new issue