google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.74k stars 6.03k forks source link

Intermittent playback failures with Xiaomi devices on OS 12 #10162

Open BucherTomas opened 2 years ago

BucherTomas commented 2 years ago

Hello,

this is rather a question since we are unable to provide adb bugreport for deeper analysis.

The last few weeks we have been noticing in our analytics tool the following error from Xiaomi devices newly upgraded to the new OS 12.

android.media.MediaCodec.CryptoException - OK: OK
============================== Beginning of DRM Plugin Log ==============================
03-27 10:31:08.963 I found instance=clearkey version=android.hardware.drm@1.3::IDrmFactory
03-27 10:31:08.963 I found instance=widevine version=android.hardware.drm@1.3::IDrmFactory
03-27 10:31:13.091 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
03-27 10:42:58.402 W Cannot cast android.hardware.drm@1.0::ICryptoPlugin obj to android.hardware.drm@1.4::ICryptoPlugin plugin
============================== End of DRM Plugin Log ==============================

There is nothing in Crashlytics, though and no other brand is so far exhibiting the same issue with OS 12, only Xiaomi.

This is randomly occuring after some playback time of encrypted content without with player still in focus. It is happening with different content that other devices have no issues with, the Widevine license does not explicitly restrict anything.

Here it took a couple of minutes, the time 10:42:58 is when the session stopped with an error. From what we can ascertain, it concerns only OS 12, there are no reports of similar behavior from OS 11, the sent error message or stack itself would be of course different as this syntax is available since OS 12 but there is still nothing like that and users did not report anything with older OS versions and now they do with OS 12.

We are still running ExoPlayer 2.13.1 and although I can see that there were some compatibility enhancements with OS 12 in later revisions, there does not appear to be anything related to this particular issue.

Questions taking into account that there is not much to go on from the error message:

  1. Would upgrading ExoPlayer have a positive effect?
  2. What does OK mean in the first line of the exception?
  3. Is there any way you would be able to consult this with Xiaomi developers? Maybe they are already aware of something.

Thank you.

ojw28 commented 2 years ago

Is that even an error message? It's unclear to me. The first line references CryptoException but does not indicate conclusively that one was actually thrown. Then there are two informational lines that look correct (they say that the clearkey and widevine CDMs exist on the device). Then there are two warnings lines, but it's unclear whether they cause the failure. They do possibly imply some kind of version mismatch. @rrfrias - do these lines look problematic to you?

@BucherTomas - When you say playback is "stopping with an error", does that mean that the playback is failing, and therefore that Player.Listener.onPlayerError is being called? If so, what's the full stack trace of the exception that's passed to that callback (including its cause)? That would be a much clearer starting point. If you're able to reproduce this locally, please also capture a full bugreport with adb bugreport immediately after reproducing the issue, email it to dev.exoplayer@gmail.com referencing Issue #10162 in the subject line, and update this issue to indicate that you've done this. Thanks!

BucherTomas commented 2 years ago

Thank you.

We have integrated Mux Data analytics module for ExoPlayer for error reporting (that is where we got the error message from) and we cannot conclusively state whether it leverages Player.Listener.onPlayerError or not. But as the same module is able to report regular looking errors, it would seem that it does and I assume that this is what is being fed as DRM error in this instance from Android 12 to the Mux module as originated from here https://android.googlesource.com/platform/frameworks/av/+/master/drm/libmediadrm/DrmUtils.cpp#327.

We do not currently have any Xiaomi with OS 12 on our hands and hence cannot reproduce the failure ourselves, so we are unfortunately unable to provide adb bugreport. I am aware that this is crucial for deeper debugging, but this how it is now. That is why I posted it as a question for now. We can attempt to obtain such device but it might take a while.

rrfrias commented 2 years ago

When you see these exceptions from a Xiaomi running android 12 do you always see this exception? While it is possible, given the structure of the code, it is unexpected. I would have expected a specific error.

android.media.MediaCodec.CryptoException - OK: OK

BucherTomas commented 2 years ago

@rrfrias The message with android.media.MediaCodec.CryptoException - OK: OK is there always when the issue occurs and playback stops. For subsequent playback attempts the affected device might additionally throw also

