bluefireteam / audioplayers

A Flutter package to play multiple audio files simultaneously (Android/iOS/web/Linux/Windows/macOS)
https://pub.dartlang.org/packages/audioplayers
MIT License
2k stars 844 forks source link

java.io.IOException: Prepare failed.: status=0x1 when playing MP3 file on Android #1373

Open brylie opened 1 year ago

brylie commented 1 year ago

Checklist

When trying to play an MP3 file on Android 31, I get an error:

java.io.IOException: Prepare failed.: status=0x1

Current bug behaviour

java.io.IOException: Prepare failed.: status=0x1

Expected behaviour

Since the file plays successfully on the iOS simulator, I was expecting it to also play on Android.

Steps to reproduce

Code sample ```dart void main() { const audioFilePath = 'audio/file.mp3'; player.play(AssetSource(metronomeAudioPath)); } ```

Logs

D/AudioPlayers(11026): Unexpected error!
D/AudioPlayers(11026): java.io.IOException: Prepare failed.: status=0x1
D/AudioPlayers(11026):  at android.media.MediaPlayer._prepare(Native Method)
D/AudioPlayers(11026):  at android.media.MediaPlayer.prepare(MediaPlayer.java:1435)
D/AudioPlayers(11026):  at xyz.luan.audioplayers.player.MediaPlayerPlayer.prepare(MediaPlayerPlayer.kt:89)
D/AudioPlayers(11026):  at xyz.luan.audioplayers.player.WrappedPlayer.configAndPrepare(WrappedPlayer.kt:310)
D/AudioPlayers(11026):  at xyz.luan.audioplayers.player.WrappedPlayer.setSource(WrappedPlayer.kt:31)
D/AudioPlayers(11026):  at xyz.luan.audioplayers.AudioplayersPlugin.handler(AudioplayersPlugin.kt:91)
D/AudioPlayers(11026):  at xyz.luan.audioplayers.AudioplayersPlugin.access$handler(AudioplayersPlugin.kt:25)
2
D/AudioPlayers(11026):  at xyz.luan.audioplayers.AudioplayersPlugin$onAttachedToEngine$1$1.invoke(AudioplayersPlugin.kt:41)
D/AudioPlayers(11026):  at xyz.luan.audioplayers.AudioplayersPlugin$safeCall$1.invokeSuspend(AudioplayersPlugin.kt:62)
D/AudioPlayers(11026):  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
D/AudioPlayers(11026):  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
D/AudioPlayers(11026):  at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
D/AudioPlayers(11026):  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
D/AudioPlayers(11026):  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
D/AudioPlayers(11026):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
D/AudioPlayers(11026):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
D/AudioPlayers(11026):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Full Logs ``` V/MediaPlayer-JNI(11026): native_setup V/MediaPlayerNative(11026): constructor V/MediaPlayerNative(11026): setListener V/MediaPlayer-JNI(11026): reset V/MediaPlayerNative(11026): reset V/MediaPlayer(11026): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false V/MediaPlayer(11026): cleanDrmObj: mDrmObj=null mDrmSessionId=null V/MediaPlayer-JNI(11026): setDataSourceFD: fd 108 V/MediaPlayerNative(11026): setDataSource(108, 0, 576460752303423487) V/MediaPlayer-JNI(11026): getPlaybackSettings: 1.000000 1.000000 2 0 V/MediaPlayer-JNI(11026): setPlaybackParams: 1:1.000000 1:1.000000 1:2 1:0 V/MediaPlayerNative(11026): setPlaybackSettings: 1.000000 1.000000 2 0 V/MediaPlayer-JNI(11026): setVolume: left 1.000000 right 1.000000 V/MediaPlayerNative(11026): MediaPlayer::setVolume(1.000000, 1.000000) V/MediaPlayer-JNI(11026): setLooping: 0 V/MediaPlayerNative(11026): MediaPlayer::setLooping V/MediaPlayerNative(11026): setVideoSurfaceTexture V/MediaPlayerNative(11026): prepare V/MediaPlayerNative(11026): message received msg=100, ext1=1, ext2=-2147483648 E/MediaPlayerNative(11026): error (1, -2147483648) V/MediaPlayerNative(11026): signal application thread V/MediaPlayerNative(11026): prepare complete - status=1 D/AudioPlayers(11026): Unexpected error! D/AudioPlayers(11026): java.io.IOException: Prepare failed.: status=0x1 D/AudioPlayers(11026): at android.media.MediaPlayer._prepare(Native Method) D/AudioPlayers(11026): at android.media.MediaPlayer.prepare(MediaPlayer.java:1435) D/AudioPlayers(11026): at xyz.luan.audioplayers.player.MediaPlayerPlayer.prepare(MediaPlayerPlayer.kt:89) D/AudioPlayers(11026): at xyz.luan.audioplayers.player.WrappedPlayer.configAndPrepare(WrappedPlayer.kt:310) D/AudioPlayers(11026): at xyz.luan.audioplayers.player.WrappedPlayer.setSource(WrappedPlayer.kt:31) D/AudioPlayers(11026): at xyz.luan.audioplayers.AudioplayersPlugin.handler(AudioplayersPlugin.kt:91) D/AudioPlayers(11026): at xyz.luan.audioplayers.AudioplayersPlugin.access$handler(AudioplayersPlugin.kt:25) 2 D/AudioPlayers(11026): at xyz.luan.audioplayers.AudioplayersPlugin$onAttachedToEngine$1$1.invoke(AudioplayersPlugin.kt:41) D/AudioPlayers(11026): at xyz.luan.audioplayers.AudioplayersPlugin$safeCall$1.invokeSuspend(AudioplayersPlugin.kt:62) D/AudioPlayers(11026): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) D/AudioPlayers(11026): at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) D/AudioPlayers(11026): at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42) D/AudioPlayers(11026): at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) D/AudioPlayers(11026): at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) D/AudioPlayers(11026): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) D/AudioPlayers(11026): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) D/AudioPlayers(11026): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) ``` Flutter doctor: ``` [✓] Flutter (Channel stable, 3.3.10, on macOS 13.1 22C65 darwin-x64, locale en-GB) • Flutter version 3.3.10 on channel stable at /Users/brylie/Code/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 135454af32 (4 weeks ago), 2022-12-15 07:36:55 -0800 • Engine revision 3316dd8728 • Dart version 2.18.6 • DevTools version 2.15.0 [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1) • Android SDK at /Users/brylie/Library/Android/sdk • Platform android-33, build-tools 33.0.1 • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 14.2) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 14C18 • CocoaPods version 1.11.3 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2021.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) [✓] VS Code (version 1.74.2) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.56.0 [✓] Connected device (4 available) • SM N970F (mobile) • R58M837HR9J • android-arm64 • Android 12 (API 31) • iPhone 14 Pro Max (mobile) • A715B8AE-0238-4A48-B933-8A8DCDBCB4CB • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator) • macOS (desktop) • macos • darwin-x64 • macOS 13.1 22C65 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 108.0.5359.124 ! Device emulator-5562 is offline. [✓] HTTP Host Availability • All required HTTP hosts are available ```

Audio Files/URLs/Sources

Screenshots

Environment information

Platform 1: android

Platforms tested without any issue (optional):

More information

brylie commented 1 year ago

Switching from MP3 to WAV works.

Gustl22 commented 1 year ago

I have to login to download the sample. Can you ensure what the file format is and check if it is supported by android? https://www.aconvert.com/analyze.html

https://developer.android.com/guide/topics/media/media-formats.html

brylie commented 1 year ago

Thanks for your quick response.

It looks like the MP3 encoder settings were using LAME VBR. The issue may stem from the LAME encoder.

In any case, switching to WAV is fine, so this issue can be deprioritised :-)