Запись в формате Webm в настройках android mediarecorder или настройка на camprofile?

Это может показаться глупым вопросом, я работал над этим всю ночь и не мог записать веб-видео со своего мобильного телефона.

    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM);

    //mMediaRecorder.setOutputFormat(outFormat);

    //CamcorderProfile camPro = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_480P);
    //camPro.fileFormat = MediaRecorder.OutputFormat.WEBM;
    //camPro.videoFrameRate = 30;
    mMediaRecorder.setCaptureRate(30f);
    //camPro.videoFrameWidth = 360;
    //camPro.videoFrameHeight = 640;
    //camPro.videoBitRate = 2000000;
    //camPro.audioCodec = MediaRecorder.AudioEncoder.VORBIS;

    mMediaRecorder.setVideoSize(640,360);
    mMediaRecorder.setVideoEncodingBitRate(2000000);

    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.VORBIS);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.VP8);
    //camPro.videoCodec = MediaRecorder.VideoEncoder.VP8;
    mMediaRecorder.setVideoFrameRate(30);
    //mMediaRecorder.setProfile(camPro);

Я прокомментировал линии профиля видеокамеры, так как полагаю, что нужно использовать только одну. Я также увидел заметку о том, что для этого необходим API-уровень 21, поэтому я нахожусь на своем мото G с леденцом 5.0.2.

Я получаю сообщение об ошибке "Камера умерла". Ошибка 100. Иногда происходит событие media Recder.prepare(), но затем Media Recorder.start() выдает ошибку. Я смущен относительно того, что должно быть сделано. Однажды я не получил ошибок. Но у меня был только файл размером 6,19 КБ, который не мог быть воспроизведен.

1 ответ

Я не могу сказать, хотите ли вы записать файл или сокет или что-то еще. Но если вы хотите написать в Socket, то Lollipop, похоже, имеет проблемы с ним. Вы должны использовать эту технику для записи в Socket.

Тем не менее, WEBM, кажется, прекращает потоковую передачу данных после первых двух пакетов. В настоящее время я не уверен, почему это так.

У кого-нибудь есть MediaRecorder, работающий с ParcelFileDescriptor и createPipe()?

Другие вопросы по тегам