best CBR version.Code:MPD: https://vodnowusoawsdash-a.akamaihd.net/pgrn/streaming/watch/946662/1-10000-1-1-1-X.ism/rtlplus.mpd Key: c20cb5f427d2294ccd92e57d195166e5:2a250cffd2157c685efed20d1abc241b
+ Reply to Thread
Results 181 to 210 of 220
-
-
Hello,
I'm having a problem with the following video:
https://plus.rtl.de/die-geissens-eine-schrecklich-glamourose-fami-p_10990/video/robert...uroese-familie
I'm getting the following error:
09:13:01.260 WARN: [h264 @ 00000162351f8e80] top block unavailable for requested intra mode -1
09:13:01.261 WARN: [h264 @ 00000162351f8e80] error while decoding MB 0 0, bytestream 153456
The resulting MKV file has fine audio, but the video is unwatchable.
Does anyone have any ideas on how I can fix this?
N_m3u8DL-RE.exe "https://origin.vod.rtlde.bedrock.tech/rtlde/output/8/e/b/8ebb15d54ea415094452a19c38d4e6e034485e0a/static/1939898_9ce32c2b223ba026d61d6c05bcecfb8e_web_dash_ upTo1080p_1080p_vbr_cae_drm_hardware.mpd" --key 7dd97bd3e9895c2b8224c3a8a192f643:c3d91f318d7a53ddb 5c7d7db18079eff --save-dir "media\plus_rtl_de" --save-name "Die Geissens - Eine schrecklich glamouröse Familie 24-27 Robert unterm Messer" -M format=mkv
09:10:57.514 INFO : N_m3u8DL-RE (Beta version) 20251029
09:10:57.517 INFO : Loading URL: https://origin.vod.rtlde.bedrock.tech/rtlde/output/8/e/b/8ebb15d54ea415094452a19c38d4e...m_hardware.mpd
09:10:57.602 INFO : Content Matched: Dynamic Adaptive Streaming over HTTP
09:10:57.603 INFO : Parsing streams...
09:10:57.667 WARN : Writing meta json
09:10:57.681 INFO : Extracted, there are 7 streams, with 6 basic streams, 1 audio streams, 0 subtitle streams
09:10:57.683 INFO : Vid *CENC 1920x1080 | 6994 Kbps | video=6994619 | avc1.640029 | 1019 Segments | Main | ~43m28s
09:10:57.684 INFO : Vid *CENC 1920x1080 | 4343 Kbps | video=4343436 | avc1.640028 | 1019 Segments | Main | ~43m28s
09:10:57.692 INFO : Vid *CENC 1280x720 | 2350 Kbps | video=2350386 | avc1.64001F | 1019 Segments | Main | ~43m28s
09:10:57.695 INFO : Vid *CENC 1024x576 | 1436 Kbps | video=1436806 | avc1.64001F | 1019 Segments | Main | ~43m28s
09:10:57.695 INFO : Vid *CENC 1024x576 | 797 Kbps | video=797548 | avc1.64001F | 1019 Segments | Main | ~43m28s
09:10:57.696 INFO : Vid *CENC 640x360 | 419 Kbps | video=419139 | avc1.42C01E | 1019 Segments | Main | ~43m28s
09:10:57.696 INFO : Aud audio1=96000 | 96 Kbps | mp4a.40.2 | deu | 2CH | 1019 Segments | Main | ~43m28s
09:11:23.515 INFO : Parsing streams...
09:11:23.528 INFO : Selected streams:
09:11:23.529 INFO : Vid *CENC 1920x1080 | 6994 Kbps | video=6994619 | avc1.640029 | 1019 Segments | Main | ~43m28s
09:11:23.529 INFO : Aud audio1=96000 | 96 Kbps | mp4a.40.2 | deu | 2CH | 1019 Segments | Main | ~43m28s
09:11:23.530 WARN : Writing meta json
09:11:23.533 INFO : Save Name: Die Geissens - Eine schrecklich glamour├Âse Familie 24-27 Robert unterm Messer
09:11:23.534 WARN : MuxAfterDone is detected, binary merging is automatically enabled
09:11:23.535 INFO : Start downloading...Vid 1920x1080 | 6994 Kbps | video=6994619 | avc1.640029 | Main
09:11:23.555 WARN : Type: cenc
09:11:23.555 WARN : PSSH(WV): CAESEHPETU8E41XurFCFU2VBS1kiJGV5SmhjM05sZEVsa0lqb2 lZMnhwY0Y4eE9UTTVPRGs0SW4wPQ==
09:11:23.556 WARN : KID: 73c44d4f04e355eeac50855365414b59
09:11:23.557 WARN : Reading media info...
09:11:23.579 INFO : [0x1]: Video, h264 (avc1), 1920x1080
09:12:57.820 INFO : Binary merging...
09:12:59.215 WARN : Type: cenc
09:12:59.216 WARN : PSSH(WV): CAESEHPETU8E41XurFCFU2VBS1kiJGV5SmhjM05sZEVsa0lqb2 lZMnhwY0Y4eE9UTTVPRGs0SW4wPQ==
09:12:59.217 WARN : KID: 73c44d4f04e355eeac50855365414b59
09:12:59.231 INFO : Decrypting using MP4DECRYPT...
09:12:59.232 INFO : Start downloading...Aud audio1=96000 | 96 Kbps | mp4a.40.2 | deu | 2CH | Main
09:12:59.251 WARN : Reading media info...
09:12:59.300 INFO : [0x1]: Audio, aac (mp4a), 96 kb/s
09:13:00.987 INFO : Binary merging...
09:13:01.138 WARN : Die Geissens - Eine schrecklich glamour├Âse Familie 24-27 Robert unterm Messer.mp4
09:13:01.139 WARN : Die Geissens - Eine schrecklich glamour├Âse Familie 24-27 Robert unterm Messer.deu.m4a
09:13:01.139 WARN : Muxing to Die Geissens - Eine schrecklich glamour├Âse Familie 24-27 Robert unterm Messer.MUX.mkv
09:13:01.260 WARN : [h264 @ 00000162351f8e80] top block unavailable for requested intra mode -1
09:13:01.261 WARN : [h264 @ 00000162351f8e80] error while decoding MB 0 0, bytestream 153456
09:13:03.699 WARN : Cleaning files...
09:13:04.074 INFO : Done -
Code:
Decryption Key: 73c44d4f04e355eeac50855365414b59:fe5921e82735589a95a66b1dd0d9ceb7
-
The hardware urls now need Widevine L1 lol crazy for this shit type of content.
-
:ROTFLOL:
Probably in preparation of integration of Sky Germany after their deal was approved... -
@Lostion Do you have the new License URL and MPD URL with best Bitrate ?
The Bitrates of the MPD-Links in the Browser are quite low. -
Hello dear Video-professionals.
I tried to get https://plus.rtl.de/inside-aida-die-geheimnisse-des-kreuzfahrtgiganten-p_70558 but had no luck.
All this hitech computer stuff is so confusing - i miss the old VHS days...
Can anybody of you help or guide me to get just a playable video file of that documentation?
Have a nice evening -
Have Fun.Code:
--------------------------------------------------------------------------------- MPD URL: https://vodnowusoawsdash-a.akamaihd.net/pgrn/streaming/watch/1063208/0-10000-1-1-1-X.ism/rtlplus.mpd --------------------------------------------------------------------------------- Decryption Key: f19dbc170e3fac3fa1eef810c5ba01a4:cd611f5e6b2c535346260d65ad2434d1 ---------------------------------------------------------------------------------
-
-
-
Use:
https://github.com/nilaoda/N_m3u8DL-RE
Code:N_m3u8DL-RE "https://vodnowusoawsdash-a.akamaihd.net/pgrn/streaming/watch/1063208/0-10000-1-1-1-X.ism/rtlplus.mpd" --key f19dbc170e3fac3fa1eef810c5ba01a4:cd611f5e6b2c535346260d65ad2434d1
-
Last edited by MartinTH; 8th May 2026 at 16:52.
-
Heya,
In the past I used a simple script which calls widefrog and downloaded the "Gute Zeiten, Schlechte Zeiten" and "Alles was zählt"-Daily-Soaps for my wife (only the free ones it did not download yet).
Since the change of the rtl.plus.de page this ("of course") does no longer work. It relies on graphql-stuff etc.
Using WideVineProxy2 works though - gives me some N_m3u8DL-RE command and most important the proper key-combination.
Now here people asked for keys to a video (this "Inside Aida" thing). The question for me is HOW to retrieve the key (which scripts/tools are used to do so)?
I even registered at the rtl-page and visited the specific "Inside Aida" website (you linked earlier) but did not even have a "play" button or so.
The Stream-"ID" can be extracted by just checking the sources:
-> \"assetid\":\"rrn_watch_videohub_movie_1063208\ "
So I here eg could extract the ID (106308) and glue it together to the vodnow...akamaihd.net-link.
But I still miss the way on how to retrieve fitting keys.
---
Back to the daily soaps: Of course I can extract the video/stream ID for the series episodes this way too. But it is not enough to adjust the command for N_m3u8DL-RE by replacing the mpd-url in the one the widevine2 proxy browser addon gave me. Keys are for the "other one" (in this case the 576p variant).
TL/DR:
@MartinTH you wrote "I've now figured out the Trick myself": would be nice to reply what tricks you are using to download (guess you do a similar thing to extract the video IDs). But how do you find out the actually to use keys/kid? You wrote pages earlier, you use a custom script - guess you auth at rtl and then execute some "magic commands" doing the grunt work. Would be nice if you could paste a snippet to here.
@Lostion: Could you please describe what tools you use to get your "output" ("MPD Url", "Decryption Key") - and if the tools do not come with a "setup guide" (or are self-explanatory for "average joe"-coders/guys) it would be super helpful if you could give some "first steps" aid (or a link to an existing guide). As said: I have the urls (eg. https://plus.rtl.de/alles-was-zahlt-p_11229) and I have my login data (if that was required - but guess it should do as a guest user too)
Thanks in Advance. -
Hello, you can obtain the video keys; you have several options:
WideVineProxy2
https://forum.videohelp.com/threads/416316-%5BRelease%5D-WidevineProxy2-Extension-Bypa...s-Lic-wrapping
Vineless
https://github.com/Ingan121/Vineless
Widevine
https://pypi.org/project/pywidevine/
Then, using Widevine, you can extract the pssh code from the MPD and copy the license from F12 DevTools Network Search: regexp:widevine|acquire|license|drm|licence|mpd -
Thanks for the swift reply - as written in the message you have cited: I am using WideVineProxy2 already. But there I only get the keys for the 576p variant. They do not work for the "akamai"-links (which seem to be the same for all - except the videoID).
(I also tried the regexp stuff - the licence url seems to be h***s://lic.drmtoday.c**/license-proxy-widev***/cenc/ ) - I copied the post data as curl-command (some scripts like Hellyes accept it) but it fails to handle the 1080p stuff.
So I can extract the video/streamID, mangle the akamai-link and download it - but to decode I need the corresponding key/kid/... stuff.
And my question is - and was - how to retrieve these keys (for 1080p).
In addition any "scriptable" solution (not a browser extension) would be helpful too - as I would prefer to automate downloading (run once a week, download the week's episodes if they are not on disc already) as I did with widefrog.py.
Thanks in advance. -
Old and new endpoints have different license servers.
But old endpoints are gone soon so makes no sense to build a new script for it. -
Last edited by sesamap159; 9th May 2026 at 04:44.
-
He tries to get keys for the old endpoint and not the new one. Old and new endpoints are using different keys so widevineproxy2 will not work. Also some licensed series aren't 1080p in browser so widevineproxy2 will only output the 1024x576 variant.
-
A pity. The 576p variants often look awkwardly compressed - maybe my brain is already wired so hard to FHD and 4K (I am not watching RTL or "TV" in general) that it just looks odd. But I simply compared the 576p to the SD-Records my wife normally does with her old (but trusted) usb-thumb-drive-record-device. We do not pay for "HD" content on our cable contract - so SD only. She is fine with it.
@sesamap159
Lostion is right, I was interested in getting the "old" endpoints to work.
Generally I looking for some "convenient" script which I can use to feed with some stuff "extractable" right from a movie/show/series page - so eg video IDs (if there was some "simple formula" to transform it into an mpd-url, I could write that on my own). This is why I was asking @Lostion, how what they do to spit out these nicely using "MPD Url" and "Licence Key"-lines. And what "manual labor" they have to provide to the scripts.
As I am not interested in other "RTL media" than the two series, I would happily "hardcode" a lot of stuff in a script (things specific to the shows, but not changing between episodes etc). The less "magic" happens (sending out requests, doing challenges, ...) the better.
Enjoy your weekends.
Thanks.Last edited by CestMoi; 9th May 2026 at 06:47.
-
What did I do wrong? I am getting the following error message.
I wanted to download the video:Code:python rtl.py Traceback (most recent call last): File "/home/tvhuser/rtl.py", line 24, in <module> licence.raise_for_status() ~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3.14/site-packages/requests/models.py", line 1028, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://rtlplus-widevine.streamingtech.de/license/rtlplusThese are the data I used.Code:https://plus.rtl.de/moonfall-p_1745
rtl.pyCode:https://vodnowusoawsdash-a.akamaihd.net/pgrn/streaming/watch/892519/0-10000-1-1-1-X.ism/rtlplus.mpd AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAIARIgN2QxMjc2NzE5YTM4OTBmMDI5OWU4MGE1YzAyOTdjYzciBjg5MjUxOSoCU0Q= https://rtlplus-widevine.streamingtech.de/license/rtlplus
Thank you very muchCode:from pywidevine.cdm import Cdm from pywidevine.device import Device from pywidevine.pssh import PSSH import requests # prepare pssh pssh = PSSH("AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAIARIgN2QxMjc2NzE5YTM4OTBmMDI5OWU4MGE1YzAyOTdjYzciBjg5MjUxOSoCU0Q=") # load device device = Device.load("/Downloads/device.wvd") # load cdm cdm = Cdm.from_device(device) # open cdm session session_id = cdm.open() # get license challenge challenge = cdm.get_license_challenge(session_id, pssh) # send license challenge (assuming a generic license server SDK with no API front) licence = requests.post("https://rtlplus-widevine.streamingtech.de/license/rtlplus", data=challenge) licence.raise_for_status() # parse license challenge cdm.parse_license(session_id, licence.content) # print keys for key in cdm.get_keys(session_id): print(f"[{key.type}] {key.kid.hex}:{key.key.hex()}") # close session, disposes of session data cdm.close(session_id) -
Have Fun.Code:
--------------------------------------------------------------------------------- MPD URL: https://vodnowusoawsdash-a.akamaihd.net/pgrn/streaming/watch/892519/0-10000-1-1-1-X.ism/rtlplus.mpd --------------------------------------------------------------------------------- PSSH: AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAIARIgN2QxMjc2NzE5YTM4OTBmMDI5OWU4MGE1YzAyOTdjYzciBjg5MjUxOSoCU0Q= --------------------------------------------------------------------------------- License URL: https://rtlplus-widevine.streamingtech.de/license/rtlplus --------------------------------------------------------------------------------- Decryption Key: 7d1276719a3890f0299e80a5c0297cc7:7d1900c0c6d6ce4aa30efd2ffe8bd51f --------------------------------------------------------------------------------- Output Name: moonfall ---------------------------------------------------------------------------------
-
which useragent? i use also vineless but seems i am getting wrong PSSH and keys since the new website
so decrypting only working for 576p. -
It has nothing to do with the useragent you don't need any for license request nor for the normal API request.
-
I asked for it already in my last posts: would you please be so kind to post what tool you use here, and what input it requires (in the sense of what you pass to it to get the output).
Would help the people to resolve their requests on their own (aka downloading what they want to download) instead of having to play "beggars" to get some keys.
(eg the user asked what is wrong with his script - and the reply is the keys. Might help them, but only for this particular issue)
Edit: with "https://lic.drmtoday.com/license-proxy-widevine/cenc" as licence server (576p output for my "GZSZ" episodes) you always need a fresh "x-dt-auth-token" in the headers-part. The token is only valid for some minutes.
So for this one it seems you need to find a way to (automatically) retrieve a "current" token (valid for the upcoming request).
Once you got it, you can retrieve the keys-combination which is no longer requiring a token (that token is just to validate the drm-requests)
For the time being you can retrieve it via the post-params of the drmtoday-post-request you can fetch when opening up the dev bar when trying to play back the video ... not convenient. Would be nice if something could automate the "process" (or shortcut it) and retrieve the current token.
"Old" "https://rtlplus-widevine.streamingtech.de/license/rtlplus" might work differently - they require other data. Guess it is hard to retrieve the information based on what the _current_ mediathek service offers.
If @Lostion uses a different licence-server, then it might allow different ways to work with - this is why I asked what they use, and what they pass to it (input data). And if the input data is something "user specific", how to retrieve the data.
Thanks.Last edited by CestMoi; 12th May 2026 at 01:56.
-
i figured out:
rtl uses software and hardware mpd links.
hardware mpd links for some series/movies, you cant select 720/1080p in the browserplayer, affected the current and next episodes
so if you can select 720/1080p its software mpd link and works with vineless/WideVineProxy2 for me.
they have some issues oder it takes some days until its fixed.
EDIT:
checked rtl community and read some threads and issue is known and they working on it.Last edited by ginko; 12th May 2026 at 04:56.
-
Maybe this is of use for someone -- the following part allows for automated retrieval of the keys (and thus executing the N_3mu8DL-RE-tool etc).
In essence it follows what the browser does except for the retrieval of 2 tokens, you need to copy them on your own from the web-dev-bar in your browser (there is surely a way to do differently, but the tokens seem to be valid for quite some time here)
I base the code on "allhell3.py" and simply placed my stuff in the "main"-part. so copy allhell3.py, and adjust accordingly (some functions are obsolete then)
Code:# === IMPORTANT === # 1) open https://plus.rtl.de/gute-zeiten-schlechte-zeiten-p_10463/video/zu-viel-des-guten-c_1933680 # 2) observe web dev bar - first hit (here blocked by ublock origin): # https://heartbeat-v2.rtlde.bedrock.tech/v2/platforms/m6group_web/notify/view?authorization=eyJ0 ... .. &customerName=rtlde&clientRelease=6.41.2 # -> authorization => xBedrockToken # 3) filter web dev bar: "front-auth" # https://front-auth.rtlde.bedrock.tech/v2/rtlde/platforms/m6group_web/token # -> Authorization ("Bearer ey...") => authorizationBearer xBedrockToken = "eyJ ..." authorizationBearer = "Bearer eyJ ..." video_page_url = "https://plus.rtl.de/gute-zeiten-schlechte-zeiten-p_10463/video/zu-viel-des-guten-c_1933680" mpd_url = "" import requests import re import json # extract mpd link from website # sample old mpd_url = "https://vodnowusoawsdash-a.akamaihd.net/pgrn/streaming/watch/1002038/0-10000-1-1-1-X.ism/rtlplus.mpd" # sample new mpd_url = "https://origin.vod.rtlde.bedrock.tech/rtlde/output/5/7/1/571.../static/1933680_25ed..._web_dash_upTo576p_576p_vbr_cae_drm_software.mpd" html = requests.get(video_page_url).text match = re.search(r'\\"path\\":\\"(https:[^"]+?\.mpd[^"]*)\\"', html) if match: encoded_mpd_url = match.group(1) mpd_url = json.loads(f'"{encoded_mpd_url}"') else: print("No MPD-URL extracted") exit() # fetch pssh mpd_content = requests.get(mpd_url).text if (mpd_content): pssh = extract_or_generate_pssh(mpd_content) print("Extracted or generated PSSH:", pssh) else: print("Failed to fetch or parse MPD content.") # fetch auth token # - extract clip id from url # ex: https://plus.rtl.de/gute-zeiten-schlechte-zeiten-p_10463/video/zu-viel-des-guten-c_1933680 # clip id = 1933689 match = re.search(r"-c_(\d+)", video_page_url) clip_id = match.group(1) if match else None token_url ="https://drm.rtlde.bedrock.tech/v1/customers/rtlde/platforms/m6group_web/services/video_tv/users/guest/videos/clip_" + clip_id + "/upfront-token" headers = { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "de,en-US;q=0.9,en;q=0.8", "Request-Timeout": "10000", "X-Customer-Name": "rtlde", "X-Client-Release": "6.41.2", "X-Bedrock-Token": xBedrockToken, "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "cross-site", "Authorization": authorizationBearer, "Priority": "u=4", "Pragma": "no-cache", "Cache-Control": "no-cache", "referrer": "https://plus.rtl.de/", #sic! refe_rr_er } auth_token = "" if auth_token == "": token_response = requests.get(token_url, headers=headers) if token_response.ok: auth_token = token_response.json().get("token") #do license challenge lic_url = "https://lic.drmtoday.com/license-proxy-widevine/cenc/" method = "POST" headers = { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0", "Accept": "*/*", "Accept-Language": "de,en-US;q=0.9,en;q=0.8", "Accept-Encoding": "gzip, deflate, br, zstd", "Referer": "https://plus.rtl.de/", "x-dt-auth-token": auth_token, "Origin": "https://plus.rtl.de", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "cross-site", "Connection": "keep-alive", "Priority": "u=4", "TE": "trailers", } data = None # get key from pssh and license URL key_results = get_key(pssh, lic_url) print('\n' + key_results + '\n')
Should be fairly easy to adopt to a other video url. the "token_url" contains "guest" - normally there was a device-id there (or when logged in, a user id). I replaced it with "guest" (think any string works there - also device id fffff-fff... did not error out).
Excuse me if there is a solution which does already work and requires less hassle, but as my questions were not properly answered yet and I got impatient, I fiddled out something which at least looks as if it could do the job for me (for now). I am quite sure there are more effective ways - feel free to improve (or simply ignore my code input here). -
Maybe you all won't get any concrete Answers because this is a public Forum.
This means that the Developers of RTL+ can also read along here and possibly close any weak points.
Sometimes you just shouldn't say/write anything. -
Then these "silent readers" will also know about the tools and their "service files" written about here and in other threads.
This aside ... got my tool working, it downloads all missing episodes of the series. Skips paid ones etc.
Have split it into two scripts. One to extract the episodes from the series page and one "download from the given video link" (would have been easier to share the less "specific" script here - but guess I shouldn't)
Basically the script just loads in the javascript-object (each page contains it) and scans the elements of interest. Extracts required information to build the episode web urls and passes them to the downloader which does the drm-challenge stuff and feeds the mpd + keys to N_m3u8DL_RE if not already loaded before.
BTW: you asked for specific urls ... Once this information is publically exposed (eg urls only used by an android application...) developers could change that too ... so what you wrote affects you too.
Similar Threads
-
Downloading videos from RTL
By Data2006 in forum Video Streaming DownloadingReplies: 24Last Post: 21st Apr 2026, 17:26 -
DOWNLOAD protected DRM video separated video and audio from (learnyst)
By yassin in forum Video Streaming DownloadingReplies: 4Last Post: 8th Jan 2024, 04:36 -
First try with RTL+/TVNow
By resonator79 in forum Video Streaming DownloadingReplies: 3Last Post: 23rd Feb 2023, 06:41 -
How can I download videos from play.rtl.hr?
By Nintendo Custom in forum Video Streaming DownloadingReplies: 23Last Post: 24th May 2022, 12:51 -
Download HLS video using FFMPEG with separate video and audio URLs?
By oschrndz in forum Video Streaming DownloadingReplies: 2Last Post: 15th Dec 2020, 13:53


Quote
)