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.56k stars 373 forks source link

androidx.media3.exoplayer.hls.SampleQueueMappingException on DRM Content specific on HiSense HiSmart 2K TV #1614

Closed JosephSanjaya closed 4 days ago

JosephSanjaya commented 1 month ago

Version

Media3 1.3.1

More version details

No response

Devices that reproduce the issue

HiSense HiSmart 2K TV

Devices that do not reproduce the issue

On Other android TV

Reproducible in the demo app?

No

Reproduction steps

  1. Has HiSense Smart TV
  2. Play DRM Content

Expected result

The media play successfully

Actual result

Playback crashes with stacktraces:

Exception: androidx.media3.exoplayer.hls.SampleQueueMappingException: Unable to bind a sample queue to TrackGroup with MIME type video/avc.
       at androidx.media3.exoplayer.hls.SampleQueueMappingException.<init>(SampleQueueMappingException.java:32)
       at androidx.media3.exoplayer.hls.HlsSampleStream.maybeThrowError(HlsSampleStream.java:62)
       at androidx.media3.exoplayer.BaseRenderer.maybeThrowStreamError(BaseRenderer.java:182)
       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1125)
       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:544)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:223)
       at android.os.HandlerThread.run(HandlerThread.java:67)

Media

Not applicable

Bug Report

icbaker commented 1 month ago

I can't find a SampleQueueMappingException in the provided BR. The only ExoPlayer error I can see happened when the player was already being released:

08-13 16:35:04.333 10029 19897 19897 E EventLogger: playerFailed [eventTime=2498.55, mediaPos=734.01, window=0, period=0, errorCode=ERROR_CODE_TIMEOUT
08-13 16:35:04.333 10029 19897 19897 E EventLogger:   androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.exoplayer.ExoPlayerImpl.lambda$release$5(ExoPlayerImpl.java:1070)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda9.invoke(D8$$SyntheticClass:0)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.common.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:339)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.common.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:223)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.common.util.ListenerSet.flushEvents(ListenerSet.java:245)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.common.util.ListenerSet.sendEvent(ListenerSet.java:260)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.exoplayer.ExoPlayerImpl.release(ExoPlayerImpl.java:1066)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.demo.main.PlayerActivity.releasePlayer(PlayerActivity.java:390)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.demo.main.PlayerActivity.onStop(PlayerActivity.java:182)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1476)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.Activity.performStop(Activity.java:8215)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:4850)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4829)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4903)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:40)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.os.Handler.dispatchMessage(Handler.java:106)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.os.Looper.loop(Looper.java:223)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at android.app.ActivityThread.main(ActivityThread.java:7656)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at java.lang.reflect.Method.invoke(Native Method)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:   Caused by: androidx.media3.exoplayer.ExoTimeoutException: Player release timed out.
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       at androidx.media3.exoplayer.ExoPlayerImpl.lambda$release$5(ExoPlayerImpl.java:1069)
08-13 16:35:04.333 10029 19897 19897 E EventLogger:       ... 24 more
08-13 16:35:04.333 10029 19897 19897 E EventLogger: ]

Please provide a BR that contains the described exception.

JosephSanjaya commented 1 month ago

that's weird. okay let me resend the BR later.

Thanks for response

JosephSanjaya commented 3 weeks ago

I'm already resend the bug report, sorry for the inconveniences.

Thanks

JosephSanjaya commented 2 weeks ago

is there any update regarding this issue?

JonWatson commented 2 weeks ago

We are having a similar issue. Our Video provider can produce both DASH and HLS. Dash play without issue but the HLS (also DRMed) content receives this same error. On both 1.3.0 and 1.4.0.

