asciidisco / plugin.video.netflix

Inputstream based Netflix plugin for Kodi
MIT License
1.24k stars 226 forks source link

Video playback is not working in 0.13.18 #555

Closed Essam315 closed 5 years ago

Essam315 commented 5 years ago

I'm submitting a ...

General infomration

Prerequisites

Description

The video playback is not working in the release 0.13.18, when i try to play a video nothing happens, I'm not using any VPN, inputstream.adaptive is updated to the latest release 2.3.11, and this problem happened today, and not related in anyway with the problem in 0.13.19 which has been fixed for me here https://github.com/asciidisco/plugin.video.netflix/commit/5d363569b025247f5005a2266e69efddb1476cc7 (it seems that the plugin is working now on the android devices).

Context (Environment)

Installation

Operating System

Additional informatin on the environment

Kodi 18 Leia RC, Windows 10

Debug log

https://pastebin.com/BSYAg2jM

Other information

Here is manifest.json.

manifest.zip

ksl1989 commented 5 years ago

I can confirm this issue on Pi 3, I was able to play all videos by enabling HEVC profiles, but today no video can be played. I didn't update the addon, OSMC or any other package, it seems to be a change from Netflix.

ryangodammit commented 5 years ago

Same here on libreelec 8.90.007 running Netflix 0.13.16 which was playing fine yesterday. Browsing and navigation is totally fine, but video playback stalls

dupohuj commented 5 years ago

For me too Pi2 Libreelec Kodi 18 movie not play in 0.13.18 so I update to 0.13.19 thats same situation I change experts setting enabling HEVC no result then i enabling VP9 no result

krisdeg commented 5 years ago

For me too Pi2 Libreelec Kodi 18 movie not play in 0.13.18 so I update to 0.13.19 thats same situation I change experts setting enabling HEVC no result then i enabling VP9 no result

same here but with osmc latest version on PI3 with 0.13.18

Without option changes : https://pastebin.com/AtQ8NyEm With option changes : https://pastebin.com/tvQFXzB9

arpruss commented 5 years ago

I can confirm on both rpi 3 and on a GalliumOS Chromebook (where 0.13.18 worked great a couple of days ago). And FWIW, on the rpi 3, Netflix still works with Vivaldi+Widevine and on GalliumOS with Chrome.

tsioukas commented 5 years ago

I don't think that the problem is with version, I get back to 0.13.13 & 0.13.15 and the problem remains. Also I test it on RC1 and beta 4 with no luck.

arpruss commented 5 years ago

I tried 0.13.16 and 0.13.17 as well on the rpi 3. No luck. Sure looks like a Netflix-side change.

Essam315 commented 5 years ago

@tsioukas I talked about 0.13.18 because the official 0.13.19 is broken for another reason, but 0.13.18 was working until today, 0.13.16 and the releases before it were broken from a longtime ago.

tsioukas commented 5 years ago

@Essam315, yes you are right I didn’t know that it was broken before... I have 2-3 days to see something on Netflix and I didn't notice what version I had that time.

tanis2000 commented 5 years ago

This is my pastebin for 0.13.18 https://pastebin.com/RBUpM7ck

the-isz commented 5 years ago

Here is an excerpt from my log, since it looks pretty different from what tanis2000 has:

https://pastebin.com/HcjdXRaw

Yesterday, everything was working fine and I haven't changed anything since.

I'm on 0.13.18, too, Raspberry Pi 2, Archlinux.

Th3-Ap31 commented 5 years ago

I was just playing with the Addon to see if I could find the error and I found that the Server send this Stack Trace in the manifest:

"Content:com.netflix.streaming.content.core.internal.model.exception.ContentException: Playback not permitted. Reason: 446 (Playback not permitted.)"

https://pastebin.com/embed_js/Ev2i634Z

I will continue exploring the Addon later but might be that Nexflix is not allowing us to Stream content...

EDIT: This server exception appeared also here: #532

jerometerrier commented 5 years ago

Same issue for me On Raspberry

caphm commented 5 years ago

Just wanted to let everyone know I'm aware of the issue. Unfortunately I'm curently not available to work on an analysis and solution, sorry. I'll try to look into during the weekend.

liberty-developer commented 5 years ago

I implemented the manifest request for msl api 2, and it produces at least a manifest. Unfortunately the new JSON manifest is quite different to the v1 manifest which means a rewrite of the JSON -> MPD converter.

I did a shot for video in this branch, but need to change licnse request to v2, too to get it working. If anyone wants to support development, pls. let me know to avoid double work.

Terrorhawk commented 5 years ago

I implemented the manifest request for msl api 2, and it produces at least a manifest. Unfortunately the new JSON manifest is quite different to the v1 manifest which means a rewrite of the JSON -> MPD converter.

I did a shot for video in this branch, but need to change licnse request to v2, too to get it working. If anyone wants to support development, pls. let me know to avoid double work.

can u also add "hevc-main10-L30-dash-cenc-prk" to the profile in the manifest? this fixes some problems on rpi3

simonbuehler commented 5 years ago

watching your msl2 branch , props for your work!

jgaudet commented 5 years ago

