Canardoux / flutter_sound

Flutter plugin for sound. Audio recorder and player.
Mozilla Public License 2.0
877 stars 574 forks source link

[BUG]: Negative duration values reported during pause and resume recording on Android #1110

Open rxy20 opened 4 weeks ago

rxy20 commented 4 weeks ago

Flutter Sound Version : 9.16.3

Severity


Platforms you faced the error


Describe the bug When using FlutterSoundRecorder to record audio on Android, and repeatedly pausing and resuming the recording, after two or three repetitions, the onProgress listener reports a negative duration value for e.duration.inMilliseconds.

 final FlutterSoundRecorder _mRecorder = FlutterSoundRecorder();
_mRecorder.onProgress!.listen((e) {  
// e.duration.inMilliseconds的值为负值
});

To Reproduce Steps to reproduce the behavior:

  1. Initialize a FlutterSoundRecorder instance.
  2. Start recording audio.
  3. Pause the recording.
  4. Resume the recording.
  5. Repeat steps 2-4 two or three times.
  6. Observe that the onProgress listener's e.duration.inMilliseconds becomes negative.

Logs!!!!

I/flutter ( 7463): ❌e.duration.inMilliseconds=====>>>-51066
I/flutter ( 7463): ❌e.duration.inMilliseconds=====>>>-51024
I/flutter ( 7463): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): │ #0   FlutterSoundRecorder.pauseRecorder (package:flutter_sound/public/flutter_sound_recorder.dart:802:13)
I/flutter ( 7463): │ #1   _AudioRecordPageViewState.pauseRecorder (package:voice_memos/views/pages/record/record.dart:266:20)
I/flutter ( 7463): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter ( 7463): │ 🐛 FS:---> pauseRecorder 
I/flutter ( 7463): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): │ #0   FlutterSoundRecorder._pauseRecorder (package:flutter_sound/public/flutter_sound_recorder.dart:810:13)
I/flutter ( 7463): │ #1   FlutterSoundRecorder.pauseRecorder.<anonymous closure> (package:flutter_sound/public/flutter_sound_recorder.dart:804:13)
I/flutter ( 7463): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter ( 7463): │ 🐛 FS:---> pauseRecorder
I/flutter ( 7463): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): │ #0   FlutterSoundRecorder._pauseRecorder (package:flutter_sound/public/flutter_sound_recorder.dart:829:13)
I/flutter ( 7463): │ #1   <asynchronous suspension>
I/flutter ( 7463): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter ( 7463): │ 🐛 FS:<--- pauseRecorder
I/flutter ( 7463): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): │ #0   FlutterSoundRecorder.pauseRecorderCompleted (package:flutter_sound/public/flutter_sound_recorder.dart:189:13)
I/flutter ( 7463): │ #1   MethodChannelFlutterSoundRecorder.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_recorder.dart:96:24)
I/flutter ( 7463): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter ( 7463): │ 🐛 ---> pauseRecorderCompleted: true
I/flutter ( 7463): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): │ #0   FlutterSoundRecorder.pauseRecorderCompleted (package:flutter_sound/public/flutter_sound_recorder.dart:198:13)
I/flutter ( 7463): │ #1   MethodChannelFlutterSoundRecorder.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_recorder.dart:96:24)
I/flutter ( 7463): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter ( 7463): │ 🐛 <--- pauseRecorderCompleted: true
I/flutter ( 7463): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter ( 7463): │ #0   FlutterSoundRecorder.pauseRecorder (package:flutter_sound/public/flutter_sound_recorder.dart:806:13)
I/flutter ( 7463): │ #1   <asynchronous suspension>
I/flutter ( 7463): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter ( 7463): │ 🐛 FS:<--- pauseRecorder 
I/flutter ( 7463): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
DanGrissom commented 4 weeks ago

Seeing the same thing on 9.11.2. I'm recording with the pcm16WAV codec in case that matters.