android– 使用camera2和MediaRecorder捕获视频

android– 使用camera2和MediaRecorder捕获视频,第1张

概述我尝试一次录制2种不同分辨率的视频.有时一切顺利,有时应用程序似乎陷入2 MediaRecorders的stop()方法.有人可以查看我的代码,我做错了吗?package com.example.android.videorecording; import android.app.Activity; import android.app.AlertDial

我尝试一次录制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捕获视频所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1139221.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)