[dash2ts] Stream IPTV/Zattoo mit inputstream-adaptive und widevine

  • Ein Try Login wurde bei mir auch immer mit 403 beantwortet. Warum auch immer.

    Kann ich auch bestätigen.

    Ich teste mal mit den neuen Versionen.

    Bleibt leider unverändert. Beim Umschalten z.B. auf ARTE HD startet der Sender in der Auflösung 512x288 und nach ca. 10 Sekunden friert Bild und Ton ein.

  • Kanal derzeit nicht verfügbar Error:403'

    Da stimmt etwas nicht mit dem Kanal. Die 403 ist der HTTP Return Code und der lehnt deinen Request ab.

    Mir erscheint die Auflösung 512x288 falsch. Das kommt ja von ffmpeg und da könnte ein Fehler im cuvid dekoder sein. Bei mir mit vaapi klappt das wunderbar. Ich versuche das mal mit cuvid zu testen.

    Edited once, last by jojo61 (February 2, 2025 at 11:56 PM).

  • Ich bin Deinem Vorschlag gefolgt, die Fehlermeldung bleibt aber. Unter KODI kann ich ganz normal abspielen.

    Du solltest mal in deiner paramter.sqlite schauen ob da die Paramter uuid, appToken und beakerSessionID drin sind. Wenn da einer fehlt geht es nicht.

    Ich hoffe du hast im Hintergrund kein zattoostream -e laufen.

  • Ich versuche das mal mit cuvid zu testen.

    Also am cuvid decoder liegt es nicht. Bei mir läuft das auch mit cuvid einwandfrei. Ich werde mal das -v an dash2ts vom zattoostream durchreichen, dann kann man das ganze mal debuggen.

    Um das ganze nicht wieder übers GIT zu ziehen habe ich dir die zattoo.cpp Datei mal hier angehängt. Die musst du mach zattoo/src kopieren und dann wird das -v auch an dash2ts durchgereicht.

    Poste mal ein Log von einem HD Sender. Und nicht vergessen das -v in zattoostream.sh einzufügen :)

  • Da stimmt etwas nicht mit dem Kanal. Die 403 ist der HTTP Return Code und der lehnt deinen Request ab.

    Die Einträge habe ich mit zattoostream generiert:
    #> zattoostream -k /usr/lib/x86_64-linux-gnu/kodi -c|grep ARTE
    ARTE HD;IPTV:808:S=1|P=1|F=EXTT|U=zattoostream.sh|A=442127252:I:0:265=27:257=@4:0:0:1:442127252:80:0
    ARTE HD;IPTV:921:S=1|P=1|F=EXTT|U=zattoostream.sh|A=442127252:I:0:265=27:257=@4:0:0:1:442127252:80:0
    ARTE HD;IPTV:1181:S=1|P=1|F=EXTT|U=zattoostream.sh|A=442127252:I:0:265=27:257=@4:0:0:1:442127252:80:0
    ARTE HD;IPTV:1186:S=1|P=1|F=EXTT|U=zattoostream.sh|A=442127252:I:0:265=27:257=@4:0:0:1:442127252:80:0

    Poste mal ein Log von einem HD Sender. Und nicht vergessen das -v in zattoostream.sh einzufügen

    Bei der Anzahl der Einträge waren die "-v" Optionen erfolgreich :-). Ich habe versucht die Einträge auf das wesentliche zu reduzieren.

  • So dann schreibe ich mal was ich in dem Log so sehe:

    Das Hello senden funktioniert nicht und wird mit 403 beantwortet, scheint aber den Login nicht zu verhindern.

    Unter /usr/lib/x86_64-linux-gnu/kodi/addons/inputstream.adaptive/resources fehlt die Datei settings.xml und damit auch alle Speed einstellungen für den Download. Suche mal wo die bei Kodi 20 liegt und lege ein symlink dann dahin.

    Feb 4 17:38:49 vdr vdr[2056]: adaptivestream.bandwidth.init not found

    Feb 4 17:38:49 vdr vdr[2056]: Initial bandwidth: 0 bit/s ------ > Das ist das Result davon und deswegen entscheidet er sich für

    Feb 4 17:38:49 vdr vdr[2056]: Addon LOG: [Repr. chooser] Selected representation
    Feb 4 17:38:49 vdr vdr[2056]: ID 4 (Bandwidth: 452000 bit/s, Resolution: 512x288)

    Feb 4 17:38:49 vdr vdr[2056]: Codec h264 KeySystem 0 512-288

    und dann im softhdcuvid:

    Feb 4 17:38:50 vdr vdr: GetFormat Init ok 512x288

    Nach ein paar Downloads passt sich inputstream-adaptive der realen Downloadgeschwindigkeit an und schaltet auf 1280-720

    Feb 4 17:38:53 vdr vdr[2056]: get_stream_transfer Stream 1001 StreamType 1
    Feb 4 17:38:53 vdr vdr[2056]: Codec h264 KeySystem 0 1280-720 PID 327681 Profil 0 Feature 0000 Flags 0001 ExtraSize 38

    Das schafft aber wohl softhdcuvid nicht umzuschalten weil es ein Interlaced Film ist und deswegen stockt es dann und der VDR schickt ein Clear:

    Feb 4 17:39:05 vdr vdr: Cuvid_get_format: codec 27 fmts: ----> Hier merkt softhdcuvid zwar das sich die Auflösung ändert, aber irgendwie schafft er es nicht umzuschalten.
    Feb 4 17:39:05 vdr vdr: #0110x00000077 cuda
    Feb 4 17:39:05 vdr vdr: #0110x00000017 nv12
    Feb 4 17:39:05 vdr vdr: Cuvid_get_format: codec 27 fmts:
    Feb 4 17:39:05 vdr vdr: #0110x00000077 cuda
    Feb 4 17:39:05 vdr vdr: video profile -99 codec id 27
    Feb 4 17:39:05 vdr vdr: [2057] [softhddev] vom VDR kommt Clear: ----> Und hier nun der Clear und das ganze ist futsch.

    2 Dinge die schief laufen:

    - die Datei settings.xml wird nicht gefunden sie muss bei dir hier liegen: /usr/lib/x86_64-linux-gnu/kodi/addons/inputstream.adaptive/resources/settings.xml

    - das Umschalten der Auflösung im laufenden Stream funktioniert mit dem Cuvid Decoder (noch) nicht.

    Da werde ich mal weiter testen müssen. Ich hatte cuvid nur ohne umschalten getestet. Wenn die settings.xml aber gefunden wird dann wird gleich die richtige Auflösung genutzt und es gibt kein Umschalten.

  • Ich habe das Login nochmal näher an das Kodi verhalten angepasst. Ausserdem habe ich das Login und das lesen des EPG in einen daemon ausgelagert.

    Siehe auch die Readme's im GIT. Nun muss die Task zattood im Hintergrund laufen und sie macht das Session Login und liest das EPG.

    Bitte beim update nicht vergessen, auch zattoostream.sh hat sich geändert.

    Der <path_to_kodi> ist nun per default auf $HOME/.kodi gesetzt. Das sollte bei allen standard Kodi installationen stimmen. Nur bei Debian und evtl. Ubuntu scheint das nicht zu stimmen, Wer also Kodi per apt installiert muss auf jeden Fall den <path_to_kodi> in zattood.service anpassen.

    Anbei das nun aktuelle package.mk

  • Bevor ich es wieder vergesse, wollte ich mich für deine Arbeit und Unterstützung bedanken.

    - die Datei settings.xml wird nicht gefunden sie muss bei dir hier liegen: /usr/lib/x86_64-linux-gnu/kodi/addons/inputstream.adaptive/resources/settings.xml

    Ich musste zunächst unter Kodi Änderungen an den Einstellungen vom inputstream.adaptive Addon vornehmen, damit settings.xml angelegt wird:
    $HOME/.kodi/userdata/addon_data/inputstream.adaptive/settings.xml

    Dann verlinkt:
    #> ls -l /usr/lib/x86_64-linux-gnu/kodi/addons/inputstream.adaptive/resources/settings.xml
    lrwxrwxrwx 1 root root 72 Feb 4 23:53 /usr/lib/x86_64-linux-gnu/kodi/addons/inputstream.adaptive/resources/settings.xml -> /var/lib/vdr/.kodi/userdata/addon_data/inputstream.adaptive/settings.xml

    Leider bleibt jetzt das Bild direkt beim Umschalten mit dem Bild des aktuellen Senders (DVB-C) hängen unabhängig davon, ob adaptivestream.res.max und adaptivestream.res.secure.max auf >auto< oder 720p stehen.

    #> cat /usr/lib/x86_64-linux-gnu/kodi/addons/inputstream.adaptive/resources/settings.xml
    <settings version="2">
    <setting id="adaptivestream.type" default="true">default</setting>
    <setting id="adaptivestream.res.max" default="true">auto</setting>
    <setting id="adaptivestream.res.secure.max" default="true">auto</setting>
    <setting id="adaptivestream.bandwidth.init.auto" default="true">true</setting>
    <setting id="adaptivestream.bandwidth.init">40000</setting>
    <setting id="adaptivestream.bandwidth.min" default="true">0</setting>
    <setting id="adaptivestream.bandwidth.max">200000</setting>
    <setting id="adaptivestream.streamselection.mode" default="true">manual-v</setting>
    <setting id="adaptivestream.test.mode" default="true">switch-segments</setting>
    <setting id="adaptivestream.test.segments" default="true">2</setting>
    <setting id="HDCPOVERRIDE" default="true">false</setting>
    <setting id="ASSUREDBUFFERDURATION" default="true">60</setting>
    <setting id="MAXBUFFERDURATION" default="true">120</setting>
    <setting id="MEDIATYPE" default="true">0</setting>
    <setting id="NOSECUREDECODER" default="true">false</setting>
    <setting id="DECRYPTERPATH" default="true">special://home/cdm</setting>
    <setting id="overrides.ignore.screen.res.change" default="true">false</setting>
    <setting id="overrides.ignore.screen.res" default="true">false</setting>
    <setting id="debug.save.manifest" default="true">false</setting>
    <setting id="debug.save.license" default="true">false</setting>
    </settings>

    Kannst du deine settings.xml als Referenz teilen, bevor ich wieder logs einsammle?

    PS: Deine letzten Änderungen habe ich noch nicht übernommen.

  • Ich möchte mal ein ganz anderes (Dev) Thema anschneiden, bevor ich selbst versuche das herauszufinden.

    jojo61

    Siehst eine Möglichkeit oder gibt es irgendwo einen Aufruf um
    a) Die Laufzeit des Videos zu erhalten?. Das ist bei Live-TV wenig sinnvoll, aber mpd gibt es auch für normale Videos.
    b) Irgendwie im Video zu springen (seek)? Auch hier ist dies kein Thema für Live-TV. Aber es gibt z.B. Sender, die bieten im HbbTV die Möglichkeit, die aktuelle (Live-)Sendung von vorne zu starten und dabei eben auch zu springen (natürlich nur bis zum aktuellen Live-Zeitstempel und nicht zu weit in die Zukunft)

  • a) Die Laufzeit des Videos zu erhalten?.
    b) Irgendwie im Video zu springen (seek)?

    Also das inputstream-adaptive hat Funktionen die genau das zulassen. Man kann die total_time des Streams abfragen und auch im stream ein seek machen. Aber das habe ich noch nicht ausprobiert.

    int(__cdecl* get_total_time)(const struct AddonInstance_InputStream* instance);

    int64_t(__cdecl* seek_stream)(const struct AddonInstance_InputStream* instance, int64_t position, int whence);

  • Also das inputstream-adaptive hat Funktionen die genau das zulassen. Man kann die total_time des Streams abfragen und auch im stream ein seek machen. Aber das habe ich noch nicht ausprobiert.

    Ich glaube langsam, ich habe es verstanden. Im AddonHandler müssen dann die fehlenden Funktionen implementiert werden und mittels kodi.inputstream->toAddon->XXX erreicht man das Gewünschte.

    Und der AddonHandler wird z.B. in dash2ts instantiiert.

    Danke für den Schubser :)

  • Ja genau so ist es. Man muss die Klasse AddonHandler um die beiden Funktion (z.b. GetTotalTime und SeekStream) erweitern und dort dann kodi.inputstream->toAddon->XXX entsprechend aufrufen.

    Leider ist die Namesgebung noch etwas durcheinander, die Klasse AddonHandler ist in streamplayer zu finden. Die Funktionen würde aber dann in addonhandler.h gehören :)

    Mittlerweile kann ich etwas besser C++ und würde es wohl etwas anders aufbauen. Aber vielleicht mache ich ja mal ein refactoring.

  • Es gibt doch einen Update. Ich habe das lesen der settings.xml Datei eliminiert und das Update des EPG optimiert.

    Viel Spass.

    PS: Ich habe gesehen das bei zattoo einige Filme einen höheren Widevine Level (secure decoding) benötigen. Das führt dazu das sie auf meinem PC nicht laufen, aber auf dem Odroid durchaus.

    Der Odroid scheint bei Widevine zertifiziert zu sein.

  • Hier erstmal meine settings.xml

    Danke, deine settings.xml ist ja deutlich umfangreicher als meine. Hast du sie manuell erstellt?
    Auf jeden Fall hat es mit deinen Settings auf Anhieb funktioniert, auch wenn sie in der aktuellen Programmversion nicht mehr gebraucht wird (noch nicht getestet).

  • Gibt es einen bestimmten Sender, wo es sich mit den ausgestrahlten Filmen testen lässt?

    Also MTV Germany ist verschlüsselt geht aber mit widevine auf meinem PC. Bei Moviedome HD sieht das anders aus. Einige Filme gehen, aber die meisten gehen nicht. Auf dem Odroid gehen aber auch da alle.

    D.h wenn ein Film beim testen auf Moviedome HD nicht geht und ich schaue dann auf dem Odroid, dann geht er dort durchaus. Das Log auf meinem PC sagt dann das ein secure decoding nötig ist aber fehlschlägt.

  • Kannst Du denn feststellen, welcher Wivedine Level jeweils verlangt wird bzw. beim N2 verfügbar ist? Und mit welcher Auflösung wird das dann jeweils abgespielt?

    L1, das FullHD erlaubt, dürfte der N2 jedenfalls nicht haben. Das ist ja vermutlich der Grund, weshalb Amazon Prime unter Kodi nicht in FullHD funktioniert. Jedenfalls ist mir dies unter CoreElec noch nicht gelungen. In Bezug auf Streaming habe ich bisher nicht bemerkt, dass es irgendwas gäbe, was der N2 besser könnte als normale PC Hardware.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!