Если я использую 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