Giter Site home page Giter Site logo

Comments (10)

icbaker avatar icbaker commented on July 20, 2024

Can you debug what happens here (and specifically if you see a non-null result from IcyHeaders.parse(...))?

icyHeaders = IcyHeaders.parse(dataSource.getResponseHeaders());
DataSource extractorDataSource = dataSource;
if (icyHeaders != null && icyHeaders.metadataInterval != C.LENGTH_UNSET) {
extractorDataSource = new IcyDataSource(dataSource, icyHeaders.metadataInterval, this);
icyTrackOutput = icyTrack();
icyTrackOutput.format(ICY_FORMAT);
}

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.

Tolriq avatar Tolriq commented on July 20, 2024

Just tested via debugger and the datasource is properly wrapped for Icy

image

I tested to remove Cronet in demo app too and it still works.

from media.

Tolriq avatar Tolriq commented on July 20, 2024

@icbaker any more hint about where I should look? Got frequent requests to support this.

from media.

icbaker avatar icbaker commented on July 20, 2024

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.

Tolriq avatar Tolriq commented on July 20, 2024

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.

icbaker avatar icbaker commented on July 20, 2024

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.

Tolriq avatar Tolriq commented on July 20, 2024

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.

icbaker avatar icbaker commented on July 20, 2024

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.

Tolriq avatar Tolriq commented on July 20, 2024

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.

icbaker avatar icbaker commented on July 20, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.