android.media.MediaDrm$MediaDrmStateException: Failed to open session: ERROR_DRM_UNKNOWN ============================== Beginning of DRM Plugin Log ============================== 05-03 22:37:24.216 I found instance=clearkey version=android.hardware.drm@1.3::IDrmFactory 05-03 22:37:24.216 I found instance=widevine version=android.hardware.drm@1.3::IDrmFactory 05-03 23:17:34.348 W Cannot cast android.hardware.drm@1.0::ICryptoPlugin obj to android.hardware.drm@1.4::ICryptoPlugin plugin 05-03 23:17:53.948 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin ============================== End of DRM Plugin Log ==============================

and it appears that the device is then blocked from playback until it is restarted. But this follow-up error is not always present. Nothing else, i.e. more details, is reported.

rrfrias commented 2 years ago

This appears to be ERROR_DRM_UNKNOWN as well. This is an internal error code translation error that we will address.

android.media.MediaCodec.CryptoException - OK: OK

@ojw28, can you share information to log drm metrics information , which should help us get at the root cause?

rrfrias commented 2 years ago

Might it be possible when you get a android.media.MediaCodec.CryptoException to add a call to MediaDrm.getMetrics().toString() to your code. If you can get us metrics information, it will help us debug this furthur.

BucherTomas commented 2 years ago

Thank you, we are implementing something utilizing your suggestion.

It might take a couple of weeks before the app version is distributed to end users and we get some data for you, so please do not autoclose the ticket in the meantime.

rrfrias commented 2 years ago

Thanks @BucherTomas . Will wait and keep it open till you have more information.

google-oss-bot commented 2 years ago

Hey @BucherTomas. We need more information to resolve this issue but there hasn't been an update in 14 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

BucherTomas commented 2 years ago

Still working on this...

google-oss-bot commented 2 years ago

Hey @BucherTomas. We need more information to resolve this issue but there hasn't been an update in 14 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

BucherTomas commented 2 years ago

We are just about to release app version with enhanced logging that should provide the required info for you. Once we have something, it will be shared here.

BucherTomas commented 2 years ago

We have started gathering some logs from end-users based on the provided instructions in https://github.com/google/ExoPlayer/issues/10162#issuecomment-1127218050 but it does not appear to provide anything meaningful. It simply returns the bundle size as in "PersistableBundle[mParcelledData.dataSize=18828]".

When consulting with our devs, they think that @rrfrias may have meant to get the result of https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/PersistableBundle.java#347. Would that be correct?

BucherTomas commented 2 years ago

May I please get a response to my previous question? Thank you.

rrfrias commented 2 years ago

It simply returns the bundle size as in "PersistableBundle[mParcelledData.dataSize=18828]"

Sorry I gave you bad advice. Since the bundle is still parceled toString() will just print the size but not data. One option is to use MediaDrm.getMetrics().writeToStream() but that is rather verbose.

A preferable change is to use MediaDrm.getPropertyByteArray("metrics") . This returns a byte[] so you might need to convert it to a Base64 encoded string before you share with us (Base64.getEncoder().encodeToString(bytes)) .

Apologies for having to roll another update. It might also be better to try to playback some content on a test device, then share the metrics data with us to make sure it looks good before you can push out the app update.

BucherTomas commented 2 years ago

Thanks, this is an example of what we are getting now after the conversion to Base64. Is this correct?

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

rrfrias commented 2 years ago

Thanks, this is helpful. What is the model of this Xiaomi device? I am not seeing any errors similar to MediaDrmStateException (ERROR_DRM_UNKNOWN). Can you share a few more if you have access to them? You can email them to dev.exoplayer@gmail.com referencing Issue #10162 in the subject line.

Internal ref: 256929910

BucherTomas commented 2 years ago

@rrfrias The shared data was just to confirm that we are now getting what you need. It was not from a Xiaomi device and it was not captured during the issue we are discussing here. For that we need to publish the app again and wait for the logs to be collected from our users. Then I will share them with you.

rrfrias commented 2 years ago

Understood. Thanks!

rrfrias commented 2 years ago

I managed to get a Xiaomi device running Android OS 12. I can try to repro, if you can share repro steps, test URL etc by mailing dev.exoplayer@gmail.com with Issue #10162 in the subject line.

