Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

This title is not available to watch instantly. 1044 ERROR #1585

Closed
ellin13 opened this issue Apr 18, 2023 · 107 comments
Closed

This title is not available to watch instantly. 1044 ERROR #1585

ellin13 opened this issue Apr 18, 2023 · 107 comments
Labels
Bug Something isn't working Triage: Confirmed Issue has been reproduced by the add-on maintainers

Comments

@ellin13
Copy link

ellin13 commented Apr 18, 2023

Netflix add-on version

1.22.0+matrix

Operative systems used

Windows

Kodi version used

Kodi 20 (Nexus)

Description of the bug

Getting the error This title is not available to watch instantly. 1044 trying to open any file. It happens from yesterday 17/04. Attached the log file
kodi.log

Steps to reproduce the behavior

Open Netflix add on
Browse to My list
Open a file
Error

Debug log - mandatory

https://paste.kodi.tv/inonusuqan.kodi

Possible fix

No response

Additional context

Logged out and back in (with authentication key)
Reinstalled the Widevine CDM Library
Uninstalled/ reinstalled the add on from the zip file

Screenshots

image

@ellin13 ellin13 added Bug Something isn't working Triage: Needed Issue that was just created and needs someone looking at it labels Apr 18, 2023
@r95sguy
Copy link

r95sguy commented Apr 18, 2023

I have the same issue, which has started yesterday, done all the above as well, didn't work

@Berringer
Copy link

Same problem, done what is said in the readme.
No issues yesterday, but today something fried.
Was issues all over the platform yesterday, something got patched? Idk.

@fcr
Copy link

fcr commented Apr 19, 2023

Same problem exactly on MacOS Monterey 12.6.5

@CastagnaIT CastagnaIT added Triage: Confirmed Issue has been reproduced by the add-on maintainers and removed Triage: Needed Issue that was just created and needs someone looking at it labels Apr 19, 2023
@CastagnaIT
Copy link
Owner

i noticed the problem on Windows
on android still works, linux not tested
i will try investigate next days

@D3LZ-D3LZ-D3LZ
Copy link

Same issue for me too also using windows.

1 similar comment
@murnaz
Copy link

murnaz commented Apr 19, 2023

Same issue for me too also using windows.

@SahinOzdemir
Copy link

Same issue on windows since yesterday. Not sure how to fix this?

@rvdhil
Copy link

rvdhil commented Apr 20, 2023

I have the same error I'm afraid

@CastagnaIT
Copy link
Owner

i tried check but for now i have found nothing rilevant just minor changes that has no influence on this
on linux and android works correctly, just windows/macos raise the error
it suggest more a website server problem in recent times the website often has problems
i have no idea how website workaround the problem

@rvdhil
Copy link

rvdhil commented Apr 20, 2023

Ok thanks, perhaps I can find something in windows that causes this problem.

@fcr
Copy link

fcr commented Apr 20, 2023

i tried check but for now i have found nothing rilevant just minor changes that has no influence on this on linux and android works correctly, just windows/macos raise the error it suggest more a website server problem in recent times the website often has problems i have no idea how website workaround the problem

Netflix video works okay on my MacOS in Safari but the add-on still has the 1044 error.

@franknet1
Copy link

franknet1 commented Apr 20, 2023

In my windows 10 it shows the error, then plays the video only about 2 minutes and then freezes. The sound continues.
Resume play of anything beyond this point does not work. Audio plays. Video not visible, could be in the background, but I cannot get it to show.
Hoping for a fix...

@turb0steve
Copy link

turb0steve commented Apr 20, 2023

Also seeing the same issue - also on windows 10, browser based access is fine, but the plugin on KODI20 returns MSLErrror: This title is not available to watch instantly. 1044 ERROR. Playback will run for just over 2mins and then the video freezes.
Have tried the usual reset of ESN, log out and back in - to no avail.

Happy to make logs available \ test stuff if useful - appreciate how frustrating it is contributing a popular plugin like this and having Netflix make a change and -BAM- suddenly you have a long list of maintenance requests.

@n0valis
Copy link

n0valis commented Apr 20, 2023

In my windows 10 it shows the error, then plays the video only about 2 minutes and then freezes. The sound continues. Resume play of anything beyond this point does not work. Audio plays. Video not visible, could be in the background, but I cannot get it to show. Hoping for a fix...

