-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support ICY metadata #3735
Comments
My understanding is that on some versions of Android
(here are some relevant issues). This is unfortunately working as intended at the platform level, which is where the failure comes from, because ICY deviates from HTTP protocol. Does your solution do anything to address this issue, or does it just add metadata support where I think it's a great idea to provide support, but if we're to do so then I think we need a solution that works correctly across all devices. You might want to do this by implementing a solution that extends |
Well, OkHttp is quite popular in the Android community but it's also already part ot Android itself, hidden below HttpConnection (AFAIK). On the other hand, it adds a lot of additional size to any APK. This extension is more focussed on really parsing and returning the ICY metadata. At least there is now a place where people could contribute that previously had to be told it's beyond scope for exoplayer. |
As far as the ICY protocol is concerned, I think the So I'm somewhat unclear on where you would expect someone with the ICY 200 issue to submit a patch? If I've understood correctly, the extension you've provided will basically not work for ICY streams on some versions of Android, and I'm not aware of anything you can do at the application level to fix it. Except use a bundled network stack like OkHttp directly, so as to remove the dependency on the network stack under Please clarify. Thanks! |
What I meant is that the underlying implementation could still be changed given there are some more tests in place. It's nothing I'd do immediately though. |
The underlying implementation of what? Are you suggesting the solution is to patch KitKat devices at the platform level? That's not feasible in practice; many such devices are no longer receiving regular updates from the device OEMs and/or carriers. |
All I can say is that the implementation works for me on API level 19. Different Shoutcast server implementations do different things, the servers I care about work. My point was that if someone needs a library for shoutcast metadata but doesn't get it to work with the server he uses, I'd be more than happy to take patches to port to OkHttp. At the moment I just lack a reason to do it myself. More importantly, the idea of this issue is to have some list of third-party extensions that might be useful to Exoplayer users. |
I think we're interested in merging this in some form, possibly directly into the existing OkHttp extension as we'd like it to be based on It's fine if you don't want to spend time making changes yourself, but in order to look at merging we'd need you to contribute the extension in its current form by opening a pull request to our |
Sorry for the delay. I'll look into it. |
Any update into this? |
Not yet, but I didn't forget about it |
As requested in ExoPlayer issue 3735[0]. [0] google/ExoPlayer#3735
As requested in ExoPlayer issue 3735[0]. [0] google/ExoPlayer#3735
As requested in ExoPlayer issue 3735 [0]. Changes exoplayer dependencies to 'api' to ensure library users automatically get it. [0] google/ExoPlayer#3735
Porting to OkHttp is done, CLA is signed. I'll start a pull-request against |
It might be worth revisiting how this works, given we now have Are streams in this use case always in a particular format (e.g. mp3?), or can they be in multiple formats (e.g. aac)? Given that information, I can probably suggest an approach for evaluation. |
Based on the OkHttp extension. Resolves google#3735
@ojw28 I'm fine simplifying the code and therefore prepared a pull as you proposed. I don't think the stream format is really fixed but ICY isn't exactly a standard. It's more established practice with a couple well-known headers and a couple more obscure ones ;-) |
I've been taking a look at this! I've managed to take the change in the pull request and do most of the simplification work mentioned on top. Hopefully we'll be able to get it merged in sometime in the next week or two. |
We've merged a heavily modified version of the pull request into
In the demo app you'll see this metadata arriving in logcat. Header metadata arrives when the tracks become known at the start of playback:
Note that the ICY metadata track may or may not be present, depending on whether If the ICY metadata track is present, in-stream metadata arrives at its corresponding time:
The modified version parses known fields only ( Please give it a try and let us know how you get on. |
Hi,
there are plenty of (closed) issues asking for Shoutcast / ICY support. Since I had the same challenge I came up with an extension. It's in use already but I'd like to know if it makese sense to be mentioned in the extension directory or if there's interest in merging it into ExoPlayer's code-base. I guess it needs more documentation and tests but I'd be curious.
The text was updated successfully, but these errors were encountered: