Обратный вызов MediaRecorder.OnInfoListener никогда не вызывается при использовании формата файла вывода видео MPEG_2_TS - PullRequest
0 голосов
/ 10 октября 2019

Если я использую MediaRecorder.OutputFormat.MPEG_2_TS во время записи видео с обратным вызовом MediaRecorder, то OnInfoListener никогда не вызывается. Но если я использую MPEG_4, все работает нормально, обратный вызов работает.

Это моя ошибка в конфигурации MediaRecorder, ограничение формата .ts или что-то еще? Могу ли я использовать MediaRecorder для вывода .ts и в то же время ограничить время записи видео или размер выходного файла?

Пример кода:

mediaRecorder?.apply {
    setAudioSource(MediaRecorder.AudioSource.MIC)
    setVideoSource(MediaRecorder.VideoSource.SURFACE)

    // OnInfoListener doesn't work
    setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS)

    // OnInfoListener works
    // setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)

    setOutputFile(nextVideoAbsolutePath)
    setVideoEncodingBitRate(10000000)
    setVideoFrameRate(30)
    setVideoSize(videoSize.width, videoSize.height)
    setVideoEncoder(MediaRecorder.VideoEncoder.H264)
    setAudioEncoder(MediaRecorder.AudioEncoder.AAC)

    setOnInfoListener { mediaRecorder, i, i2 ->
        Log.d("Camera2VideoFragment", "OnInfoListener: i=$i, i2=$i2")
    }

    setMaxDuration(2000)

    prepare()
}

Полный исходный код: https://github.com/android/camera-samples/tree/master/Camera2VideoKotlin

...