@liberty-developer is the netflix address here correct? The return value is 404 when I hit it.

jakermx commented 5 years ago

I Think the complete URL sould be:

https://www.netflix.com/nq/msl_v1/cadmium/pbo_licenses/%5E1.0.0/router

It is the one the Netflix Player uses in Chrome.

Cheers!

@liberty-developer is the netflix address here correct? The return value is 404 when I hit it.

jakermx commented 5 years ago

I implemented the manifest request for msl api 2, and it produces at least a manifest. Unfortunately the new JSON manifest is quite different to the v1 manifest which means a rewrite of the JSON -> MPD converter.

I did a shot for video in this branch, but need to change licnse request to v2, too to get it working. If anyone wants to support development, pls. let me know to avoid double work.

I can help, I was working on my own version of MSLv2.py, but I fall slept, I am alive now... so, hit me!

liberty-developer commented 5 years ago

@jakermx what would help is adapting audio and subs,, simply copy back the parts from MSL.py. The new JSON manifest provides more information compared to v1, so maybe we can make the Adaptationset / Representations more complete. Interseting part is the sidx block in audio, should be done idential to video

Edit: I'll continue with licensing, the request / and url must be changed.

jakermx commented 5 years ago

Gotcha...

I did that and I did something on getting licences and I have no errors and everything look good, but I have no playback, I think it is because I did a lot of changes before getting MSL2, I am going to install it from the scratch and test my changes...so I will keep you posted in a few minutes.

jakermx commented 5 years ago

I got video....but no audio.... so far

:)

jakermx commented 5 years ago

Adaptation for Audio is missing... working on it

StelArian commented 5 years ago

Man! This is the page of the day! Even if you fix it, I will not be able to test it today. Still... this is the page of the day :)

tsioukas commented 5 years ago

@StelArian, this is the power of open source. community ... as a software engineer I'm a little bit jealous... but unfortunately I'm not familiar with Python.

Congrats guys, I hope to find the solution soon

oomek commented 5 years ago

Watching this thread is better than Netflix itself.

liberty-developer commented 5 years ago

@jakermx I was unable to get the license request v2 working, so I switched back to the previous license request (but new manifest request), video is working with the latest commit in msl2 branch.

Have you got license_request v2 working? I got always HTTP 400 error....

jakermx commented 5 years ago

Here we go...

These are the files that I modified and I got video and audio working so far... but I have not fixed the loading time, it takes about a minute to start the playback using MANUAL STREAM SELECTION in InputStream, I think it is because it have a lot of streams available and in someway it is buffering all of them or something like...

09:32:24.941 T:1309078384 NOTICE: Creating InputStream 09:32:29.775 T:1309078384 NOTICE: Creating Demuxer 09:32:29.778 T:1309078384 NOTICE: Opening stream: 1 source: 256 09:33:07.560 T:1937952288 NOTICE: Samba is idle. Closing the remaining connections 09:33:59.852 T:1309078384 NOTICE: Display resolution ADJUST : 1920x1080 (1920x1080) @ 23.98 - Full Screen (43) (weight: 0.000) 09:34:00.019 T:1937952288 NOTICE: VideoPlayer: OnLostDisplay received 09:34:00.019 T:1937952288 WARNING: CDVDMessageQueue(audio)::Put MSGQ_NOT_INITIALIZED 09:34:00.019 T:1937952288 WARNING: CDVDMessageQueue(video)::Put MSGQ_NOT_INITIALIZED 09:34:00.211 T:1937952288 NOTICE: VideoPlayer: OnResetDisplay received 09:34:00.211 T:1937952288 WARNING: CDVDMessageQueue(audio)::Put MSGQ_NOT_INITIALIZED 09:34:00.211 T:1937952288 WARNING: CDVDMessageQueue(video)::Put MSGQ_NOT_INITIALIZED 09:34:00.223 T:1309078384 NOTICE: Creating video codec with codec id: 27 09:34:00.233 T:1309078384 NOTICE: Creating video thread 09:34:00.233 T:1327924080 NOTICE: running thread: video_thread

This example took 1:30 to start playing

Another thing, since I dont have any documentation on MSL Manifests I mixed v1 for load_manifest and v0 for get_license. As I have ever said THIS IS JUST A WORKAROUND

Hope it helps... Cheers JakerMX_MSL_Workaround.zip

jakermx commented 5 years ago

Got fast playback changing the indexRange

                # BaseURL
                base_url = self.__get_base_url(stream['urls'])
                ET.SubElement(rep, 'BaseURL').text = base_url
                # Init an Segment block
                sidx = stream['downloadable_id']
                segment_base = ET.SubElement(
                    parent=rep,
                    tag='SegmentBase',
                    #Removed 
                    #indexRange='0-' + str(stream['startByteOffset'] + stream['size']),
                    indexRange='0-' + str(init_length),
                    indexRangeExact='true')

JakerMX_MSL_Workaround.zip

louiz commented 5 years ago

Awesome, I'll try that on my setup tonight and report back. Thank you for the work.

jakermx commented 5 years ago

@jakermx I was unable to get the license request v2 working, so I switched back to the previous license request (but new manifest request), video is working with the latest commit in msl2 branch.