Can confirm the 2 min play and then freeze. Same exact behaviour.
Plays fine in Browser (Firefox).
Difference in the account device overview is:
It doesn't show a profile for the addon login.
Win 10, Kodi 20

@vujzoran
Copy link

Same problem for Android TV 10, just tried it today

@LordTiggy
Copy link

Same problem on windows 10; kodi 20.

None of the steps in the wini helped. Browser playback on the same machine works flawlessly.

@Spider-netizen
Copy link

Spider-netizen commented Apr 23, 2023

I’m having the same issue.

On Android TV, I could stream fine using the add-on, but I always had the issue of getting only 540p. Yesterday, I tried resetting the ESN, hoping that would help with the resolution. That was when I started getting the MSLError.

@mlusic
Copy link

mlusic commented Apr 24, 2023

Same problem, Windows 10 & Kodi 20.1. But, in Linux Mint 21.1 Cinnamon Kodi 20.1 addon works normally.

@alfaajx732
Copy link

alfaajx732 commented Apr 25, 2023

Same problem, tested on Windows 11 and Windows 7 Kodi 20.1 and Netflix (Castagnait); Android works fine.
Tried Reinstall Widevine, no result.
Logged out in Netflix, had to login with authentication key.
Now i get Netflix add-on error ; Remoteprotocolerror Server disconnected
Can't get into Netflix anymore.

@Sholander
Copy link

Logged out in Netflix, had to login with authentication key.
Now i get Netflix add-on error ; Remoteprotocolerror Server disconnected
Can't get into Netflix anymore.

I had this error several days ago, after logging out in addon, on Android.7.1.1 (Firestick4k).
To be able to login again and get back into my account I first had to login via PC browser; then in my account I went to "Account -> SECURITY & PRIVACY -> Manage access and devices - and there I removed all instances of "Amazon Streaming Stick"
After that I made a fresh authentication key with which I could again login to Netflix with Kodi NF_addon.

@zudljk
Copy link

zudljk commented Apr 25, 2023

I also get this error message.

OS: Windows 10 Home
Kodi: 20.1
Plugin version: latest

On the same machine the Netflix plugin is working fine under Zorin Linux (dual boot, same Kodi and plugin versions).

@alfaajx732
Copy link

@Sholander
Thanx, I removed the last instances as you proposed, first gave it a try with the old authentication key without success
Created a new authentication key and indeed i could login again to the Kodi Netflix add-on.
So far so good. I'm back to the beginning, there is the MSLerror again.
So logoff and login of the Netflix account is no solution for the MSLerror.

@webtty
Copy link

webtty commented Apr 26, 2023

@Sholander @alfaajx732 +1

Yep, very same situation here.
I removed all the instances related to my PC, build a new key, connected and MSLerror .
I can see subtitles then and the sound but no video.

thank U for the previous job by the way ;)

@powedano
Copy link

powedano commented Apr 28, 2023

Same issue
I tried
Remové&reinstall complete addon
Reinstall Widevine
Build a new Key
It doesn't work anyway

Edit: Kodi 20 over Windows 11

@murnaz
Copy link

murnaz commented Apr 28, 2023

1.22.0+matrix.1
Reinstall Widevine
Build a new Key
It doesn't work anyway

Kodi 20 over Windows 11

@trapau1
Copy link

trapau1 commented Apr 29, 2023

Same issue

1.22.0+matrix.1
Win10
Kodi 20.1

Have done a complete reinstall.

@TheDaChicken
Copy link

TheDaChicken commented Jun 10, 2023

By my opinon its Widevine implementation fault. Kodi depends on it. Widevine is middleware between DRM supplier (Netfilx) and player (Kodi).

yes and no, i mean i doubt it is a direct failure of widevine because the library is important for all video providers the most weird thing is that this problem impact only Windows and MacOS platforms as if it were a test bench, netflix is famous for customising all data communications to increase protection even where they are already have a default level of protection used by all...

i said this because the error talk about of IssueLicensePolicyError this error is vague and generic like most of the errors netflix for now my suspect are on the challenge data that we send to make the license request

by comparing the challenge data (that we receive from widevine session loaded by ISAdaptive) with the website there is something different in the data, if you decode the challenge (base64) its possible to see some extradata inside it like follow: {"version":"1.0","esn":"NFCDFF-02-K835Y08LUW5RN2MYT8DDWGX2CRKTKD","salt":"1275686123267277113026017212840343","issueTime":1686214725,"movieId":"81478071"}

its easy also distinguish it without decoding it because the most of time the challenge data from website starts with "EvkP": EvkPEr0BGroBCrMBChD... and our challenge data starts with "CAES...": CAES4gsKoQsIARKDCgrD...

my suspect is that in some way netflix customize the challenge data or wrapping it in some unknown way or iniect it with additional data, or maybe is possible insert this additional data when you open or in the middle of the widevine session idk this is really hard to understand to me... also because i found no trace of this data in the website sources

but i am also sure that this different challenge is not new, because i remember noticing it a while back (last year i think), since everything here is a black box we do not know what happens or what Netflix has done on their server all this is therory right or wrong

I recommend trying to parse these challenge data in Python to see what is different if possible. The widevine's challenges are Google's protobuf. It's possible to just parse to look if there are any extra data if known in widevine.
There is this from a quick Google search: https://github.com/rlaphoenix/pywidevine/blob/db6eaef45013fd2982432957e09bfe5947c71ff7/pywidevine/remotecdm.py#LL222C31-L222C44

I don't know a way of looking at what's happening on Amazon's website (I tried using https://github.com/CastagnaIT/netflix-mitm-proxy). I wanted to be able to help.
I mean it makes me concerned if this is Widevine VMP issue. If I remember, VMP doesn't exist on linux?
It would be VMP if the only difference from the challenge on Chrome and inputstream.adaptive is an Encrypted Cilent ID.

This is the part where I am not so knowledgeable on how VMP works. I don't know where I should mention this. There is a way to create a program that is VMP certificated with electron apps. This wasn't the case a bit ago where it required asking Google for a certification. https://github.com/castlabs/electron-releases/wiki/EVS. I know this has nothing to do with electrons app though.

@mlusic
Copy link

mlusic commented Jun 11, 2023

Can anybody with a working Linux plugin confirm a different version of inputstream.adapter than 20.3.2. For me this Linux plugin is pinned several minor revision back compared to the windows.

My working verison are 20.3.9-1~jammy

@nonobio
Copy link

nonobio commented Jun 11, 2023

Est-ce que quelqu'un avec un plugin Linux fonctionnel peut confirmer une version différente de inputstream.adapter que 20.3.2. Pour moi, ce plugin Linux est épinglé par plusieurs révisions mineures par rapport à Windows.

From my LibreElec Kodi, with Netflix Working:

image

@CastagnaIT
Copy link
Owner

@TheDaChicken i tried pywidevine but at least to me dont help me to understand something more,
i noticed that if you force replace the ISA challenge with the challenge produced by website as franketein test

example:

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

to https://github.com/CastagnaIT/plugin.video.netflix/blob/master/resources/lib/services/nfsession/msl/msl_handler.py#L327

the license request works without give errors (ofc you cant playback with a wrong license)
but this could be a confirm that website do something

@TheDaChicken
Copy link

TheDaChicken commented Jun 16, 2023

@TheDaChicken i tried pywidevine but at least to me dont help me to understand something more, i noticed that if you force replace the ISA challenge with the challenge produced by website as franketein test

example:

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

to https://github.com/CastagnaIT/plugin.video.netflix/blob/master/resources/lib/services/nfsession/msl/msl_handler.py#L327

the license request works without give errors (ofc you cant playback with a wrong license) but this could be a confirm that website do something

Ooo, thanks for the example license request produced by the website.

I didn't provide a good explanation on how to parse it (my bad).
Here is how to parse it with easily available pywidevine:

import base64

from pywidevine import License
from pywidevine.cdm import SignedMessage, LicenseRequest

if __name__ == '__main__':
    challenge = base64.b64decode("<huge base64 here>")
    license_message = SignedMessage()
    license_message.ParseFromString(challenge)

    print(f"Type: {SignedMessage.MessageType.Name(license_message.type)}")

    request = LicenseRequest()
    request.ParseFromString(license_message.msg)

    print(request)

Every Widevine message is "SignedMessage" and contains "msg" bytes that can be then decoded with LicenseRequest, License.
All of this is decoded using Google protobuf templates.

going off what you gave me I got:

content_id {
  existing_license {
    license_id {
      request_id: "\330pf\366\325\221\311\3712s/\305\344zy\241"
      session_id: "{\"version\":\"1.0\",\"esn\":\"NFCDFF-02-K835Y08LUW5RN2MYT8DDWGX2CRKTKD\",\"salt\":\"1275686123267277113026017212840343\",\"issueTime\":1686214725,\"movieId\":\"81478071\"}"
      type: STREAMING
      version: 0
    }
    seconds_since_started: 0
    seconds_since_last_played: 0
  }
}
type: RENEWAL
request_time: 1686214738
protocol_version: VERSION_2_1
encrypted_client_id {
  provider_id: "test.netflix.com"
  service_certificate_serial_number: "HIDDEN"
  encrypted_client_id: "HIDDEN"
  encrypted_client_id_iv: "HIDDEN"
  encrypted_privacy_key: "HIDDEN"
}

Okay, this is a surprise:

  1. Netflix is sending a RENEWAL request?? LMAO.
  2. Encrypted_client_id shows Widevine VMP. (That doesn't mean that's the problem. there is another possibility here)

Here is what I got from inputstream.adaptive:

client_id {
  type: DRM_DEVICE_CERTIFICATE
  token: "HIDDEN"
  client_info {
    name: "architecture_name"
    value: "x86-64"
  }
  client_info {
    name: "company_name"
    value: "Google"
  }
  client_info {
    name: "model_name"
    value: "ChromeCDM"
  }
  client_info {
    name: "platform_name"
    value: "Windows"
  }
  client_info {
    name: "widevine_cdm_version"
    value: "4.10.2557.0"
  }
  client_capabilities {
    client_token: false
    session_token: false
    video_resolution_constraints: true
    max_hdcp_version: HDCP_V1
    oem_crypto_api_version: 16
  }
}
content_id {
  widevine_pssh_data {
    pssh_data: "\010\001\022\020\000\000\000\000\005\230\364\\\000\000\000\000\000\000\000\000"
    license_type: STREAMING
    request_id: "\237\275B!.\305\315%ZNs\212\372\257\211"
  }
}
type: NEW
request_time: 1686949016
protocol_version: VERSION_2_1
key_control_nonce: 417893440

EDIT: more digging, basically under content_id, it seems that is what is given to the session. Instead of pssh, you give an existing key??

@CastagnaIT
Copy link
Owner

CastagnaIT commented Jun 17, 2023

fwik renewal is used for live contents, this looks as uncommon behaviour...

EDIT: more digging, basically under content_id, it seems that is what is given to the session. Instead of pssh, you give an existing key??

as you can see we pre-initialize drm session by using a existing fixed pssh:
https://github.com/CastagnaIT/plugin.video.netflix/blob/master/resources/lib/navigation/player.py#L40
idk if its relevant, but also removing it, the license request behaviour and challenge from ISA its the same

maybe it is possible that some kind of customised data(?) is set up to return for the first license request,
then a renewal will be requested in second place to sent it to server as usual
but what could be attempted?

@TheDaChicken
Copy link

TheDaChicken commented Jun 17, 2023

fwik renewal is used for live contents, this looks as uncommon behaviour...

EDIT: more digging, basically under content_id, it seems that is what is given to the session. Instead of pssh, you give an existing key??

as you can see we pre-initialize drm session by using a existing fixed pssh:
https://github.com/CastagnaIT/plugin.video.netflix/blob/master/resources/lib/navigation/player.py#L40
idk if its relevant, but also removing it, the license request behaviour and challenge from ISA its the same

maybe it is possible that some kind of customised data(?) is set up to return for the first license request,
then a renewal will be requested in second place to sent it to server as usual
but what could be attempted?

It may be best to edit inputstream.adaptive and see what you could do?

There is a way to create a cdm session from keyids. I assume that just creates a new license request. That isn't what we want here. We want renewal. https://github.com/xbmc/inputstream.adaptive/blob/0044efdffad1d2e9867af94515c4d1608cd26571/wvdecrypter/cdm/media/cdm/api/content_decryption_module.h#L463 ??? i don't know much about that.

