audioplayers
audioplayers copied to clipboard
Audio not working in iOS 17 for UrlSource
Checklist
- [X] I read the troubleshooting guide before raising this issue
- [X] I made sure that the issue I am raising doesn't already exist
Current bug behaviour
After update to ios 17, play() function fails with following exception. However the same code was working fine in android as well as ios 16.
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(DarwinAudioError, Failed to set source. For troubleshooting, see https://github.com/bluefireteam/audioplayers/blob/main/troubleshooting.md, AVPlayerItem.Status.failed on setSourceUrl, null)
Any .mp3 file with following code produces the above exception
AudioPlayer.global.setAudioContext(AudioContextConfig().build());
final player = AudioPlayer();
ByteData res = await rootBundle.load('assets/test.mp3');
await player.play(UrlSource(Uri.dataFromBytes(res.buffer.asUint8List(), mimeType: "audio/mpeg").toString()), volume: 1);
Expected behaviour
Play the .mp3 file
Steps to reproduce
- Execute
flutter run
on the code sample - ...
- ...
Code sample
Code sample
void main() {
}
Affected platforms
iOS
Platform details
iOS 17
AudioPlayers Version
5.0.0
Build mode
debug
Audio Files/URLs/Sources
No response
Screenshots
No response
Logs
my relevant logs
Full Logs
my full logs or a link to a gist
Flutter doctor:
Output of: flutter doctor -v
Related issues / more information
Problem is with UrlSource. When using asset source on iOS 17, it is working fine.
e.g. - player.play(AssetSource('test.mp3'));
Working on PR
no way
Can you reconfirm a error is thrown by explicitly setting audioplayers version to 5.1.0 and then 5.2.0 ? Note: since 5.2.0 we changed the error description. Also post the mp3 file here or try to reproduce with one of our example files:
https://github.com/bluefireteam/audioplayers/tree/main/packages/audioplayers/example/assets
Upgraded to version 5.2.0. Same exception. output given below
MP3 file input -> packages/audioplayers/example/assets/ambient_c_motion.mp3
flutter: ^[[31mAudioPlayers Exception: AudioPlayerException( UrlSource(url: data:audio/mpeg;base64,SUQzAgAAAAAfdlRTUwAAEABMb2dpYyBQcm8gOS4xLjRDT00AAGgAZW5naVR1bk5PUk0AIDAwMDAwMEMyIDAwMDAwMEUxIDAwMDAwNjJBIDAwMDAwNjBCIDAwMDIxMzM5IDAwMDIxMzM5IDAwMDA4MENGIDAwMDA3RjVFIDAwMDA1Q0MxIDAwMDA0REMxAENPTQAAggBlbmdpVHVuU01QQgAgMDAwMDAwMDAgMDAwMDAyMTAgMDAwMDBCMjggMDAwMDAwMDAwMDhENEZDOCAwMDAwMDAwMCAwMDgwMTdENyAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMABUUDEAAAwAZnJhbmsgTm9yYQBUQUwAAA8AUHVibGljIERvbWFpbgBDT00AACUAZW5nAFNvdXJjZTogTWlkbmlnaHQgQ2FzZXR0ZSBTeXN0ZW0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<…>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(DarwinAudioError, Failed to set source. For troubleshooting, see https://github.com/bluefireteam/audioplayers/blob/main/troubleshooting.md, AVPlayerItem.Status.failed on setSourceUrl, null)
It probably was introduced in 5.2.0 as urls will be URL-encoded now. Maybe you can ensure this hypothesis, if the bug doesn't occur with 5.1.0
. Otherwise, we have to provide a parameter to disable the encoding. But the more long term approach would be to implement #1269 for iOS/macOS.
Note that you haven't had installed 5.0.0 in contrast to your issue description, as you most likely used audioplayers: ^5.0.0
with a caret ^
, which upgrades the minor versions on flutter upgrade
in the pubspec.lock
file. And the output also was introduced in 5.2.0
so it couldn't have been version 5.0.0
.
I really don't think it has to do with either iOS 16 or 17, but everything is possible...
Checked with 4.1.0 also. Observations given below (Test are done without a caret ^ in yaml file)
iOS 16. Version 4.1.0 (working), Version 5.0.0 (working), Version 5.2.0 (working) on both simulator and device iOS 17. No versions working on simulator nor real device
The input parameters given for iOS 16 & 17 are absolutely same. (Including Base64 input)
Logs in version 4.1.0 and the input .mp3 file used during test is attached (The attached .mp3 is very small with just 1 sec audio).
=====LOG START=====
data:audio/mpeg;base64,SUQzAwAAAAAAI1RTU0UAAAAPAAAATGF2ZjU3LjQxLjEwMAAAAAAAAAAAAAAA/+OowAAAAAAAAAAAAEluZm8AAAAPAAAADAAAHmAALy8vLy8vLy9CQkJCQkJCQlVVVVVVVVVVaGhoaGhoaGhoe3t7e3t7e3uOjo6Ojo6OjqGhoaGhoaGhobS0tLS0tLS0x8fHx8fHx8fa2tra2tra2trt7e3t7e3t7f//////////AAAAAExhdmM1Ny40OAAAAAAAAAAAAAAAACQAAAAAAAAAAB5guduaMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+OIxAAAAANIAAAAAExBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+OIxAAAAANIAUAAAExBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/+OIxAAAAANIAAAAAExBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
flutter: \^[[31mAudioPlayers Exception: AudioPlayerException(
UrlSource(url: data:audio/mpeg;base64,SUQzAwAAAAAAI1RTU0UAAAAPAAAATGF2ZjU3LjQxLjEwMAAAAAAAAAAAAAAA/+OowAAAAAAAAAAAAEluZm8AAAAPAAAADAAAHmAALy8vLy8vLy9CQkJCQkJCQlVVVVVVVVVVaGhoaGhoaGhoe3t7e3t7e3uOjo6Ojo6OjqGhoaGhoaGhobS0tLS0tLS0x8fHx8fHx8fa2tra2tra2trt7e3t7e3t7f//////////AAAAAExhdmM1Ny40OAAAAAAAAAAAAAAAACQAAAAAAAAAAB5guduaMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<…>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(DarwinAudioError, AVPlayerItem.Status.failed on setSourceUrl, null, null)
=====LOG END=====
Thank you for your detailed report. Unfortunately I'm very limited in developing with iOS / macOS. Feel free to contribute
The error is from /audioplayers_darwin-5.0.2/ios/ClassesWrappedMediaPlayer.swift
inside the function setUpPlayerItemStatusObservation => self.eventHandler.onLog(message: "player status: (status), change: (change)") the following message is logged
[log] AudioPlayers Log: player status: AVPlayerItemStatus(rawValue: 2), change: NSKeyValueObservedChange<AVPlayerItemStatus>(kind: __C.NSKeyValueChange, newValue: nil, oldValue: nil, indexes: nil, isPrior: false)
AVPlayer status codes for reference => (0: unknown, 1: readyToPlay, 2: failed)
The error property from AVPlayer is
**
Optional(Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo={NSLocalizedFailureReason=This media format is not supported., NSLocalizedDescription=Cannot Open, NSUnderlyingError=0x600000c601b0 {Error Domain=NSOSStatusErrorDomain Code=-12847 "(null)"}})
**
I wrote a sample code in swift using XCode 15.0.1 as given below, which can duplicate the error quoted above. Audio play works without any issues on ios 16. But throws error 11828 while running on ios 17.
I don't know reason for this behaviour. May be Apple made some new restrictions in ios 17 regarding DATA URI. Can you check or confirm with the author(s) of audioplayers_darwin regarding this for a potential solution?
import SwiftUI
import AVFoundation
struct ContentView: View {
//Tiny audio data URI of silence. Paste data uri in previous thread to hear audio
let data = "data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjM2LjEwMAAAAAAAAAAAAAAA//OEAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAEAAABIADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV6urq6urq6urq6urq6urq6urq6urq6urq6v////////////////////////////////8AAAAATGF2YzU2LjQxAAAAAAAAAAAAAAAAJAAAAAAAAAAAASDs90hvAAAAAAAAAAAAAAAAAAAA//MUZAAAAAGkAAAAAAAAA0gAAAAATEFN//MUZAMAAAGkAAAAAAAAA0gAAAAARTMu//MUZAYAAAGkAAAAAAAAA0gAAAAAOTku//MUZAkAAAGkAAAAAAAAA0gAAAAANVVV"
@State var observer: NSKeyValueObservation?
@State var playerItem: AVPlayerItem?
@State var player: AVPlayer?
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Button("Play Audio") {
print("Button pressed by user")
do {
try AVAudioSession.sharedInstance().setMode(.default)
try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
playerItem = AVPlayerItem.init(url: URL(string: data)!)
print(playerItem?.status.rawValue)
self.observer = playerItem?.observe(\.status) { (playerItem, change) in
let status = playerItem.status
print("Status changed - ")
print(status.rawValue)
print(playerItem.error)
}
player = AVPlayer(playerItem: playerItem)
player?.volume = 1.0
player?.play()
}
catch {
print("Something went wrong")
}
}
}
.padding()
}
}
#Preview {
ContentView()
}
The best solution would be to implement #1692 and #1269.
Found a solution. In the above code snippet where you're instantiating the AVPlayerItem and giving it the URL, we need to instead give it a AVURLAsset and override the MIME type:
let asset = AVURLAsset(url: URL(string: data)!, options: [AVURLAssetOverrideMIMETypeKey: "audio/mpeg"]) playerItem = AVPlayerItem(asset: asset)
Just tested this on iOS 17 Simulator and it's working.
@andyshephard are you interested in writing a PR with a fix and some add some tests to it? ;D
I have a draft PR, here: https://github.com/bluefireteam/audioplayers/pull/1728 I'm currently reading through the contributor docs and testing before making it ready for review.
For those who still have issue with audio player on iOS, upgrade your audio player plugin to 6.0.0 or above (if available at the time you're reading this) and then add mineType as an additional argument in the player
player.play(UrlSource(url,mimeType: "audio/mp3"))
If in case the format of your audio is different then add "audio/" as prefix following the format of your audio. For example: -
audio/mp3
audio/mpeg
etc etc