Open Nitorac opened 4 months ago
the provided mpd dont match the log output, i assume is another channel i think first thing to do is try inspecting the fmp4 files
can you attach here the video initializing segment file, and the first video segment file? for example from the log you can find the links where download files as follows:
[AS-0] Download finished: https://media.stream.proxad.net/media/0_1_390_init
[AS-0] Download finished: https://media.stream.proxad.net/media/0_1_390_154528077781654
AS-0
is usually the video stream
You are right, I have confused myself between the channel on the browser page of oqee and the channel I used in the plugin.
So to avoid any confusion, I repost a Kodi log with a new (fixed) live.mdp url which I can track on my browser.
Here is the Kodi logs: https://paste.kodi.tv/eyemikeqot.kodi
If I make the parallel from what you said, in this case the init segment of AS-0 is "0_1_382_init" and the first video segment is "0_1_382_154530128714794"
(I am forced to add the ".mp4" extension for posting them here)
0_1_382_init: https://github.com/xbmc/inputstream.adaptive/assets/5551064/38e428da-203e-4b17-ac36-df62f0ea4483
0_1_382_154530128714794: https://github.com/xbmc/inputstream.adaptive/assets/5551064/5b77d52a-8d49-4a25-91fa-e4ef4975bbff
The '''new''' MPD file (https://api-proxad.dc2.oqee.net/playlist/v1/live/612/1/live.mpd):
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" publishTime="2024-05-29T16:25:23Z" availabilityStartTime="1970-01-01T00:00:00Z" minimumUpdatePeriod="PT2S" minBufferTime="PT6.4S" timeShiftBufferDepth="PT14400S" suggestedPresentationDelay="PT9.6S">
<UTCTiming schemeIdUri="urn:mpeg:dash:utc:http-iso:2014" value="https://time.akamai.com/?iso" />
<Period id="0" start="PT0S">
<AdaptationSet id="0" group="1" segmentAlignment="true" startWithSAP="1" contentType="video">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="a1c7fd15-4142-a069-bbef-9ccf201af71d"/>
<SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="1,2,3"/>
<Representation id="379" bandwidth="400000" codecs="avc1.64000d" mimeType="video/mp4" width="384" height="216" frameRate="25">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_379_init" media="https://media.stream.proxad.net/media/0_1_379_$Time$">
<SegmentTimeline>
<S t="154528696490794" d="288000" r="4501"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation><Representation id="380" bandwidth="800000" codecs="avc1.64001e" mimeType="video/mp4" width="640" height="360" frameRate="25">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_380_init" media="https://media.stream.proxad.net/media/0_1_380_$Time$">
<SegmentTimeline>
<S t="154528696490794" d="288000" r="4501"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation><Representation id="381" bandwidth="1600000" codecs="avc1.64001f" mimeType="video/mp4" width="896" height="504" frameRate="25">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_381_init" media="https://media.stream.proxad.net/media/0_1_381_$Time$">
<SegmentTimeline>
<S t="154528696490794" d="288000" r="4501"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation><Representation id="3517" bandwidth="1600000" codecs="hvc1.1.2.L93" mimeType="video/mp4" width="896" height="504" frameRate="50">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_3517_init" media="https://media.stream.proxad.net/media/0_1_3517_$Time$">
<SegmentTimeline>
<S t="154528696274794" d="288000" r="4502"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" group="1" segmentAlignment="true" startWithSAP="1" contentType="video">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0543edd2-3310-1c1b-fcf1-7eb4e121064c"/>
<SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="0,2,3"/>
<Representation id="382" bandwidth="3000000" codecs="avc1.64001f" mimeType="video/mp4" width="1280" height="720" frameRate="25">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_382_init" media="https://media.stream.proxad.net/media/0_1_382_$Time$">
<SegmentTimeline>
<S t="154528696490794" d="288000" r="4501"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="2" group="1" segmentAlignment="true" startWithSAP="1" contentType="video">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="525b3d90-c606-43f4-a5cd-aabb783b1a24"/>
<SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="0,1,3"/>
<Representation id="3518" bandwidth="4800000" codecs="hvc1.1.2.L123" mimeType="video/mp4" width="1920" height="1080" frameRate="50">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_3518_init" media="https://media.stream.proxad.net/media/0_1_3518_$Time$">
<SegmentTimeline>
<S t="154528696274794" d="288000" r="4502"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="3" group="1" segmentAlignment="true" startWithSAP="1" contentType="video">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="57567ecf-d457-49b8-16d6-6dae6c053bf4"/>
<SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="0,1,2"/>
<Representation id="3519" bandwidth="14800000" codecs="hvc1.1.2.L123" mimeType="video/mp4" width="1920" height="1080" frameRate="50">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_3519_init" media="https://media.stream.proxad.net/media/0_1_3519_$Time$">
<SegmentTimeline>
<S t="154528696274794" d="288000" r="4502"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="376" group="2" segmentAlignment="true" startWithSAP="1" contentType="audio" lang="fra">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="fe9289d6-7b03-d1f8-b7a5-750c33eb3a33"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<Representation id="376" bandwidth="64000" codecs="mp4a.40.2" mimeType="audio/mp4">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_376_init" media="https://media.stream.proxad.net/media/0_1_376_$Time$">
<SegmentTimeline>
<S t="154528696225950" d="288000" r="4502"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="377" group="2" segmentAlignment="true" startWithSAP="1" contentType="audio" lang="und">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="fe9289d6-7b03-d1f8-b7a5-750c33eb3a33"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<Representation id="377" bandwidth="64000" codecs="mp4a.40.2" mimeType="audio/mp4">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_377_init" media="https://media.stream.proxad.net/media/0_1_377_$Time$">
<SegmentTimeline>
<S t="154528696225950" d="288000" r="4502"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="455" group="3" segmentAlignment="true" startWithSAP="1" contentType="text" lang="fra">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="caption"/>
<Representation id="455" bandwidth="64000" codecs="stpp" mimeType="application/mp4">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_455_init" media="https://media.stream.proxad.net/media/0_1_455_$Time$">
<SegmentTimeline>
<S t="154528696512000" d="288000" r="4501"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="461" group="3" segmentAlignment="true" startWithSAP="1" contentType="text" lang="fra">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="subtitle"/>
<Representation id="461" bandwidth="64000" codecs="stpp" mimeType="application/mp4">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_461_init" media="https://media.stream.proxad.net/media/0_1_461_$Time$">
<SegmentTimeline>
<S t="154528696512000" d="288000" r="4501"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="463" group="2" segmentAlignment="true" startWithSAP="1" contentType="audio" lang="fra">
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"><cenc:pssh>AAAAiHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGgIARIQ/pKJ1nsD0fi3pXUMM+s6MxIQocf9FUFCoGm775zPIBr3HRIQUls9kMYGQ/Slzaq7eDsaJBIQV1Z+z9RXSbgW1m2ubAU79BIQBUPt0jMQHBv88X604SEGTBoAKgAyADgASABQAA==</cenc:pssh></ContentProtection>
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="fe9289d6-7b03-d1f8-b7a5-750c33eb3a33"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="description"/>
<Representation id="463" bandwidth="64000" codecs="mp4a.40.2" mimeType="audio/mp4">
<SegmentTemplate timescale="90000" initialization="https://media.stream.proxad.net/media/0_1_463_init" media="https://media.stream.proxad.net/media/0_1_463_$Time$">
<SegmentTimeline>
<S t="154528696225950" d="288000" r="4502"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
</Period>
</MPD>
thanks i can see that default kid is zeroed as we can see on the log, so it get the right value
noticed also inconsistent log from the add-on
so initialize with manifest kid
2024-05-29 18:50:46.135 T:38660 debug <general>: AddOnLog: inputstream.adaptive: Initializing stream with KID: fe9289d67b03d1f8b7a5750c33eb3a33
and after use the mp4 kid
CWVCencSingleSampleDecrypter::LogDecryptError: Decrypt failed with error: 2 and key: 00000000000000000000000000000000
so maybe use the manifest kid when zeroed could works i made a test build: https://jenkins.kodi.tv/blue/organizations/jenkins/xbmc%2Finputstream.adaptive/detail/PR-1567/1/artifacts you can test Windows builds, dont try test android builds atm because WIP let me know
Thanks !
I tested it on Windows and it solved the 00000000000000000000000000000000 key error, but an other one has popped out : CWVCencSingleSampleDecrypter::LogDecryptError: Decrypt failed with error: 2 and key: 57567ECFD45749B816D66DAE6C053BF4
On the display, it is the same greeny stuff from the screenshot I posted initially, and no sounds (ffmpeg complains about aac channels not allocated)
Here is the new Kodi logs: https://paste.kodi.tv/jakecaseqo.kodi
CWVCencSingleSampleDecrypter::LogDecryptError: Decrypt failed with error: 2 and key: 57567ECFD45749B816D66DAE6C053BF4
those can be confused but are not errors
seem there are still decrypting problems i think you need to wait a feedback from @glennguy that is more expert than me on decrypting
For what it could help: Oqee uses shaka-player as their video player supporting DRM.
By starting from the opensource shaka-player and giving the same mpd file and license server, I achieved to get the decrypted video stream in my browser. So I think that Oqee hasn't tampered the thing with custom homemade stuff in the middle.
Bug report
Describe the bug
Here is a clear and concise description of what the problem is:
Disclaimer: I'm kinda new to all of this Widevine madness, I could possibly miss something.
I'm trying to support a French TV provider (OQEE from Free (a French ISP)).
The stream starts on Kodi but I have what seems a failed decryption (green artifacts, unusable image, no sound). The logs are mentionning failed decryption. It seems that the license_key I provide is correct (no more complaining in logs about an invalid response).
Here is my test addon that starts the stream:
Expected Behavior
Here is a clear and concise description of what was expected to happen:
The stream should display an unencrypted video data with sound.
Actual Behavior
The stream shows what seems to be an encrypted video stream.
Possible Fix
None that I have found (I tried to tweak around some things but always the same issue)
To Reproduce
Steps to reproduce the behavior:
Hard to reproduce because you should have my account credentials or tokens (if needed I can send them in PM but I don't know if it works outside France)
Debuglog
The debuglog can be found here: https://paste.kodi.tv/mayoceqotu.kodi
MPD/M3U8s/ISM
An example or copy of a manifest (or manifests for HLS - master and variants) can be found here:
Screenshots
Here are some links or screenshots to help explain the problem:
A screenshot of the resulting playing stream:
Additional context or screenshots (if appropriate)
Here is some additional context or explanation that might help:
Your Environment
Used Operating system:
[ ] Android
[ ] iOS
[ ] tvOS
[x] Linux (LibreELEC 12.0.0 on RPi4.aarch64)
[ ] OSX
[x] Windows
[ ] Windows UWP
Operating system version/name:
Kodi version: 21.0.0
inputstream.adaptive version: 21.4.9
note: Once the issue is made we require you to update it with new information should that be required. Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.