It's not really possible to maybe create customized data??

Idk what live content license response looks like?? or when license renewal happens?

It's possible to generate license responses using pywidevine's Google protonbuf templates. BUT!!! Each Widevine message needs (I assume it needs to be) signed with a key. key can't be some random key since it required to know the original private key in the license request to sign the response license keys.

@CastagnaIT
Copy link
Owner

CastagnaIT commented Jun 23, 2023

EDIT: more digging, basically under content_id, it seems that is what is given to the session. Instead of pssh, you give an existing key??

challenge data is generated by a session callback of cdm CreateSessionAndGenerateRequest
the same method that make the "license request" callback routed by isa to the addon

in the past when i implemented drm preinit to get session id and session challenge in advance, to attach them in the manifest request
xbmc/inputstream.adaptive@806c6c1#diff-9731917bd53f69c56a6bbc6f87de934f5b698b87d0971b7110efe03ead5b9661
i blocked a first request of license that otherwise is done twice, see skipSessionMessage:
xbmc/inputstream.adaptive@806c6c1#diff-9731917bd53f69c56a6bbc6f87de934f5b698b87d0971b7110efe03ead5b9661R593-R594
by removing that code, despite the license request is done wrongly before manifest request, the data is similar e.g.

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

so not a "renew", (and if this is the way to have a "renew" type after this one, i have no idea what data to return at this callback)

by reading the little cdm info on the net, it seems that cdm in order to have the "renew" challenge type request you should start always with "new" type, but info are poor no documentation because it is only available to companies

or when license renewal happens?

i have no extended knowledge on this, so i may have details that are not quite accurate...
license renewal should start when the first license expire and/or with timings set by cdm, usually renewal request is like a license request, automatically generated by cdm callbacks that is routed by ISA to addon, so requests are not managed by ISA

@TheDaChicken
Copy link

TheDaChicken commented Jun 24, 2023

i have no idea what data to return at this callback)

This made me try something. I ended up finding Event Logger for the CDM in the browser which is very helpful to answer your question.

I didn't see anything different than what you're doing. It creates a challenge then ends the session for the manifest. It doesn't update the session.

For the challenge sent for the LICENSE, I ended up getting this:

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

This one is a NEW license request for the challenge. I don't know how you ended up getting a RENEW.

I put this into https://github.com/CastagnaIT/plugin.video.netflix/blob/master/resources/lib/services/nfsession/msl/msl_handler.py#L327 as a Frankenstein test just like you tried.

