androidx / media

Jetpack Media3 support libraries for media use cases, including ExoPlayer, an extensible media player for Android
https://developer.android.com/media/media3
Apache License 2.0
1.7k stars 406 forks source link

Fire TV - Google DAI ad playback errors on CMAF streams #1072

Open mictakim opened 9 months ago

mictakim commented 9 months ago

Version

Media3 1.2.1

More version details

No response

Devices that reproduce the issue

Fire TV

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Yes

Reproduction steps

  1. Set up a live stream that uses CMAF format and passes through Google DAI for ad insertion. Test stream: https://googleads.github.io/googleads-ima-html5-dai/vsi/
  2. Run live stream on a Fire TV demo app using Media3 1.2.1
  3. Observe playback failure when midroll CUE-OUT event is triggered

Expected result

Successful midroll playback and resume to content stream.

Actual result

Playback failure when midroll CUE-OUT event is triggered

GAM Support provided following error flag: androidx.media3.exoplayer.ExoPlaybackException: Source error ExoPlayerImplInternal: Playback error LoadTask: Unexpected exception loading stream

Media

Test app access to be provided via email.

Bug Report

marcbaechinger commented 9 months ago

Thanks for your report!

We can't start email conversation over android-media-github@google.com. That's a one way channel I'm afraid. Can you please provide us with the IMA assetKey for the live test stream?

Another step would be to create a bug report right after you have reproduced the failure, upload it here or send it by email using a subject in the format "Issue #1072". Please also update this issue to indicate you’ve done this.

If this is specific to a Fire TV device, it would probably be more difficult for us to help. Please provide us with a bug report in this case so we can see the entire log output and the exact device model.

marcbaechinger commented 9 months ago

When I play the live DAI stream from the assetKey or the HLS stream directly I see it fail for reasons of HTPP 404. Can you please check whether you see the same issues when playing the stream? If this is the case I think this isn't a player problem but the HLS playlist contains URIs that are not available.

I'd recommend using our demo app for testing, because then we both use the same app and can rule out problems in an app. You can edit/add a live HLS DAI entry in the media.exolist.json and then run the demo app. When I do this I see the 404s pasted below.

The error you reported above is about a failed LoadTask:

androidx.media3.exoplayer.ExoPlaybackException: Source error ExoPlayerImplInternal: Playback error LoadTask: Unexpected exception loading stream

This potentially matches to the 404 exceptions I see when playing the stream you sent us:

2024-02-08 10:54:44.071 20227-20227 EventLogger             androidx.media3.demo.main            
E  internalError [eventTime=26.09, mediaPos=65.74, window=0, loadError
    androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 404
        at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:630)
        at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
        at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:798)
        at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:611)
        at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
        at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
        at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
        at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:180)
        at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:418)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)
  ]
mictakim commented 7 months ago

Hey Marc -

Wanted to bump this as I don't recall whether I provided Google Ad Manager Support's findings. They are asserting there is a codec issue on the Media3 side - is there a known DAI playback issue?

Media3 Player playback errors on Fire TV

Our team was able to reproduce the error using one of our android test apps. The IMA SDK support team identified the root cause as a codec issue within the AndroidX Media3 ExoPlayer library. (ie:

androidx.media3.exoplayer.ExoPlaybackException: Source error ExoPlayerImplInternal: Playback error LoadTask: Unexpected exception loading stream

Unfortunately, this issue is outside our direct control (as ExoPlayer is maintained by a separate Google team) but to get this issue addressed by the right people, could you please file a bug using this link? https://github.com/google/ExoPlayer/issues

We will have a live stream available today starting around 2:00pm PST.

Here's the GAM IMA info: assetKey: Nf_XQHyLTK-ckL3GzbN3bA Stream URL: https://pubads.g.doubleclick.net/ssai/event/Nf_XQHyLTK-ckL3GzbN3bA/master.m3u8