Have you got license_request v2 working? I got always HTTP 400 error....

Nope, I don have the needed request structure, but if you share it with me, I can handle it pretty fast.

Cheers!

liberty-developer commented 5 years ago

@jakermx if you debug chrome, open cadmium js file, pretty print and search for _mslRequest (first occurrence) and set a breakpoint. In my last commit the v1 request structure is commented out, if you switch comments and reactivate the url endpoint, you should be able to test. Not sure, if cookies are the reason here.....

jakermx commented 5 years ago

Ok, thanks for the tip...

I dont think cookies are the issue, but It could be the headers since the HTTP400 response is from the GET/POST request, Let me try it and I will get back with my findings.

jakermx commented 5 years ago

Since same version without my patch was working on Androind I think it is some OS or HW ralated issue, I was debuging it and creatting patterns from Androind and trying to reproduce them on RPI.

VLPilot commented 5 years ago

I tried workaround with Rpi 3 B+ with no luck. I might doing something wrong. Snip from the logfile:

18:44:01.251 T:1443885808 NOTICE: Creating InputStream 18:44:03.077 T:1443885808 ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (http://localhost:35945/manifest?id=80199682&dolby=true&hevc=true&hdr=true&dolbyvision=true)

any suggestions?

Terrorhawk commented 5 years ago

I tried workaround with Rpi 3 B+ with no luck. I might doing something wrong. Snip from the logfile:

18:44:01.251 T:1443885808 NOTICE: Creating InputStream 18:44:03.077 T:1443885808 ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (http://localhost:35945/manifest?id=80199682&dolby=true&hevc=true&hdr=true&dolbyvision=true)

any suggestions?

check the manifest.json what error u get.

jakermx commented 5 years ago

I tried workaround with Rpi 3 B+ with no luck. I might doing something wrong. Snip from the logfile:

18:44:01.251 T:1443885808 NOTICE: Creating InputStream 18:44:03.077 T:1443885808 ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (http://localhost:35945/manifest?id=80199682&dolby=true&hevc=true&hdr=true&dolbyvision=true)

any suggestions?

Try disabling HEVC, HDR, DolbyVision....

Terrorhawk commented 5 years ago

Got fast playback changing the indexRange

                # BaseURL
                base_url = self.__get_base_url(stream['urls'])
                ET.SubElement(rep, 'BaseURL').text = base_url
                # Init an Segment block
                sidx = stream['downloadable_id']
                segment_base = ET.SubElement(
                    parent=rep,
                    tag='SegmentBase',
                    #Removed 
                    #indexRange='0-' + str(stream['startByteOffset'] + stream['size']),
                    indexRange='0-' + str(init_length),
                    indexRangeExact='true')

JakerMX_MSL_Workaround.zip

i tested this version on a rpi3 (not rpi 3b+) and it works. only thing is that i cant get the 720p stream. it always uses 1080 even when i set max resolution to 720 So i got a few hickups while playing with hyperion enabled for my ambilight. Without hyperion its running near perfect.

Great work so far !!

Terrorhawk commented 5 years ago

Update on myself: I set max secure to 640 and its playing at 720

jakermx commented 5 years ago

The resolution set on InputStream is for height, strange since it is more related to width....jejejeje

So, 720 take 1080 o higher x720...

louiz commented 5 years ago

Got fast playback changing the indexRange

JakerMX_MSL_Workaround.zip

With the MSL2 branch and these 2 files applied, I can play netflix videos fine (audio + video). :+1:

peak3d commented 5 years ago

@louiz msl2 branch should play audio + video without any patches.

VLPilot commented 5 years ago

I tried workaround with Rpi 3 B+ with no luck. I might doing something wrong. Snip from the logfile: 18:44:01.251 T:1443885808 NOTICE: Creating InputStream 18:44:03.077 T:1443885808 ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (http://localhost:35945/manifest?id=80199682&dolby=true&hevc=true&hdr=true&dolbyvision=true) any suggestions?

check the manifest.json what error u get.

I might be little dummy but where manifest.json file is located?

peak3d commented 5 years ago

.kodi/user_data/addondata/plugin.video.netflix/

ryangodammit commented 5 years ago

You guys are awesome thanks for all the hard work.

I’m totally useless at diagnosis and repair, but more than happy to do some testing to help out. Let me know if there’s anything I can do or test. Running libreelec

HiassofT commented 5 years ago

thanks a lot, with the msl2 branch audio and video work fine again!

One minor issue: automatic audio stream selection doesn't seem to work as before. It now selects German 2ch instead of English (original) 6ch by default (checked with Black Mirror S01E01, Marvel's Daredevil S03E01)

maxmasou commented 5 years ago

Maybe it's only on my side but I think subtitle are not working right now

peak3d commented 5 years ago

@HiassofT what happens if you remove "prefer default streams" in settings::player::language ? @maxmasou subs are not yet implemented, I guess they'll come tonight

VLPilot commented 5 years ago

.kodi/user_data/addondata/plugin.video.netflix/

Interesting. In that folder are only msl_data.json file. Fishy situation.