Неверное время в MediaStore.Video.Media.DURATION

Я пытаюсь записатьвидео в моем приложении, и я заметил, что отображение ихпродолжительностьЯ вижу неправильные минуты \ секунды. Это происходит только с видео, записанным с помощью следующего кода. С видео, записанным через другие приложения, продолжительность отображается справа:

 public void recordStream() {

            //Release Camera before MediaRecorder start
            releaseCamera();

            if(!prepareMediaRecorder()){
                Toast.makeText(MainActivity.this, 
                        "Fail in prepareMediaRecorder()!\n - Ended -", 
                        Toast.LENGTH_LONG).show();

            }

        mediaRecorder.start();


        }
    }



        private boolean prepareMediaRecorder(){

        myCamera = getCameraInstance();
        mediaRecorder = new MediaRecorder();
        myCamera.stopPreview();
        myCamera.unlock();
        mediaRecorder.setCamera(myCamera);

        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

        CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);              
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);               
            mediaRecorder.setVideoFrameRate(profile.videoFrameRate);                
            mediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);              
            mediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);                
            mediaRecorder.setAudioEncodingBitRate(profile.audioBitRate);                
            mediaRecorder.setAudioChannels(profile.audioChannels);              
            mediaRecorder.setAudioSamplingRate(profile.audioSampleRate);                
            mediaRecorder.setVideoEncoder(profile.videoCodec);              
            mediaRecorder.setAudioEncoder(profile.audioCodec);
        }


        //String outputfilename;
        Date date=new Date();
        outputfilename="/sdcard/video/"+date.toString().replace(" ", "_").replace(":", "_")+".mp4";

        mediaRecorder.setOutputFile(outputfilename);
        mediaRecorder.setPreviewDisplay(mSurfaceView.getHolder().getSurface());

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

        return true;

    }

Вот как я получаю продолжительность из видео:

                video_column_index = videocursor
                        .getColumnIndexOrThrow(MediaStore.Video.Media.DURATION);
                videocursor.moveToPosition(position);

                long duration  = videocursor.getLong(video_column_index);

 String converted = String.format("%02d:%02d", 
                        TimeUnit.MILLISECONDS.toMinutes(duration),
                        TimeUnit.MILLISECONDS.toSeconds(duration) - 
                        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
                    );

                holder.txtDuration.setText(converted);

Ответы на вопрос(1)

Ваш ответ на вопрос