2024-08-29 12:12:36.118 18055-18055 EventLogger                                                     timeline [eventTime=48.76, mediaPos=0.00, window=0, periodCount=1, windowCount=1, reason=PLAYLIST_CHANGED
2024-08-29 12:12:36.118 18055-18055 EventLogger             <package>             D    period [?]
2024-08-29 12:12:36.118 18055-18055 EventLogger             <package>             D    window [?, seekable=false, dynamic=true]
2024-08-29 12:12:36.118 18055-18055 EventLogger             <package>             D  ]
2024-08-29 12:12:36.144 18055-18055 EventLogger             <package>             D  mediaItem [eventTime=48.79, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
2024-08-29 12:12:36.148 18055-18055 EventLogger             <package>             D  state [eventTime=48.79, mediaPos=0.00, window=0, BUFFERING]
2024-08-29 12:12:36.149 18055-18096 DrmHalHidl              <package>             I  No hidl drm factories found
2024-08-29 12:12:36.149 18055-18096 DrmHalHidl              <package>             E  Failed to find passthrough drm factories
2024-08-29 12:12:36.150 18055-18096 DrmUtils                <package>             I  found IDrmFactory. Instance name:[android.hardware.drm.IDrmFactory/clearkey]
2024-08-29 12:12:36.151 18055-18096 DrmUtils                <package>             I  found IDrmFactory. Instance name:[android.hardware.drm.IDrmFactory/widevine]
2024-08-29 12:12:36.168 18055-18055 EventLogger             <package>             D  loading [eventTime=48.81, mediaPos=0.00, window=0, period=0, true]
2024-08-29 12:12:36.364 18055-18055 EventLogger             <package>             D  timeline [eventTime=49.01, mediaPos=728.01, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
2024-08-29 12:12:36.364 18055-18055 EventLogger             <package>             D    period [?]
2024-08-29 12:12:36.364 18055-18055 EventLogger             <package>             D    window [752.03, seekable=true, dynamic=true]
2024-08-29 12:12:36.364 18055-18055 EventLogger             <package>             D  ]
2024-08-29 12:12:36.372 18055-18055 EventLogger             <package>             D  videoEnabled [eventTime=49.02, mediaPos=728.01, window=0, period=0]
2024-08-29 12:12:36.373 18055-18055 EventLogger             <package>             D  audioEnabled [eventTime=49.02, mediaPos=728.01, window=0, period=0]
2024-08-29 12:12:36.374 18055-18055 EventLogger             <package>             D  tracks [eventTime=49.02, mediaPos=728.01, window=0, period=0
2024-08-29 12:12:36.374 18055-18055 EventLogger             <package>             D    group [
2024-08-29 12:12:36.374 18055-18055 EventLogger             <package>             D      [X] Track:0, id=0, mimeType=video/avc, container=application/x-mpegURL, bitrate=2861313, codecs=avc1.4D4029, res=1024x576, fps=59.94, supported=YES
2024-08-29 12:12:36.374 18055-18055 EventLogger             <package>             D      [X] Track:1, id=1, mimeType=video/avc, container=application/x-mpegURL, bitrate=401313, codecs=avc1.4D401E, res=256x144, fps=59.94, supported=YES
2024-08-29 12:12:36.374 18055-18055 EventLogger             <package>             D      [X] Track:2, id=2, mimeType=video/avc, container=application/x-mpegURL, bitrate=521313, codecs=avc1.4D401E, res=384x216, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:3, id=3, mimeType=video/avc, container=application/x-mpegURL, bitrate=701313, codecs=avc1.4D401E, res=384x216, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:4, id=4, mimeType=video/avc, container=application/x-mpegURL, bitrate=941313, codecs=avc1.4D401E, res=512x288, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:5, id=5, mimeType=video/avc, container=application/x-mpegURL, bitrate=1361313, codecs=avc1.4D401F, res=640x360, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:6, id=6, mimeType=video/avc, container=application/x-mpegURL, bitrate=1901313, codecs=avc1.4D4020, res=768x432, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:7, id=7, mimeType=video/avc, container=application/x-mpegURL, bitrate=4361313, codecs=avc1.4D4029, res=1280x720, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:8, id=8, mimeType=video/avc, container=application/x-mpegURL, bitrate=5921313, codecs=avc1.640029, res=1280x720, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:9, id=9, mimeType=video/avc, container=application/x-mpegURL, bitrate=7421313, codecs=avc1.640029, res=1280x720, fps=59.94, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    ]
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    group [
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:0, id=0, mimeType=audio/mp4a-latm, container=application/x-mpegURL, codecs=mp4a.40.2, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    ]
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    group [
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:0, id=subs_wvtt:caption_1, mimeType=application/x-media3-cues, container=application/x-mpegURL, codecs=text/vtt, language=en, labels=[androidx.media3.common.Label@caa7cb91], selectionFlags=[auto,default], supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    ]
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    group [
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      [X] Track:0, id=ID3, mimeType=application/id3, supported=YES
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    ]
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    Metadata [
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D      HlsTrackMetadataEntry
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D    ]
2024-08-29 12:12:36.375 18055-18055 EventLogger             <package>             D  ]
2024-08-29 12:12:36.375 18055-18055 CVMediaExo...erListener <package>             D  setLanguage: is called but either Key is empty or Client is Null
2024-08-29 12:12:36.376 18055-18246 TrafficStats            <package>             D  tagSocket(5) with statsTag=0xffffffff, statsUid=-1
2024-08-29 12:12:36.824 18055-18096 ExoPlayerImplInternal   <package>             E  Playback error
                                                                                                      androidx.media3.exoplayer.ExoPlaybackException: Source error
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:736)
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:712)
                                                                                                          at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                                                          at android.os.Looper.loopOnce(Looper.java:232)
                                                                                                          at android.os.Looper.loop(Looper.java:317)
                                                                                                          at android.os.HandlerThread.run(HandlerThread.java:85)
                                                                                                      Caused by: androidx.media3.exoplayer.hls.SampleQueueMappingException: Unable to bind a sample queue to TrackGroup with MIME type video/avc.
                                                                                                          at androidx.media3.exoplayer.hls.HlsSampleStream.maybeThrowError(HlsSampleStream.java:62)
                                                                                                          at androidx.media3.exoplayer.BaseRenderer.maybeThrowStreamError(BaseRenderer.java:182)
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1149)
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
                                                                                                          at android.os.Handler.dispatchMessage(Handler.java:103) 
                                                                                                          at android.os.Looper.loopOnce(Looper.java:232) 
                                                                                                          at android.os.Looper.loop(Looper.java:317) 
                                                                                                          at android.os.HandlerThread.run(HandlerThread.java:85) 
