
我尝试一次录制2种不同分辨率的视频.
有时一切顺利,有时应用程序似乎陷入2 MediaRecorders的stop()方法.有人可以查看我的代码,我做错了吗?
package com.example.androID.vIDeorecording;import androID.app.Activity;import androID.app.AlertDialog;import androID.content.Intent;import androID.harDWare.camera2.params.StreamConfigurationMap;import androID.media.MediaCodec;import androID.media.MediaRecorder;import androID.os.Bundle;import androID.harDWare.camera2.*;import androID.os.Environment;import androID.util.Size;import androID.vIEw.Surface;import androID.vIEw.VIEw;import androID.Widget.button;import java.io.file;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { CameraDevice mCamera; MediaRecorder mMediaRecorderLow = new MediaRecorder(); MediaRecorder mMediaRecorderHigh = new MediaRecorder(); CaptureRequest mCaptureRequest; CameraCaptureSession mSession; boolean recording = false; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); CameraManager manager = (CameraManager) getSystemService(CAMERA_SERVICE); file dir = new file(Environment.getExternalStorageDirectory().getabsolutePath(),"Test"); if(!dir.exists()) { boolean s = dir.mkdirs(); if(!s) { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setMessage("Could not create dir"); alert.show(); } } final file outputfileLow = new file(dir.getabsolutePath(),"testLow.mp4"); final file outputfileHigh = new file(dir.getabsolutePath(),"testHigh.mp4"); try { outputfileLow.createNewfile(); String[] cameras = manager.getCameraIDList(); Cameracharacteristics characteristics = manager.getCameracharacteristics(cameras[0]); StreamConfigurationMap configs = characteristics.get( Cameracharacteristics.SCALER_STREAM_CONfigURATION_MAP); Size[] sizes = configs.getoutputSizes(MediaCodec.class); final Size sizeLow = sizes[5]; final Size sizeHigh = sizes[0]; manager.openCamera(cameras[0],new CameraDevice.StateCallback() { @OverrIDe public voID onopened(CameraDevice camera) { mCamera = camera; mMediaRecorderLow.setVIDeoSource(MediaRecorder.VIDeoSource.SURFACE); mMediaRecorderLow.setoutputFormat(MediaRecorder.OutputFormat.MPEG_4); mMediaRecorderLow.setVIDeoEncoder(MediaRecorder.VIDeoEncoder.MPEG_4_SP); mMediaRecorderLow.setVIDeoSize(sizeLow.getWIDth(),sizeLow.getHeight()); mMediaRecorderLow.setMaxfileSize(0); mMediaRecorderLow.setorIEntationHint(0); mMediaRecorderHigh.setVIDeoSource(MediaRecorder.VIDeoSource.SURFACE); mMediaRecorderHigh.setoutputFormat(MediaRecorder.OutputFormat.MPEG_4); mMediaRecorderHigh.setVIDeoEncoder(MediaRecorder.VIDeoEncoder.MPEG_4_SP); mMediaRecorderHigh.setVIDeoSize(sizeHigh.getWIDth(),sizeHigh.getHeight()); mMediaRecorderHigh.setMaxfileSize(0); mMediaRecorderLow.setorIEntationHint(0); try { mMediaRecorderLow.setoutputfile(outputfileLow.getabsolutePath()); mMediaRecorderHigh.setoutputfile(outputfileHigh.getabsolutePath()); mMediaRecorderLow.prepare(); mMediaRecorderHigh.prepare(); List最佳答案您还需要在停止后释放MediaRecorder.名称为低设置.请在Trigger方法的其他部分中尝试以下代码. mMediaRecorderHigh.stop(); mMediaRecorderHigh.reset(); mMediaRecorderHigh.release(); mCamera.release(); mMediaRecorderHigh= null; 总结 以上是内存溢出为你收集整理的android – 使用camera2和MediaRecorder捕获视频全部内容,希望文章能够帮你解决android – 使用camera2和MediaRecorder捕获视频所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)