Как использовать MediaRecorder для захвата видео на Android? - PullRequest
2 голосов
/ 12 августа 2011

Я хотел бы создать короткий видеоклип, используя MediaRecorder, но я не знаю, как его использовать.

В своем файле манифеста я добавил эти разрешения перед тегом приложения:

    <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 и как я могу отладить свое приложение, чтобы увидеть, что вызывает исключение?Нужно ли добавлять какие-либо другие разрешения пользователя в мой файл манифеста?

Ответы [ 3 ]

5 голосов
/ 13 августа 2011

Вы ДОЛЖНЫ установить предварительный просмотр, чтобы использовать медиа рекордер для записи видео. См. Руководство по MediaRecorder

1 голос
/ 23 февраля 2015

сначала объявите разрешение

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

в Manifestfile, затем

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();

}
0 голосов
/ 26 мая 2017

Чтобы объявить, что ваше приложение зависит от наличия камеры, поместите тег в файл манифеста:

<manifest ... >
<uses-feature android:name="android.hardware.camera"
              android:required="true" />
...

Запись видео с помощью приложения камеры

    static final int REQUEST_VIDEO_CAPTURE = 1;

 private void dispatchTakeVideoIntent() {
        Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
        }
    }

// Просмотр видео

 @Override
       protected void onActivityResult(int requestCode, int resultCode,Intent intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) 
    {
        Uri videoUri = intent.getData();
        mVideoView.setVideoURI(videoUri);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...