2024-08-29 12:12:36.828 18055-18055 EventLogger             <package>             D  videoDisabled [eventTime=49.47, mediaPos=728.01, window=0, period=0]
2024-08-29 12:12:36.829 18055-18055 EventLogger             <package>             D  videoSize [eventTime=49.48, mediaPos=728.01, window=0, period=0, 0, 0]
2024-08-29 12:12:36.830 18055-18055 EventLogger             <package>             D  audioDisabled [eventTime=49.48, mediaPos=728.01, window=0, period=0]
2024-08-29 12:12:36.832 18055-18055 EventLogger             <package>             D  timeline [eventTime=49.48, mediaPos=728.01, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
2024-08-29 12:12:36.833 18055-18055 EventLogger             <package>             D    period [?]
2024-08-29 12:12:36.833 18055-18055 EventLogger             <package>             D    window [752.03, seekable=true, dynamic=true]
2024-08-29 12:12:36.833 18055-18055 EventLogger             <package>             D  ]
2024-08-29 12:12:36.836 18055-18055 EventLogger             <package>             E  playerFailed [eventTime=49.48, mediaPos=728.01, window=0, period=0, errorCode=ERROR_CODE_IO_UNSPECIFIED
                                                                                                      androidx.media3.exoplayer.ExoPlaybackException: Source error
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:736)
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:712)
                                                                                                          at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                                                          at android.os.Looper.loopOnce(Looper.java:232)
                                                                                                          at android.os.Looper.loop(Looper.java:317)
                                                                                                          at android.os.HandlerThread.run(HandlerThread.java:85)
                                                                                                      Caused by: androidx.media3.exoplayer.hls.SampleQueueMappingException: Unable to bind a sample queue to TrackGroup with MIME type video/avc.
                                                                                                          at androidx.media3.exoplayer.hls.HlsSampleStream.maybeThrowError(HlsSampleStream.java:62)
                                                                                                          at androidx.media3.exoplayer.BaseRenderer.maybeThrowStreamError(BaseRenderer.java:182)
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1149)
                                                                                                          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
                                                                                                          at android.os.Handler.dispatchMessage(Handler.java:103) 
                                                                                                          at android.os.Looper.loopOnce(Looper.java:232) 
                                                                                                          at android.os.Looper.loop(Looper.java:317) 
                                                                                                          at android.os.HandlerThread.run(HandlerThread.java:85) 
                                                                                                    ]
tianyif commented 1 week ago

Hi @JosephSanjaya,

Could you please provide the stream that has this issue? Not sure it is similar to https://github.com/androidx/media/issues/1675 as you said there are devices that cannot reproduce this, so might be due to some other reasons.

JosephSanjaya commented 1 week ago

Hello @tianyif, thanks for response already send the video and token thorugh email

JosephSanjaya commented 4 days ago

We have resolved the issue internally. The root cause was identified as the TV’s inability to load video streams using HLS with PlayFair.

To address this, we have transitioned the streaming feed to utilize DASH with Widevine, ensuring compatibility.