Android 8.1 MediaRecorder setMaxDuration не работает - PullRequest
0 голосов
/ 02 июля 2019

Мое приложение для видеозаписи работало хорошо, так как я звоню _mediaRecorder.SetMaxDuration(120000), который перезванивает MediaRecordInfo, где event.What == MediaRecorderInfo.MaxDurationReached через две минуты.

Удивительно, что на Android 8.1 этот обратный вызов происходит сразу после запуска медиа-рекордера.

Если я не установлю максимальную длительность, я могу снимать видео длительностью более 8 секунд и на 8.1.

7.0 и 9.0 не имеют этой проблемы.

Любые идеи?

Вот некоторый код, хотя у меня нет идеи, если возникла проблема, я мог бы просто вставить свои целые классы видео.

    private void SetupMediaRecorder()
    {
        MediaRecorder.SetAudioSource(AudioSource.Mic);
        MediaRecorder.SetVideoSource(VideoSource.Surface);
        MediaRecorder.SetOutputFormat(OutputFormat.Mpeg4);

        MediaRecorder.SetVideoEncoder(VideoEncoder.H264);
        MediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
        MediaRecorder.SetOutputFile(outputURL);
        MediaRecorder.SetVideoSize(1280, 720);
        //Modify for changes in output size & quality
        MediaRecorder.SetVideoFrameRate(30);
        MediaRecorder.SetVideoEncodingBitRate(2000000);
        //MediaRecorder.SetVideoSize(videoSize.Width, videoSize.Height);
        MediaRecorder.SetMaxDuration(120000);

        //Set audio bitrate
        int bitDepth = 16;
        int sampleRate = 44100;
        int bitRate = sampleRate * bitDepth;
        MediaRecorder.SetAudioEncodingBitRate(bitRate);
        MediaRecorder.SetAudioSamplingRate(sampleRate);

        int rotation = (int)ThisActivity.WindowManager.DefaultDisplay.Rotation;
        int orientation = orientations[rotation];
        MediaRecorder.SetOrientationHint(orientation);
        MediaRecorder.Prepare();
    }


    private void MediaRecorder_Info(object sender, MediaRecorder.InfoEventArgs e)
    {
        if (e.What == MediaRecorderInfo.MaxDurationReached)
        {
            //Called immediately after MediaRecorder.Start() on Android 8.1
        }
    }
...