android - 如何使用 MediaRecorder 在 Android 上捕获视频?

标签 android user-permissions mediarecorder

我想使用 MediaRecorder 制作一个短视频剪辑,但我不知道如何使用它。

在我的 list 文件中,我在 application-end-tag 之前添加了这些权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_VIDEO" />
</application>

当用户按下按钮时,我用这段代码创建了一个 MediaRecorder:

    private void startRecording() {
    mRecorder = new MediaRecorder();
    mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setOutputFile("myvideo.mpeg4");

    try {
        mRecorder.prepare();
    } catch (IOException e) {

    }
    mRecorder.start();
}

但是当我运行该代码时,我收到一条消息“强制关闭 - 应用程序意外停止。请重试”。我应该如何使用 MediaRecorder 以及如何调试我的应用程序以查看导致异常的原因?我是否需要向我的 list 文件添加任何其他用户权限?

最佳答案

首先在 list 文件中声明权限...

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.Camera"/>

然后在您的主应用程序代码中...

Camera cam = Camera.open();
cam.unlock();

if(recorder == null) { recorder=new MediaRecorder(); }

recorder.setCamera(camera);
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
recorder.setOutputFile(fileName);
recorder.setPreviewDisplay(holder.getSurface());

try{ recorder.prepare(); recorder.start(); } 
catch( IOException e ) { e.printStackTrace(); }

关于android - 如何使用 MediaRecorder 在 Android 上捕获视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037755/

相关文章:

android - 如何在不移动 X、Y 位置的情况下缩放 View ?

android - 无法使用 Android 版 Facebook sdk 登录其他用户

google-chrome - 如何使用 chrome.tabCapture.capture 生成无损视频文件?

android - using 和有什么不一样?和@作为样式限定符?

liferay - 在 Liferay 7 中,如何将用户角色配置为不继承 guest 权限?

javascript - Meteor请求权限

django - 用于服务媒体的用户权限 Django

Android:同时有两个媒体记录器实例

java - MediaRecorder 不保存文件

android - java.lang.VerifyError : Verifier rejected class 错误