Я пытаюсь записать видео, используя MediaRecorder Class.
Однако я обнаружил, что мне не удалось снизить частоту кадров видеопотока.
Я использую H.264 в качестве моего видеоEncoder и AAC как мой Audio Encoder (да, он поддерживается в API LEVEL 10 и выше, AKA Android 2.3.3+). Основной источник следующий:
recorder = new MediaRecorder();
recorder.setPreviewDisplay(surfaceHolder.getSurface());
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//set the Output Format
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//set the Video Size
recorder.setVideoSize(176,144);
//set the Frame rate
recorder.setVideoFrameRate(15);
//Set the Video Encoder
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
//Set the Audio Encoder
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(myRecAudioFile.getAbsolutePath());
recorder.prepare();
recorder.start();
Однако я получил отладочную информацию о том, что:
03-22 22:39:41.120: WARN/StagefrightRecorder(662): Intended video encoding frame rate (15 fps) is too small and will be set to (27 fps)
Достаточно странно, что я также получил сообщение об ошибке:
03-22 22:39:41.380: ERROR/VENC_ENC(662): Bitrate 192000
В конце я получил файл mp4 с частотой кадров почти 28 кадров в секунду.
Я также попытался использовать самый низкий профиль CamcorderProfile, равный
recorder = new MediaRecorder();
recorder.setPreviewDisplay(surfaceHolder.getSurface());
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//replacement
CamcorderProfile cpLow = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
recorder.setProfile(cpLow);
recorder.setOutputFile(myRecAudioFile.getAbsolutePath());
recorder.prepare();
recorder.start();
, и прокомментировать подробную конфигурацию рекордера.
Как книга Pro Android Media сказал, что я получил бы видео файл с 15fps.Тем не менее, я снова получил видеофайл со скоростью около 27 кадров в секунду.
Так как снизить частоту кадров видео? Я строю живую систему, поэтому понижение битрейта получилосьбыть очень важным для меня.Спасибо за ваше время!