Как записать видео с низкой частотой кадров на Android?

Я работаю над проектом, который должен создать изображение GIF, записав видео и преобразовав это видео в GIF. Для этого я делаю 2 шага:

  1. Преобразование видео в список изображений.
  2. Преобразование списка изображений в GIF.

Вопрос: как я могу записать видео длиной около 10 секунд и количеством кадров около 20 кадров. mediaRecorder.setVideoFrameRate(framecount) по некоторым причинам не работает.

        mediaRecorder.setCamera(GIFCamera.c); 

        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        // mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

        mediaRecorder.setProfile(CamcorderProfile
                .get(CamcorderProfile.QUALITY_HIGH));
        mediaRecorder.setOutputFile(AppConst.VIDEO_PATH);
        Camera.Size bestSize = GIFCamera.getBestSize();
        System.out.println(bestSize.width);
        System.out.println(bestSize.height);
        mediaRecorder.setVideoSize(bestSize.width, bestSize.height);
        mediaRecorder.setVideoFrameRate(30);

        mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder()
                .getSurface());

        try {
            mediaRecorder.prepare();
        } catch (IllegalStateException e) {
            releaseMediaRecorder();
            return false;

Спасибо за внимание и извините за мой плохой английский.


person EastBK    schedule 19.07.2013    source источник


Ответы (2)


Это скорее альтернатива, чем ответ, но почему бы вам не попробовать делать фото каждые 0,5 секунды вместо записи видео, если вы хотите 2 кадра в секунду?

person tyxie    schedule 19.07.2013
comment
Я надеюсь, что смогу это сделать, потому что это экономит много времени. Но проблема в том, что при фотосъемке экран за короткое время становится черным на нескольких устройствах, и это определенно доставляет неудобства пользователям. - person EastBK; 19.07.2013
comment
Сам не пробовал, но думаю LapseIt делает это так, и я не видел черного экрана во время записи. - person tyxie; 19.07.2013

Вы можете попробовать удалить ненужные кадры после того, как записали видео. Может быть проще.

person user2071240    schedule 19.07.2013
comment
Я делаю так, но это занимает много времени. Мне действительно нужен лучший способ. Спасибо - person EastBK; 19.07.2013