mediathekviewweb icon indicating copy to clipboard operation
mediathekviewweb copied to clipboard

Auflösung WDR-Videos fehlerhaft

Open pidoubleyou opened this issue 5 years ago • 2 comments

Im Forum wurde gemeldet, dass für eine Sendung von Doctor Who die HD-Url eine viel zu kleine Auflösung besitzt.

Stichprobenhaft habe ich noch bei einem weiteren WDR-Film gefunden.

In den master.m3u8-Dateien der beiden Filme sind die Videos nicht nach den Qualitäten sortiert.

pidoubleyou avatar Nov 19 '20 18:11 pidoubleyou

Da muss ich wohl nochmal an den Code. Weißt du zufällig aus dem Stegreif, woran ich die Qualität erkennen kann? Ist bei einer höheren Qualität die Zahl einfach höher?

bagbag avatar Nov 25 '20 10:11 bagbag

Leider nicht immer. Und in solchen Fällen kommt es zu Problemen. Eine straightforward Lösung wäre die URLs mit ffprobe (aus ffmpeg) durchzuprobieren. Da bekommt man die Auflösung.

Wie ich bereits hier https://github.com/ytdl-org/youtube-dl/issues/17744#issuecomment-652637746 erwähnt habe, ermittle ich in meinen Bash-Scripts die passende URL für bestimmte Qualität aus JSON-Daten wie folgt. Man braucht nur die "contentId" der Sendung (und eine Zahl zur Qualität-Auswahl, hier z.B. 3 für "HD"):

JSON=`wget -q -O - "https://www.ardmediathek.de/play/media/${contentId}"`
URL=`echo "$JSON" | jq -r '._mediaArray[0]._mediaStreamArray[] | select(._quality == 3) | ._stream'`

ggf. "https:" am Anfang der $URL einfügen.

Liste der magischen Zahlen für die Qualität:

  • 0 "Low Quality"
  • 1 "Medium Quality"
  • 2 "High Quality" (actually "SD")
  • 3 "HD"
  • 4 "FullHD"

Für die Qualität <= 2 sind manchmal mehrere URLs verfügbar ("Subqualität").

Nehmen wir als Beispiel den von @pidoubleyou genannten Beitrag "Krankenhäuser in der Krise: Offenbart Corona Fehler im System?"

https://www.ardmediathek.de/ard/video/westpol-eins-zu-eins/krankenhaeuser-in-der-krise-offenbart-corona-fehler-im-system/wdr-fernsehen/Y3JpZDovL3dkci5kZS9CZWl0cmFnLTY5Y2RkN2U1LWFlMDgtNDEyNi04NzMyLTRlMzBmODFlMWNiMg/

$ contentId=83313272
$ JSON=`wget -q -O - "https://www.ardmediathek.de/play/media/${contentId}"`
$ URL=`echo "$JSON" | jq -r '._mediaArray[0]._mediaStreamArray[] | select(._quality == 3) | ._stream'`
$ echo $URL
//wdrmedien-a.akamaihd.net/medp/ondemand/weltweit/fsk0/230/2301043/2301043_30290253.mp4

Zur Kontrolle:

$ ffprobe "https:$URL"
[... cut ...]
  Duration: 00:28:58.01, start: 0.000000, bitrate: 3679 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 3581 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
[... cut ...]

1280x720 - HD - stimmt.

P.S. jq - Command-line JSON processor.

andreygursky avatar Nov 25 '20 13:11 andreygursky