Closed Bug 1316573 Opened 8 years ago Closed 8 years ago

video element not play mp4 file after playing widevine drm video

Categories

(Core :: Audio/Video: Playback, defect, P1)

49 Branch
defect

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox53 --- fixed

People

(Reporter: sh84, Assigned: kikuo)

Details

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0 Build ID: 20161025170400 Steps to reproduce: First play widevine drm with dash.js - everything is fine. After that try to play any mp4 video - it does not work. http://jsbin.com/xigebamupa/1/edit?html,output - demo, mp4 runs on 5-th second.
Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core
To save the folks at Mozilla some time, can you try to reproduce with Shaka Player? http://shaka-player-demo.appspot.com/ If you can't reproduce in Shaka Player, it might be a bug in dash.js rather than in Firefox.
We see the exact same issue in our player (https://bitmovin.com/html5-player/). Playback of progressive content throws a MEDIA_ERR_DECODE if a DRM protected source has been played back earlier using the same video element. Interestingly, playing back DASH content afterwards works perfectly.
So going from EME+MSE to src= fails, but from EME+MSE to just MSE works?
EME+MSE works EME+MSE > src fails EME+MSE > MSE > src fails EME+MSE > MSE > ... > MSE > src fails
I've uploaded a test page where you can reproduce this issue with our Bitmovin Player, Shaka and dash.js. http://bitmovin.com/public-demos/1316573/
Can you look into this one?
Flags: needinfo?(jyavenard)
Priority: -- → P1
I have some spare time now and I can look into it.
It seems that the value of HTMLMediaElement.mPendingEncryptedInitData.mIsEncrypted is still true when switches from WIDEVINE PROTECTED DASH to PROGRASSIVE. That would result to an error [2]. [1] http://searchfox.org/mozilla-central/rev/8144fcc62054e278fe5db9666815cc13188c96fa/dom/media/MediaInfo.h#401 [2] http://searchfox.org/mozilla-central/rev/8144fcc62054e278fe5db9666815cc13188c96fa/dom/html/HTMLMediaElement.cpp#5081-5086 I'll dig further and provide a fix later, because what I've tried only solves the case for BITMOVIN PLAYER.
Assignee: nobody → kikuo
Flags: needinfo?(jyavenard)
Comment on attachment 8825418 [details] Bug 1316573 - Reset the information in EncryptionInfo to make MediaElement reusable from encrypted content to plain content. https://reviewboard.mozilla.org/r/103584/#review104198 EncryptionInfo.mEncrypted should be reset when its mInitDatas array is cleared. That should be enough for this bug. Try run looks good (Mochitest-media only). https://treeherder.mozilla.org/#/jobs?repo=try&revision=331eaf5927de9b160c67b2af13aa946bc21ea7e3&selectedJob=67635485 I found another issue here. The mp4 file also stops playback when the source is switched from DASH to PROGRESSIVE via DASH.js. The reason is that somehow HTMLMediaElement.SetPlaybackRate(0.0) is called. (Can be reproduced on Chrome too)
Attachment #8825418 - Flags: review?(jyavenard)
Try run with mochitest-media & all web-platform-tests, https://treeherder.mozilla.org/#/jobs?repo=try&revision=f7c3d739d98153b5b172d7102ab42af7b6264e77 Looks good.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment on attachment 8825418 [details] Bug 1316573 - Reset the information in EncryptionInfo to make MediaElement reusable from encrypted content to plain content. https://reviewboard.mozilla.org/r/103584/#review104740 I would change the commit message to something more explict, such as allow reusing media element with unencrypted content ::: dom/media/mediasource/TrackBuffersManager.cpp:1096 (Diff revision 1) > crypto->mInitDatas[i].mType)); > } > info.mCrypto = *crypto; > // We clear our crypto init data array, so the MediaFormatReader will > // not emit an encrypted event for the same init data again. > - info.mCrypto.mInitDatas.Clear(); > + info.mCrypto.Reset(); this shouldnt be necessary here. as the trackbuffer aren't reused when modifying the src attribute. it will br garbage collected
Attachment #8825418 - Flags: review?(jyavenard) → review+
Comment on attachment 8825418 [details] Bug 1316573 - Reset the information in EncryptionInfo to make MediaElement reusable from encrypted content to plain content. https://reviewboard.mozilla.org/r/103582/#review104806 Thanks ! I rephrased the commit message, and removed unnecessary Reset().
Pushed by kikuo@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/7561c49864f5 Reset the information in EncryptionInfo to make MediaElement reusable from encrypted content to plain content. r=jya
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: