[BUG]: Recording does not work on real iOS device
See original GitHub issueFlutter Sound Version :
-
FULL or LITE flavor ? Full
-
Important: Result of the command :
flutter pub deps | grep flutter_sound
|-- flutter_sound 9.1.3
| |-- flutter_sound_platform_interface 9.1.3
| |-- flutter_sound_web 9.1.3
| | |-- flutter_sound_platform_interface...
Severity
-
Crash ?
-
Result is not what expected ? [x]
-
Cannot build my App ?
-
Minor issue ?
Platforms you faced the error
-
iOS ? [x]
-
Android ?
-
Flutter Web ?
-
Emulator ?
-
Real device ? [x]
Describe the bug We use FlutterSoundRecorder to record audio and save to temporary directory. Recorder works fine on iOS simulator but does not work on real iOS device. On real devices recorded file length always equals to 4096. No errors in logs. Flutter_sound used along with audio_service library for control with bluetooth devices. Android also works fine.
final _recorder = FlutterSoundRecorder(logLevel: Level.error);
await _recorder.openRecorder();
final tempDir = await getTemporaryDirectory();
_testWave = WaveFile('${tempDir.path}/test.wav');
...
Future<void> startRecorder() {
await _recorder.startRecorder(
toFile: _testWave.path,
codec: Codec.pcm16WAV,
audioSource: AudioSource.microphone,
);
await Future<void>.delayed(
Duration(milliseconds: 5000),
() async {
await _recorder.stopRecorder();
},
);
}
To Reproduce Steps to reproduce the behavior:
- Start recording on real iOS device
- See that record file is always 4096b and can not be played
Logs!!!
(This is very important. Most of the time we cannot do anything if we do not have information on your bug).
To activate the logs, you must instantiate your modules with the Log Level set to Level.debug
:
FlutterSoundPlayer myPlayer = FlutterSoundPlayer(logLevel: Level.debug);
FlutterSoundRecorder myRecorder = FlutterSoundRecorder(logLevel: Level.debug);
See this
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 new FlutterSoundRecorder
flutter: β #1 new AudioIO
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π ctor: FlutterSoundRecorder()
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.openRecorder
flutter: β #1 AudioIO.init
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:---> openAudioSession
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._openAudioSession
flutter: β #1 FlutterSoundRecorder.openRecorder.<anonymous closure>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π ---> openAudioSession
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._openAudioSession
flutter: β #1 FlutterSoundRecorder.openRecorder.<anonymous closure>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π Resetting flutter_sound Recorder Plugin
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.openRecorderCompleted
flutter: β #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π ---> openRecorderCompleted: true
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.openRecorderCompleted
flutter: β #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π <--- openRecorderCompleted: true
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._openAudioSession
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π <--- openAudioSession
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.openRecorder
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:<--- openAudioSession
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: Loading ffmpeg-kit-flutter.
FFmpegKitFlutterPlugin 0x281cedd00 started listening to events on 0x280996900.
flutter: Loaded ffmpeg-kit-flutter-ios-audio-arm64-4.5.1.
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.startRecorder
flutter: β #1 AudioIO.startRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:---> startRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._startRecorder
flutter: β #1 FlutterSoundRecorder.startRecorder.<anonymous closure>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:---> _startRecorder.
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.startRecorderCompleted
flutter: β #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π ---> startRecorderCompleted: true
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.startRecorderCompleted
flutter: β #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π <--- startRecorderCompleted: true
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._startRecorder
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:<--- _startRecorder.
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.startRecorder
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:<--- startRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.stopRecorder
flutter: β #1 AudioIO.stopRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:---> stopRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._stopRecorder
flutter: β #1 FlutterSoundRecorder.stopRecorder.<anonymous closure>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:---> _stopRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._stop
flutter: β #1 FlutterSoundRecorder._stopRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:---> _stop
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.stopRecorderCompleted
flutter: β #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π ---> stopRecorderCompleted: true
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.stopRecorderCompleted
flutter: β #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π <---- stopRecorderCompleted: true
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._stop
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:<--- _stop
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder._stopRecorder
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:<--- _stopRecorder : /var/mobile/Containers/Data/Application/582463FB-C251-43EE-8266-16DD22CBA911/Library/Caches/test.wav
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β #0 FlutterSoundRecorder.stopRecorder
flutter: β #1 <asynchronous suspension>
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
flutter: β π FS:<--- stopRecorder
flutter: ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Issue Analytics
- State:
- Created a year ago
- Reactions:6
- Comments:5
Top GitHub Comments
Iβm facing a similar issue after upgrading from
8.5.0
to9.2.10
. It works fine on the simulator, but on a real iOS device, it does not. In my case, I end up with file sizes of zero bytes, however.On some investigation, I found that progress does not increment. When I listen to progress with
I get this output infinitely:
Perhaps you can try to configure your audio session with the audio_session plugin before startRecorder(). See [#890] and [#868]