It worked. :(( this is a bad thing!!
The only difference I see is Widevine VMP :((
This shows no change in pssh aswell.

Chrome:

content_id {
  widevine_pssh_data {
    pssh_data: "\010\001\022\020\000\000\000\000\003\322gI\000\000\000\000\000\000\000\000"
    license_type: STREAMING
    request_id: "\340\222\021\224\025\3330=\342\236T<\014\271\010\323"
  }
}
type: NEW
request_time: 1687559480
protocol_version: VERSION_2_1
key_control_nonce: 259738990
encrypted_client_id {
  provider_id: "test.netflix.com"
  service_certificate_serial_number: "HIDDEN"
  encrypted_client_id: "HIDDEN"
  encrypted_client_id_iv: "HIDDEN"
  encrypted_privacy_key: "HIDDEN"
}

ISA:

client_id {
  type: DRM_DEVICE_CERTIFICATE
  token: "HIDDEN"
  client_info {
    name: "architecture_name"
    value: "x86-64"
  }
  client_info {
    name: "company_name"
    value: "Google"
  }
  client_info {
    name: "model_name"
    value: "ChromeCDM"
  }
  client_info {
    name: "platform_name"
    value: "Windows"
  }
  client_info {
    name: "widevine_cdm_version"
    value: "4.10.2557.0"
  }
  client_capabilities {
    client_token: false
    session_token: false
    video_resolution_constraints: true
    max_hdcp_version: HDCP_V1
    oem_crypto_api_version: 16
  }
}
content_id {
  widevine_pssh_data {
    pssh_data: "\010\001\022\020\000\000\000\000\003\322gI\000\000\000\000\000\000\000\000"
    license_type: STREAMING
    request_id: "\225${\364\262\333w\324\220D\344\003\33530\346"
  }
}
type: NEW
request_time: 1687501944
protocol_version: VERSION_2_1
key_control_nonce: 1782450075

We're basically fucked for using Widevine DRM unless we somehow can pass Widevine VMP in ISA without breaking laws. Like what happened with Amazon Prime: Sandmann79/xbmc#294

That's probably why it works fine for Linux. Widevine VMP doesn't exist on Linux.

@CastagnaIT
Copy link
Owner

CastagnaIT commented Jun 25, 2023

i dont think there is a easy workaround, if you requesting only SD streams (like do am@zon) in the manifest the license request fails in any case

seem n€tflix has adopted VMP around the 2017 (by reading a Brave browser GH discussion)
so not new thing but they may have now removed legacy old accesses idk...

an alternative already discussed in the past is to use PlayReady DRM
theoretically feasible on the addon side (anyway limited to windows os...)
but the bigger problem is add an interface in to ISAdaptive to access to the PlayReady Windows API
where seem that windows provide api for UWP app and not "desktop" software? windows oddities

@CastagnaIT
Copy link
Owner

i have made a new release with the workaround for android:
https://forum.kodi.tv/showthread.php?tid=329767&pid=3157205#pid3157205
ofc still no solution for Windows/MacOS

@TheDaChicken
Copy link

TheDaChicken commented Jun 28, 2023

now removed legacy old accesses idk..

Well, it's all about if they want to enforce it or not. is it a good thing to assume because I ended up getting a similar challenge that ISA creates but with Widevine VMP and it works fine?
I mean, it really just depends on the platform settings. I mean, we have to only assume. The error code is not helpful.

Then again, it's not like I can actually see the challenge requests for the LICENSE actually.

an alternative already discussed in the past is to use PlayReady DRM
theoretically feasible on the addon side (anyway limited to windows os...)
but the bigger problem is add an interface in to ISAdaptive to access to the PlayReady Windows API
where seem that windows provide api for UWP app and not "desktop" software? windows oddities

I've tried my hardest to figure out PlayReady DRM API and I couldn't figure it out (?) You've probably seen the examples of UWP. That's all I could find. It would be great to have PlayReady DRM support. That may work around Widevine VMP and maybe have access to higher qualities (?). There is this: Sandmann79/xbmc#294 (comment) and it is a similar CDM interface. It is a little different!! But! :( they've removed the Cdm!!! It is built into Edge now. I have a copy of that "old CDM interface." You can easily find it online I think.

The reason I am unsure about figuring out PlayReady DRM API is maybe I could? Months ago, after using lots of ChatGPT, I was able to figure out some way to access some "CDM" with Window's Win32 API (called MediaFoundation). It also allows me to check what Key System is supported and "com.microsoft.playready" responded TRUE. https://learn.microsoft.com/en-us/windows/win32/api/mfcontentdecryptionmodule/nf-mfcontentdecryptionmodule-imfcontentdecryptionmodulefactory-istypesupported

Being able to use this "win32 API" is painful:

    Microsoft::WRL::ComPtr<IMFMediaEngineClassFactory4> class_factory;
    HRESULT hr;

    hr = CoCreateInstance(CLSID_MFMediaEngineClassFactory, nullptr,
                          CLSCTX_INPROC_SERVER,
                          IID_PPV_ARGS(&class_factory));
    if(FAILED(hr))
    {
        return -1;
    }

    hr = class_factory->CreateContentDecryptionModuleFactory(
            key_system_str.c_str(), IID_PPV_ARGS(&cdm_factory_));
    if(FAILED(hr))
    {
        return -1;
    }
    class_factory->Release();

    if(!cdm_factory_->IsTypeSupported(key_system_str.c_str(), nullptr)) /* return -1 if not supported */
        return -1;

    return 0;

ChatGPT did provide lots of inaccurate code (which I would like to make fun of).
I could try to somehow continue and make some easy-to-use class??? This conversation should GO Into a new GitHub Issue through?
Idk, I think it would be very cool to get Microsoft Playready support.

EDIT: Google Chrome actually uses this same API when I was Google searching. Google Chrome uses it for clearkey. Uses a renderer and decodes into frames. It seem: https://github.com/chromium/chromium/blob/508dce9dea93d32b154ed6d6d67dd29d336c4e1e/media/mojo/services/media_foundation_renderer_wrapper.cc#L41
There is a lot of what I got there too.

@CastagnaIT
Copy link
Owner

@TheDaChicken i have read your message above only now i lost it on tons of many emails received...
thanks for your investigation on PlayReady and your work on ISAdaptive to try implement it
a new possibility for the future to make n€tflix works on Windows again, and maybe a little chance get also 4k resolution

@dljones8053
Copy link

dljones8053 commented Jul 9, 2023

I used Sandmann79 Browser Launcher in Kodi to open Netflix with a web browser as a work around for now also I watch shows using The Roku Channels via the launcher. It works great for anything using the Web browser just make sure set "No" for Kiosk Mode so you can close the browser and return to the Kodi GUI.

@Letalis82
Copy link

Kodi mentioned that Winvine had an update, is there any postive effect for the plugin on this?

@rfrayer420
Copy link

rfrayer420 commented Sep 9, 2023

Not sure if this is counter productive but something tells me this isnt an issue with the addon at all being that both hulu and crackle (both require widevine) do not play on windows but do on Linux. (corection) on crackle, the movies that require cdm fail to play on windows.

@dljones8053
Copy link

dljones8053 commented Sep 9, 2023 via email

@TheDaChicken
Copy link

Not sure it's a Widevine issue since addons like Amazon, Paramount, Hulu and others use DRM plays fine on Windows in Kodi it's only Netflix that has errors and video stops playing after 2 minutes and audio keeps playing. If this was a DRM issue Netflix would not start playing at all and the other plugins would be failing.

It's a widevine issue. The first 2 minutes are unencrypted.

@dljones8053
Copy link

dljones8053 commented Sep 9, 2023 via email

@TheDaChicken
Copy link

TheDaChicken commented Sep 10, 2023

Amazon Prime

Amazon Prime works around the issue by only providing non-HD streams on Windows due to Widevine enforcing vmp validation on Windows. vmp validation doesn't exist on Linux.

@RealAmethyst
Copy link

Hi. Is there any solution to get playback working on windows?

@clempat
Copy link

clempat commented Nov 4, 2023

I wanted to share that I think I am getting the same issue now but on Libreelec.
I copied the MSL error information: https://paste.kodi.tv/oxuniribej

@will-code-for-pizza
Copy link

will-code-for-pizza commented Nov 13, 2023

I can confirm the same error on LibreELEC-RPi2.arm-9.2.8.img.gz and Netflix Plugin https://github.com/CastagnaIT/plugin.video.netflix/releases/tag/v1.12.15 for about a week ago (just for SOME movies/streams !!!)

I tried almost every hint in this issue section, but nothing really works.

Probably a helping information is, that the problem exists only @ ONE Netflix profile (my personal one).
The kids profile works like charm.
Also only SOME movies/streams are affected. Some others still (??) work.

My first guess was, that it has something to do with advertising (I use the low budged Netflix account with advertising and my PiHole is filtering the incoming TCP packages. But this was a fallacy.

Regards.

PS: What's totally unclear for me: I use a legacy LibreElec, legacy Netflix plugin, no changes/updates since months...
Why this error occurs so suddenly ?
(The reason for this is, I use an RPi 3, so HD streams are only available on these versions...)

@FOW-AL
Copy link

FOW-AL commented Nov 14, 2023

@will-code-for-pizza
Me2. Glad to be not alone :-)

@CastagnaIT
Copy link
Owner

My first guess was, that it has something to do with advertising (I use the low budged Netflix account with advertising

ADS plan are not supported on this addon

despite the website backend show the same error description
the problem is totally different from the user that opened this Issue,
also means that you are trying to use the old addon versions to try circumvent the advertising

to avoid future misunderstandings i will close this issue thread (since i have already opened #1627 that explain the original problem of this issue)

@will-code-for-pizza

This comment was marked as off-topic.

Repository owner locked as off-topic and limited conversation to collaborators Nov 15, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Bug Something isn't working Triage: Confirmed Issue has been reproduced by the add-on maintainers
Projects
None yet
Development

No branches or pull requests