Я пытаюсь записывать видео с помощью класса MediaRecorder.
Однако я обнаружил, что мне не удалось снизить частоту кадров видеопотока.
Я использую H.264 в качестве кодировщика видео и AAC в качестве кодировщика звука (да, он поддерживается в API LEVEL 10 и выше, AKA Android 2.3.3+) Однако я обнаружил, что мне не удалось снизить частоту кадров видеопотока. Я использую H.264 в качестве кодировщика видео и AAC в качестве кодировщика аудио (да, это ...
Я пытаюсь записывать видео с помощью класса MediaRecorder.
Однако я обнаружил, что мне не удалось снизить частоту кадров видеопотока.
Я использую H.264 в качестве кодировщика видео и AAC в качестве кодировщика звука (да, он поддерживается на уровне API 10 и выше, AKA Android 2.3.3+) Однако я обнаружил, что мне не удалось снизить частоту кадров видеопотока. Я использую H.264 в качестве кодировщика видео и AAC в качестве кодировщика аудио (да, это ...
Я пытаюсь записывать видео с помощью класса MediaRecorder.
Однако я обнаружил, что мне не удалось снизить частоту кадров видеопотока.
Я использую H.264 в качестве кодировщика видео и AAC в качестве кодировщика звука (да, он поддерживается в 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 , я бы получил видео файл со скоростью 15 кадров в секунду. Тем не менее, я снова получил видеофайл со скоростью около 27 кадров в секунду.
Так как снизить частоту кадров видео? Я создаю живую систему, поэтому снижение битрейта должно быть для меня очень важным. Спасибо за ваше время!