I'm building an audio player on both mobile platforms: iOS + Android. For right now I'm just interested in iOS.
These are the features I will have. If it makes it simpler to think about, it will be exactly like how Spotify functions (see screenshots below).
Here are the features anyway:
I'm not a native developer though, and I'm trying to just research to find information on what to tell my developers on the course of action they should choose, and I'm having a lot of difficulty grasping these concepts.
Fast sidenote: my app deals with actual 'tracks', it doesn't deal with continuous streaming type stuff like a continuous news channel stream or anything.
Here are the questions I have...
Overall any insight would be helpful... I feel as I'm drowning in information, and while I'm usually pretty good about finding my way, this is one case where I'm just so lost as to how to proceed.
Thanks!
Here are a few screenshots of the Spotify player to give you a feel of what I'm looking to do. Mine looks a lot different, but 100% the same functionality.
Play screen
Lock screen
These are the features I will have. If it makes it simpler to think about, it will be exactly like how Spotify functions (see screenshots below).
Here are the features anyway:
- Working play queue/playlist
- Play / pause
- Shuffle / repeat
- Skip / previous
- Scrubbing via dragging in the UI
- Auto buffering next song (maybe?)
- Different quality options
- Play music when app is closed, including navigating to next/previous song on playlist
I'm not a native developer though, and I'm trying to just research to find information on what to tell my developers on the course of action they should choose, and I'm having a lot of difficulty grasping these concepts.
Fast sidenote: my app deals with actual 'tracks', it doesn't deal with continuous streaming type stuff like a continuous news channel stream or anything.
Here are the questions I have...
- What are the pros and cons of using an `m3u/m3u8` playlist, vs streaming an mp3 file? Is one of these obviously better than the other, given the features I need above? I'm having difficulty whether to choose streaming mp3's, m3u, or m3u8.
- It's my understanding that HLS automatically chooses the right bitrate. I see many audio players however let the user choose which quality to use in the settings pane (high/med/low). Does this imply these apps are not using HLS? Which of the above 3 options do you think the majority of apps use?
- I wanted to offer 3 qualities similar to Spotify (96, 160, 320 kbps). Are there limitations of doing this while streaming mp3's?
- Assuming that streaming mp3's is still an option (and not immediately eliminated as a contender), are there performance differences with streaming mp3's vs using a playlist? Can you still do thinks like scrubbing and skipping tracks with no more delay?
- Are there any popular libraries for both platforms that handle all of this stuff? My entire app is a music player so I'm looking for something that is well maintained and trusted. I dont even know if I need a wrapper to be honest though as my use case is quite simple.
- I would assume I need to do some transcoding... are there any downsides to just using `ffmpeg` on the server and doing it myself?
Overall any insight would be helpful... I feel as I'm drowning in information, and while I'm usually pretty good about finding my way, this is one case where I'm just so lost as to how to proceed.
Thanks!
Here are a few screenshots of the Spotify player to give you a feel of what I'm looking to do. Mine looks a lot different, but 100% the same functionality.
Play screen
Lock screen