yrom / ScreenRecorder

Implement screen capture without root on Android 5.0+ by using MediaProjectionManager, VirtualDisplay, AudioRecord, MediaCodec and MediaMuxer APIs
1.85k stars 527 forks source link

onRecording 回调时间有交错 #7

Open linyongsheng opened 6 years ago

linyongsheng commented 6 years ago

你好 感谢你贡献的代码。发现录制进度回调的实现有点小瑕疵:

private void writeSampleData(int track, MediaCodec.BufferInfo buffer, ByteBuffer encodedData) {
...
if (!eos && mCallback != null) {
      mCallback.onRecording(buffer.presentationTimeUs);
}
...
}

也就是说在写入音频和视频数据都会导致回调,音视和视频各自的时间是线性递增,但是一起回调就有可能有时间交错

yrom commented 6 years ago

是有可能发生,其实这里加个回调只是为了外部能够有时长提示而已。。。 你有什么好的建议吗?

linyongsheng commented 6 years ago

可以考虑保存最近回调的时间,若最新的回调时间大于该值,则允许回调,并更新最近回调时间;若最新回调时间小于该值,则不处理