Comments (10)
Can you debug what happens here (and specifically if you see a non-null result from IcyHeaders.parse(...)
)?
If that's null, that would explain why you're not seeing ICY metadata bubbling out. If that's the case, you could try using CronetDataSource
, which the demo app does by default, in case that results in different behaviour?
If you're seeing a non-null result there then the ICY metadata must be getting lost later in the chain.
from media.
Just tested via debugger and the datasource is properly wrapped for Icy
I tested to remove Cronet in demo app too and it still works.
from media.
@icbaker any more hint about where I should look? Got frequent requests to support this.
from media.
Would you be able to provide steps we can use to reproduce (ideally a URL that repros the issue in the demo app) - that will likely be the quickest way to investigate what's going on here.
Please either post it here or send it to [email protected] with the subject Issue #989
. Please also update this issue to indicate you’ve done this.
from media.
This is the thing everything works in the demo app this is not tied to the url but to how the data bubble up and something I do with the extractors or the renderers or something on how I initialize ExoPlayer.
But I've just tried again to untangle the code and figured out, maybe there's room for some notes in the docs about metadata requiring a MetadataRenderer :(
I'm using a custom AudioOnlyRendererFactory
so as per most example I did not add the mandatory MetadataRenderer(metadataRendererOutput, eventHandler.looper)
that would collect the metadata and call the event.
I can't find any doc mentioning that, it would have probably helped me a little figuring out this, I certainly did not thought about checking that part for the callback in the listener.
from media.
If you attach an EventLogger
do you see the metadata track logged with supported=NO
? That would be an indication that you were missing a renderer for it: https://developer.android.com/media/media3/exoplayer/debug-logging
from media.
Yes it's present but just under there's
Metadata [
IcyHeaders: name="Drone Zone: Atmospheric ambient space music. Serve Best Chilled. Safe with most medications. [SomaFM]", genre="Techno Ambient Space", bitrate=256000, metadataInterval=16000
]
So I completely missed the group above since the data was in the log I assumed it was seen.
Anyway this is clearly an end user error but not that easy to figure out with current docs when searching about icy or metadata in it.
from media.
Glad you got it resolved! In general once apps start customising the available renderers it can get a bit fiddly.
I'm guessing (?) you followed the audioOnlyRenderersFactory
example here? https://developer.android.com/media/media3/exoplayer/shrinking#specify-renderers
I've just extended those docs with an explicit caveat that by removing a text and metadata rendererer you won't get subtitles or in-stream metadata like ICY - hopefully that helps someone in future :)
from media.
From the exoplayer page a very very very long time ago but yes the same context.
Thanks for the updated doc, not sure if it's tied to your last changes but the Kotlin examples for renderer and extractor are broken in that linked page.
from media.
Thank you for pointing that out! The markdown source for the page had the rest of the snippet, but it was being truncated at the first <
during rendering. The same problem affected lots of other media3 code snippets too - I just submitted a change that I think (hope) has fixed all of them. Please do let us know if you spot more broken code examples.
from media.
Related Issues (20)
- No documentation for how to use ProgressiveMediaSource HOT 2
- OOM probably due to bad file
- Playback speed doesn't work on some devices with Audio Offload Enabled HOT 2
- How to pass the tag in MediaItem to the customData of DataSpec?
- Android Auto Grid Layout with Media3 HOT 4
- Exoplayer.release did not free memory? Is it a Known issues??2.11.8 and 2.19.1
- Exoplayer does not resume once the Ad creative load is blocked via Charles HOT 3
- "Session ID must be unique. ID=" when building a session HOT 4
- Rename setShowPlayButtonIfPlaybackIsSuppressed in MediaSession.Builder
- Media3 exo player controls position in a horizontal tab HOT 1
- Controlls position in a horizontal orientation with RESIZE_MODE_FILL HOT 4
- Add charles/fiddler... proxy block when playing hls media
- Player does not upscale LL Stream once it get to lowest resolution HOT 6
- Video is cut on the edge when using Compose and uses RESIZE_MODE_ZOOM - Only Android 14 HOT 12
- [CMCD] Too many buffer starvation reports HOT 10
- Equalizer support
- ERROR_CODE_IO_UNSPECIFIED error on HLS stream HOT 11
- TTML subtitles - Opacity not compliant with TTML specification HOT 6
- [Transformer] Overlay rotation around the X and Y axles HOT 3
- How to set defaultPositionUs of a Window in the Timeline? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from media.