BucherTomas commented 2 years ago

@rrfrias Thank you, the email has been sent with some additional details.

hokar commented 2 years ago

I'm facing a similar error. In my case, the following stack trace is displayed on Galaxy S10 and playback fails.

Non-fatal Exception: com.google.android.exoplayer2.ExoPlaybackException: Source error
       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:641)
       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:595)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by com.google.android.exoplayer2.drm.DrmSession$DrmSessionException: android.media.MediaDrm$MediaDrmStateException: Failed to get key request: ERROR_DRM_UNKNOWN
============================== Beginning of DRM Plugin Log ==============================
  10-27 09:54:14.531 I found instance=clearkey version=android.hardware.drm@1.3::IDrmFactory
  10-27 09:54:14.531 I found instance=widevine version=android.hardware.drm@1.3::IDrmFactory
  10-27 09:54:15.489 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:15.977 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:21.753 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:26.966 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:35.376 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:42.083 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:55:16.247 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:08.636 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:17.351 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:43.997 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:54.288 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:56.608 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:58:25.804 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
============================== End of DRM Plugin Log ============================<truncated: 2 chars>
       at com.google.android.exoplayer2.drm.DefaultDrmSession.onError(DefaultDrmSession.java:544)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeysError(DefaultDrmSession.java:534)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.postKeyRequest(DefaultDrmSession.java:485)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.doLicense(DefaultDrmSession.java:425)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.acquire(DefaultDrmSession.java:315)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.createAndAcquireSession(DefaultDrmSessionManager.java:790)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.createAndAcquireSessionWithRetry(DefaultDrmSessionManager.java:690)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:573)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:519)
       at com.google.android.exoplayer2.source.SampleQueue.onFormatResult(SampleQueue.java:926)
       at com.google.android.exoplayer2.source.SampleQueue.peekSampleMetadata(SampleQueue.java:697)
       at com.google.android.exoplayer2.source.SampleQueue.read(SampleQueue.java:423)
       at com.google.android.exoplayer2.source.chunk.ChunkSampleStream.readData(ChunkSampleStream.java:392)
       at com.google.android.exoplayer2.BaseRenderer.readSource(BaseRenderer.java:425)
       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:948)
       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:779)
       at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998)
       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by android.media.MediaDrm$MediaDrmStateException: Failed to get key request: ERROR_DRM_UNKNOWN
============================== Beginning of DRM Plugin Log ==============================
  10-27 09:54:14.531 I found instance=clearkey version=android.hardware.drm@1.3::IDrmFactory
  10-27 09:54:14.531 I found instance=widevine version=android.hardware.drm@1.3::IDrmFactory
  10-27 09:54:15.489 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:15.977 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:21.753 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:26.966 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:35.376 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:54:42.083 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:55:16.247 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:08.636 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:17.351 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:43.997 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:54.288 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:57:56.608 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
  10-27 09:58:25.804 W Cannot cast android.hardware.drm@1.0::IDrmPlugin obj to android.hardware.drm@1.4::IDrmPlugin plugin
============================== End of DRM Plugin Log ==============================
       at android.media.MediaDrm.getKeyRequestNative(MediaDrm.java)
       at android.media.MediaDrm.getKeyRequest(MediaDrm.java:1580)
       at com.google.android.exoplayer2.drm.FrameworkMediaDrm.getKeyRequest(FrameworkMediaDrm.java:214)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.postKeyRequest(DefaultDrmSession.java:481)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.doLicense(DefaultDrmSession.java:425)
       at com.google.android.exoplayer2.drm.DefaultDrmSession.acquire(DefaultDrmSession.java:315)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.createAndAcquireSession(DefaultDrmSessionManager.java:790)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.createAndAcquireSessionWithRetry(DefaultDrmSessionManager.java:690)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:573)
       at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:519)
       at com.google.android.exoplayer2.source.SampleQueue.onFormatResult(SampleQueue.java:926)
       at com.google.android.exoplayer2.source.SampleQueue.peekSampleMetadata(SampleQueue.java:697)
       at com.google.android.exoplayer2.source.SampleQueue.read(SampleQueue.java:423)
       at com.google.android.exoplayer2.source.chunk.ChunkSampleStream.readData(ChunkSampleStream.java:392)
       at com.google.android.exoplayer2.BaseRenderer.readSource(BaseRenderer.java:425)
       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:948)
       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:779)
       at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998)
       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.os.HandlerThread.run(HandlerThread.java:67)

