Closed MizzleDK closed 7 years ago
Is there anything I can do to further help in the debugging process?
@MizzleDK - Thanks for the high quality report! Unfortunately this feels like something that will be quite hard to figure out, unless you're able to determine what's special about the samples that don't work vs the ones that do. Are you able to play the content successfully on (a) other AndroidTV devices, and (b) non-Android devices? If the content works on other AndroidTV devices that might imply a device specific issue.
@sureshcnvidia (from nVidia): Are you aware of any related issues, and/or would it be worthwhile someone at nVidia taking a look and seeing what's going on internally? Thanks!
Unfortunately, I haven't yet been able to find out what's special about the samples that work vs the ones that don't. I'm still working on it, though, hopefully I'll find something.
As far as I know, the non-working samples don't work on any Android TV devices. I've tested with both Nvidia Shield TV devices, Mi Box and various Sony TVs. What's curious, however, is that all samples work on Chromecast. It also works on our older Microsoft-based TV set top box and our web client, which - I believe - uses a player from castLabs.
Also, like I mentioned in the first post, I am actually able to get it to play using the trick where I disable / enable the tracks. It just doesn't work without that trick / hack.
I still haven't made any progress on finding out if the samples differ. I'm really baffled by this.
Does it make any sense to the ExoPlayer developers that I can make it work by disabling the audio and video tracks and then re-enable them one at a time?
Please let me know if you need updated video stream URL samples or if you need more.
Hi,
I have been off work and would be till this week.
Request to wait till Monday for me check the issue on SHIELD TV. BR, Suresh
Sent from my iPhone, Please excuse any typos.
On 16-May-2017, at 4:57 PM, Michell Bak notifications@github.com<mailto:notifications@github.com> wrote:
I still haven't made any progress on finding out if the samples differ. I'm really baffled by this.
Does it make any sense to the ExoPlayer developers that I can make it work by disabling the audio and video tracks and then re-enable them one at a time?
- You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/google/ExoPlayer/issues/2770#issuecomment-301753248, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AO4yBktGWLihJWOEWIz-o9njUH5qNJv9ks5r6YgagaJpZM4NQQsP.
That's perfectly fine, thank you!
Hi @MizzleDK would it be possible to share the link to test contents on my email id?
@sureshcnvidia Yes, I'll do that ASAP.
Actually, I've just tried again on a 2015 Android TV from Sony and all content works. Could this be a device specific issue on the Nvidia Shield @sureshcnvidia ?
Sounds like it indeed is a Nvidia Shield specific issue @MizzleDK Let me also validate on Nexus Player and get back on this.
I just tried on the Nexus Player as well (Android TV 7.1), and it works. Also tried on another Sony TV (with Android TV 5.1, whereas the other was running 6.0) and it also worked. Odd... I'd been getting reports of it not working on those devices, but it does.
Great, will debug and post more info on this shortly. Definitely Nvidia Shield specific then.
Thank you!
@MizzleDK @ojw28
Looking into the uniqueness of the samples, the reason why it was not working on Nvidia Shield is because the encrypted samples had all IV's zeroed out. Our PlayReady reference implementation had this restricted to avoid "replay" attacks (https://crypto.stackexchange.com/questions/8600/why-should-i-use-an-initialization-vector-iv-when-i-have-unique-keys ), and always liked salted IV's.
However, it was later realized that, if the keys are always different and do not repeat in CTR mode, having all zero IV is still secure enough. (https://crypto.stackexchange.com/questions/8151/counter-mode-static-iv-but-different-keys ). This issue has been fixed and the next OTA of Nvidia Shield would have this fixed.
That's awesome! Thanks for all your help. Looking forward to the OTA 👍
Thanks for the analysis @sureshcnvidia! I'll go ahead and close this, since it's not an ExoPlayer issue.
Issue description
I'm using the demo application with a set of custom HSS samples added to the
media.exolist.json
file. All samples are PlayReady protected, although the server currently doesn't authenticate and allows playback even if you only have the manifest URL and nothing else.The "Live" and "LLCU" samples work, but the "Movie" and "Catchup" ones don't. They both fail with a
ExoPlaybackException
/CodecException
.Using the demo player, I've found a way to get it working most of the time. Once it fails, I can disable both video and audio, press "Retry", wait for playbackState to be "ready" and then re-enable video and audio again one at a time. Not sure why it works (and not sure why it only works some of the time), but maybe it's useful information.
Reproduction steps
Add the custom samples and try them out. Hopefully they won't expire before you get a chance to test them.
Link to test content
Sent to dev.exoplayer@gmail.com with issue number in the subject line.
Version of ExoPlayer being used
r2.4.0
Device(s) and version(s) of Android being used
Nvidia Shield TV 2017 with Android TV 7.0 (Shield TV SW version 5.1)
A full bug report captured from the device
For the sake of people searching Google for a similar issue, I'm posting some of the adb logcat here:
Full bug report sent to dev.exoplayer@gmail.com with issue number in the subject line.