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

Video glitches in some devices with encrypted stream #1251

Open Achibana opened 7 months ago

Achibana commented 7 months ago

Version

Media3 main branch

More version details

No response

Devices that reproduce the issue

Samsung Galaxy Tab S3(SM-T825), Android 9 Samsung Galaxy Tab A7 Android 10 Huawei P30 lit Adroid 10 POCO M3 Pro 5G Android 13

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Yes

Reproduction steps

Play the Demo App's stream: Widevine DASH(MP4, H264) -> HD(cenc), HD(cbcs)

Expected result

The video plays smoothly like on most of the devices, or the clear stream.

Actual result

The video plays with glitches noticeable. The same stream play smoothly on most of other devices

Media

The public stream in the Demo App

Bug Report

Achibana commented 7 months ago

The same glitches happens with our stream so we checked the streams in the Demo App and they have the same issue.

rrfrias commented 7 months ago

Opened internal tracker 333604485. Checking to see if we have these devices and can reproduce.

Achibana commented 7 months ago

We found more devices got issue: Samsung Galaxy A42 5G, A41, Z Fold4, Tab A, A12, A21s, Huawei Mate 10 pro, P20 Pro, P40 pro. Oppo CPH 2185, Lenovo Tab M10 FHD plus. Thanks.

Achibana commented 6 months ago

It's more obvious by playing the 60 fps WV encrypted stream on the Demo App: { "name": "HD (MP4, H264, Widevine cenc)", "uri": "https://storage.googleapis.com/exoplayer-test-media-1/60fps/bbb-wv-1080/manifest.mpd", "drm_scheme": "widevine", "drm_license_uri": "https://proxy.uat.widevine.com/proxy?provider=widevine_test" }, almost half of the frames dropped. Thanks

rrfrias commented 6 months ago

Are you seeing the problem with newer launches from these same manufacturers? For example we are able to reproduce on a Galaxy A50 but not on a A03 running android 13

Achibana commented 6 months ago

We've seen this on Android 10, 11 and 13, so not sure if it's related with newer version or not. With same manufacturer, like Samsung, yes, it's very random for the model which is ok or non-ok. Did you see any clues in Galaxy A50 which can reproduce the issue? From the log we can only see there are frame drops but don't know why it happens.

rrfrias commented 6 months ago

Can you let us know which devices are running Android 13 that exhibit this issue

Achibana commented 6 months ago

Hi @rrfrias , we found several Android 13 devices may have the issue as it's reported from our end user: Nokia X30 5G, POCO M3 Pro 5G, Redmi Note 12 Pro 5G, Samsung Galaxy A12. Thanks

rrfrias commented 6 months ago

Thanks! Opened tracker for to follow up with Samsung (internal ref: 340937658]

Achibana commented 5 months ago

Hi @rrfrias , any news for this? More of our customers complain the video quality on their device. Many thanks.

rrfrias commented 5 months ago

We are waiting on Samsung to reproduce and get back to us.

Achibana commented 5 months ago

Thanks @rrfrias , may I ask if there is any feedback ? and if not would you mind to have a estimate date please? Best Regard.

Achibana commented 5 months ago

On our latest investigation, if we set the WV security level to L3, it seems resolving on most of the devices, but not all. we can't adapt this solution now but hope this helps the debugging.

rrfrias commented 4 months ago

Thanks for this information. Trying to get Samsung's attention.

Achibana commented 4 months ago

Thanks @rrfrias. Would be great appreciated if you can bring this to Widevine also.

rrfrias commented 3 months ago

Samsung was able to reproduce the issue. Our contacts have passed it to an internal team that are investigating. Will update when we know more.

rrfrias commented 2 months ago

We are still working with Samsung to investigate this issue.

rrfrias commented 2 months ago

From https://github.com/androidx/media/issues/1251#issuecomment-2098529063

It's more obvious by playing the 60 fps WV encrypted stream on the Demo App: { "name": "HD (MP4, H264, Widevine cenc)",

Samsung tested with 60fps cenc content with A50,A42,A41,A21s and A12. They were unable to reproduce except with A12. A12 does not support 1920X1080@60fps. You can use MediaCodecInfo#getCapabilitiesForType to determine what content the device is capable of playing back.

Achibana commented 2 months ago

Hi @rrfrias , thanks for the update. The MediaCodecInfo#getCapabilitiesForType can only detect with mimeType and codecs as Media3 uses. So the device can support all the codecs. How do we/client know it doesn't support 60 fps? Thanks

rrfrias commented 1 month ago

Can you try using MediaCodecInfo.CodecCapabilities.getVideoCapabilities().getAchievableFrameRatesFor() or MediaCodecInfo.VideoCapabilities#getSupportedPerformancePoints()

Achibana commented 1 month ago

Hi @rrfrias, thanks for the information. Yes, there are many APIs to get the fps info, but with out test, all the devices support up to 120 fps. It plays very smooth for 60 fps with clear stream, like in the Demo App, "60fps DASH" -> "HD(MP4, H264, Clear)", but the device couldn't play the encrypted one well. How should client to detect that? Thanks

rrfrias commented 1 week ago

One should be able to check frame rates and resolution that a given device may support for encrypted streams. If you are a Widevine Integration Partner you can ask about documentation related to resource rating tiers.

However it looks like we do not have conformance tests for OEMs to verify that they do indeed support advertised values. I have added an internal track to 376699762 to add these tests. This will likely be enforced for all android 16 devices. Unfortunately we cannot guaranteed behavior for earlier releases. Sorry about this.