Делая запись использования видео MediaRecorder и FileOutputStream создают видеофайл это can' t играться

Я пытаюсь осуществить функцию, где я могу начать и остановить видеозапись многократно и накопить видеоданные в Файл .

Это - то, как я готовлю свой рекордер СМИ:

private boolean prepareVideoRecorder(){
    mMediaRecorder = new MediaRecorder();

    //0 for landscape
    //90 for portrait

    //Check for available profile
    CamcorderProfile profile = null;
    if(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_480P)){
        Log.d(TAG, "480p");
        profile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
    }else if(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P)){
        Log.d(TAG, "720p");
        profile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
    }else{
        Log.d(TAG, "LOW");
        profile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
    }

   //Step 1: Unlock and set camera to MediaRecorder
    mCamera.unlock();
    mMediaRecorder.setCamera(mCamera);

   //Step 2: Set sources
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

   //Step 3: Set profile
    mMediaRecorder.setProfile(profile);

   //Step 4: Set output file and pass media recorder the file descriptor
    if(mStoreFile == null){
        mStoreFile = MediaUtil.getOutputMediaFile(MediaUtil.MEDIA_TYPE_VIDEO);
        try {
            mStoreFile.createNewFile();
        } catch (Exception e) {  
            e.printStackTrace();
        }
    }

    try {
        mOutputStream = new FileOutputStream(mStoreFile, true);
        mMediaRecorder.setOutputFile(mOutputStream.getFD());
    } catch (Exception e1) {
        e1.printStackTrace();
    }

    mMediaRecorder.setMaxDuration(30000);


   //Step 5: Set the preview output
    mMediaRecorder.setPreviewDisplay(mPreviewSurface.getHolder().getSurface());

    //Check orientation and set hint
    switch(mOrientation){
    case ORIENTATION_PORTRAIT_NORMAL:
        mMediaRecorder.setOrientationHint(90); 
        break;
    case ORIENTATION_PORTRAIT_INVERTED:
        mMediaRecorder.setOrientationHint(270); 
        break;
    case ORIENTATION_LANDSCAPE_NORMAL:
        mMediaRecorder.setOrientationHint(0); 
        break;
    case ORIENTATION_LANDSCAPE_INVERTED:
        mMediaRecorder.setOrientationHint(180); 
        break;
    }

   //Step 6: Prepare configured MediaRecorder
    try {
        mMediaRecorder.prepare();
    } catch (IllegalStateException e) {
        Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    } catch (IOException e) {
        Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    }
    return true;
}

Это - кнопка на коде щелчка:

@Override
        public void onClick(View v) {
            if (isRecording) {
                try{
                    mOutputStream.close();
                }catch(Exception ee){
                }

               //stop recording and release camera
                mMediaRecorder.stop(); //stop the recording

                mMediaRecorder.reset();
                mCamera.lock();        //take camera access back from MediaRecorder

               //inform the user that recording has stopped
                mRecordButton.setImageResource(R.drawable.record_button);
                isRecording = false;

            } else {
               //initialize video camera
                if (prepareVideoRecorder()) {
                   //Camera is available and unlocked, MediaRecorder is prepared,
                   //now you can start recording
                    mMediaRecorder.start();

                   //inform the user that recording has started
                    mRecordButton.setImageResource(R.drawable.record_button_on);
                    isRecording = true;
                } else {
                   //prepare didn't work, release the camera
                    releaseMediaRecorder();
                   //inform user
                }
            }
        }
    });

MediaUtil.getOutputMediaFile(MediaUtil.MEDIA_TYPE_VIDEO) will give me something like: /storage/sdcard0/Pictures/Project/VID_2013.mp4

Текущая проблема:

Путем я проверяю его, в данный момент:

  1. запись Начала
  2. Запись Остановки
  3. запись Начала
  4. запись остановки
  5. Идет в файловый менеджер андроида на/Pictures/Project пути
  6. я вижу файл, который был создан и "приложен" с многократными сегментами данных. Но это не будет играть. И у этого нет нанесенного на обложку изображения как другие видеофайлы.

Где-нибудь вдоль линии, файл испорчен? Это не работает также, если я просто делаю запись однажды и проверяю файл в хранение. Я в состоянии сделать запись видео, если я просто определяю Файл для MediaRecorder в setOutputFile , но я пробую, прилагают видеоданные для многократной охоты. Действительно ли это возможно?

7
nl ja de
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)