使用MediaProjection + MediaCodec + MediaMuxer 录制手机屏幕保存到本地mp4文件。
停止录制时调用 meidiaMuxer.stop() 报错:Failed to stop the muxer。
这是调用 mediaMuxer.addTrack 的时机不对,应该在MediaCodec调用dequeueOutputBuffer返回MediaCodec.INFO_OUTPUT_FORMAT_CHANGED时设置。
具体代码:
if (index == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
val newFormat = codec.outputFormat
encodeVideoTrackIndex = mMediaMuxer?.addTrack(newFormat)!!
mMediaMuxer?.start()
}