[Additional info]

rrfrias commented 1 year ago

@hokar This is a different issue. Can you open a new github tracker? The stack trace is useful but in this case not conclusive. Might it be possible to capture metric information as mentioned here https://github.com/google/ExoPlayer/issues/10162#issuecomment-1284616207 or share a bugreport.

hokar commented 1 year ago

@rrfrias Thank you for your reply. I got it. I will post an issue.

google-oss-bot commented 1 year ago

Hey @BucherTomas. We need more information to resolve this issue but there hasn't been an update in 14 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

BucherTomas commented 1 year ago

This is just to keep the ticket open.

The deployment of app production version gathering the required info is still ahead of us. This is in the hands of our customer, so we cannot make it any faster.

rrfrias commented 1 year ago

Let us know whenever you have more information.

rrfrias commented 1 year ago

We received a bugreport emailed to dev.exoplayer@gmail.com with subject line Issue #10162 a week back. HD1903 (OnePlus7T_EEA-RKQ1.201022.002). This is very helpful. Can you reply and give us approval to share this with Qualcomm+OnePlus to investigate furthur?

BucherTomas commented 1 year ago

@rrfrias That mentioned bugreport was not provided by me as original reporter of this ticket. It must have been sent by somebody else. We are attempting to solve issues with Xiaomi devices here while the bugreport was for another vendor.

Unless the responsible person for the bugreport expresses their disapproval here soon, I'd say go for it.

rrfrias commented 1 year ago

On second inspection, the failure is a different issue. @BucherTomas please share whenever you have more information.

BucherTomas commented 1 year ago

@rrfrias Our customer has just deployed the new player version with this debugging info enabled. We are actively monitoring the logs so that we can provide details as soon as possible. It is still a bit hit and miss to run into the issue, so hopefully it is not going to take long.

BucherTomas commented 1 year ago

@rrfrias just an update on current state of things.

We have two larger customers that we log for the purpose of this ticket. The one who recently deployed their app with correct MediaDrm.getMetrics() contents has strangely no record of this issue occuring for the last two weeks. Granted, they generate less DRM traffic, so there is also less chances to run into the issue. So we're still monitoring here. The second customer with larger amounts of DRM traffic where we are still seeing the issue with android.media.MediaCodec.CryptoException - OK: OK message to this day has still not deployed their own app with updated logging, so unfortunately I can't provide logs from their app yet.

rrfrias commented 1 year ago

Thanks for the update. Let us know whenever you do get information.

BucherTomas commented 1 year ago

We have finally managed to gather some logs. Sent to your dev email.

rrfrias commented 1 year ago

@BucherTomas, did you send it with subject line Issue https://github.com/google/ExoPlayer/issues/10162? The last email i see from you is on November 16th 2022.

BucherTomas commented 1 year ago

@rrfrias Absolutely, the mail has been sent on Feb 28, 12:03 UTC with subject line Issue #10162. I can resend it again if needed.

rrfrias commented 1 year ago

Can you please resend? I do not see it.

BucherTomas commented 1 year ago

@rrfrias Done.

rrfrias commented 1 year ago

This is quite odd. I do not see any recent messages to dev.exoplayer@gmail.com with 10162 in the subject line. I have also checked messages from your email address and the last one i see is the one sent here on November 16th 2022

BucherTomas commented 1 year ago

@rrfrias Not sure what's the problem here. Anyway, to prevent further sharing problems, the captured logs are attached here. mediaDrmMetrics.txt

rrfrias commented 1 year ago

Thanks! The metrics are helpful. We are analyzing the data.

rrfrias commented 1 year ago

Following up with Xiaomi (internal tracker: 282994386)

BucherTomas commented 1 year ago

Has there been any response from Xiaomi to the report? We are still seeing the same issue half a year later. Thanks.

rrfrias commented 6 months ago

Xiaomi needs more information to help investigate including device side logs, bugreports etc. I understand it might be hard to gather this information from customers. We are going to reach out to Qualcomm who is the SoC provider. Internal link: 341533800