Catch-up-TV-and-More / plugin.video.catchuptvandmore

Replay, Live TV and websites videos addon for Kodi
https://catch-up-tv-and-more.github.io
GNU General Public License v2.0
282 stars 89 forks source link

No subtitles on replay #351

Closed zigarn closed 3 years ago

zigarn commented 4 years ago

Describe the bug

Even when activating the subtitles settings, they are not displayed when playing a replay.

To Reproduce

Steps to reproduce the behavior:

  1. Activate subtitles in CUTV&More settings > Quality and content > Enable subtitles if present in the content
  2. Launch a replay with subtitle, e.g. France 5 > Echappées belles
  3. Enable subtitle in video

Expected behavior

Subtitles name should be listed in the video subtitles settings, subtitles should be displayed on video.

Actual behavior

No subtitle displayed on video, "None" listed in video subtitle settings.

Your environment

wwark commented 4 years ago

Bonjour @zigarn,

Je viens de vérifier la vidéo Echapée Belle Morbihan (France 5) Pour cette vidéo nous n'avons pas de soustitre proposé par l'API.

A cette URL, on ne trouve aucun élément dans le champ caption. https://player.webservices.francetelevisions.fr/v1/videos/f80bbcec-9379-4c22-91e9-724e61ca3bca?country_code=FR&device_type=mobile&browser=chrome

Merci, Wwark

zigarn commented 4 years ago

Merci pour votre réponse rapide et efficace.

C'est dommage, pourtant les sous-titres sont disponibles sur le site web : https://www.france.tv/france-5/echappees-belles/1919615-le-morbihan-de-village-en-village.html : image image

Et ils sont aussi disponible via le replay de la FreeBox.

Cela dépend des émissions sur FranceTV ou aucune ne propose des sous-titres via l'API ?

wwark commented 4 years ago

On a changé d'API de France TV dernièrement il y a surement quelque chose à regarder sur ce point ... J'ai testé plusieurs vidéos sans sous titre. @sy6sy2 dans la nouvelle API tu aurais un trace avec les sous titre pour voir pourquoi ils n'apparraissent pas ?

sy6sy2 commented 4 years ago

Hello tout le monde ! J'essaie de regarder ça rapidement en faisant une trace depuis l'iPhone pour voir si (1) les sous titres fonctionnent sur l'app de l'iPhone et (2) si on peut les récupérer depuis CUTV&M avec l'API qui va bien. Je vous tiens au courant !

sy6sy2 commented 4 years ago

Apparement les sous-titres sont directement dans le m3u8. Exemple avec un épisode de n'oubliez pas les paroles:

#EXTM3U
#EXT-X-VERSION:5
## Created with Unified Streaming Platform(version=1.8.3)
#EXT-X-SESSION-KEY:METHOD=AES-128,URI="https://cloudreplayfrancetv.akamaized.net/keys/crypt.key"

# AUDIO groups
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-96",NAME="Audio Français",LANGUAGE="fr",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="236213247_france-domtom_TA-audio_fre=96000.m3u8"

# SUBTITLES groups
#EXT-X-MEDIA:TYPE=SUBTITLES,SUBFORMAT=WebVTT,GROUP-ID="textstream",NAME="Sous-Titres Malentendant",LANGUAGE="fr",AUTOSELECT=YES,DEFAULT=YES,URI="236213247_france-domtom_TA-textstream_fre=1000.m3u8"

# variants
#EXT-X-STREAM-INF:BANDWIDTH=522000,CODECS="mp4a.40.2,avc1.42C01E",RESOLUTION=384x216,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
236213247_france-domtom_TA-video=400000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1105000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=640x360,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
236213247_france-domtom_TA-video=950000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1582000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=960x540,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
236213247_france-domtom_TA-video=1400000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2218000,CODECS="mp4a.40.2,avc1.64001F",RESOLUTION=1280x720,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
236213247_france-domtom_TA-video=2000000.m3u8

# keyframes
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=53000,CODECS="avc1.42C01E",RESOLUTION=384x216,URI="keyframes/236213247_france-domtom_TA-video=400000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=126000,CODECS="avc1.4D401F",RESOLUTION=640x360,URI="keyframes/236213247_france-domtom_TA-video=950000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=186000,CODECS="avc1.4D401F",RESOLUTION=960x540,URI="keyframes/236213247_france-domtom_TA-video=1400000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=265000,CODECS="avc1.64001F",RESOLUTION=1280x720,URI="keyframes/236213247_france-domtom_TA-video=2000000.m3u8"

Je n'ai pas encore regardé comment ça se passe du coté de Kodi, cet extrait provient directement de l'App iOS france.tv.

@wwark, tu sais si (1) Kodi gère les fichiers M3U8 avec sous-titres et (2) si on utilise les M3U8 pour France TV? (il me semble que tu avais codé un "resolver" pour france Tv mais je n'ai jamais trop regardé comment il fonctionne :-/

Je suppose que ce fichier c'est du DRM Apple (FairPlay) ... ?

wwark commented 4 years ago

Merci @sy6sy2 pour cette vérification. FranceTV a donc changé l'emplacement des sous-titres .... Je ne crois pas que Kodi gère les sous-titres directement dans le m3u8. Le soustitre est présent dans le clé subtitle de l'item vidéo. Il faudrait extraire le sous-titre du fichier m3u8. (à voir si KOdi gère des soustitre de ce format URI : 236213247_france-domtom_TA-textstream_fre=1000.m3u8) Oui c'est du m3u8 pour France TV.

Merci,

wwark commented 4 years ago

Après avoir regarder le resolver plus en détail. On a aussi des cas de MPD mais sans DRM (je n'ai pas trouvé de cas)

Et aussi pour les sous-titres je n'avais pas trouvé de cas ... # Implementer Caption (found case) # Implement DRM (found case)

Bon c'est normal qu'on est plus de sous-titre :)

wwark commented 4 years ago

Même pour les replays de Doctor Who en multi langues le caption est vide ... https://player.webservices.francetelevisions.fr/v1/videos/5e09b855-e310-4f98-b702-bfe53e3419ef?country_code=FR&device_type=mobile&browser=chrome

Sur IOS tu as aussi cette url de récupération de la vidéo ?

EXTM3U

EXT-X-VERSION:5

Created with Unified Streaming Platform(version=1.8.3)

EXT-X-SESSION-KEY:METHOD=AES-128,URI="https://cloudreplayfrancetv.akamaized.net/keys/crypt.key"

AUDIO groups

EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-96",NAME="Audio Français",LANGUAGE="fr",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-audio_fre=96000.m3u8"

EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-96",NAME="Audio Originale",LANGUAGE="en",AUTOSELECT=YES,CHANNELS="2",URI="5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-audio_eng=96000.m3u8"

SUBTITLES groups

EXT-X-MEDIA:TYPE=SUBTITLES,SUBFORMAT=WebVTT,GROUP-ID="textstream",NAME="Sous-Titres Malentendant",LANGUAGE="fr",AUTOSELECT=YES,DEFAULT=YES,URI="5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-textstream_fre=1000.m3u8"

variants

EXT-X-STREAM-INF:BANDWIDTH=522000,CODECS="mp4a.40.2,avc1.42C01E",RESOLUTION=384x216,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE

5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=400000.m3u8

EXT-X-STREAM-INF:BANDWIDTH=1105000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=640x360,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE

5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=950000.m3u8

EXT-X-STREAM-INF:BANDWIDTH=1582000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=960x540,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE

5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=1400000.m3u8

EXT-X-STREAM-INF:BANDWIDTH=2218000,CODECS="mp4a.40.2,avc1.64001F",RESOLUTION=1280x720,FRAME-RATE=25,AUDIO="audio-aacl-96",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE

5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=2000000.m3u8

keyframes

EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=53000,CODECS="avc1.42C01E",RESOLUTION=384x216,URI="keyframes/5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=400000.m3u8"

EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=126000,CODECS="avc1.4D401F",RESOLUTION=640x360,URI="keyframes/5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=950000.m3u8"

EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=186000,CODECS="avc1.4D401F",RESOLUTION=960x540,URI="keyframes/5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=1400000.m3u8"

EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=265000,CODECS="avc1.64001F",RESOLUTION=1280x720,URI="keyframes/5e09b855-e310-4f98-b702-bfe53e3419ef_france-domtom_TA-video=2000000.m3u8"

sy6sy2 commented 4 years ago

J'ai cette URL pour n'oubliez pas les paroles: https://player.webservices.francetelevisions.fr/v1/videos/c0629cc2%2D1853%2D44d4%2D992f%2D7abbc4433bcc?connection_type=WiFi&player_version=5.14.0&app_version=9.8.1_34&os=iOS&os_version=13.3.1&device=iPhone9,3&device_type=mobile&package_name=fr.francetv.apps.pluzz&country_code=FR&diffusion_mode=single Donc idem ;-)

D'après ce que je vois dans la trace, les sous-titres sont (comme la vidéo et le son) coupés en petits morceaux qui sont téléchargés au fur et à mesure.... Si je trouve un M3U8 je ferrais le test pour voir déjà si Kodi supporte les sous-titres de cette forme.

wwark commented 4 years ago

Merci pour la confirmation. Si le sous titre est aussi découpé il y a peu de chance que ça marche dans item.subtitle ...

sy6sy2 commented 4 years ago

Je me trompe peut être, mais je pense qu'avec le combo Kodi 19 et https://github.com/xbmc/inputstream.ffmpegdirect il y a aura moyen que ça fonctionne mieux non ? Parce que FFMPEG sait normalement gérer tout seul ce genre de fichiers M3U8

Edit: Je vais regarder un peu ce matin s'il n'y a pas moyen de choper ces sous-titres quand même.

sy6sy2 commented 4 years ago

Bon, j'arrive à faire lire le M3U8 HLS directement par Inputstream adaptive (video et son ok). Par contre j'ai l'impression que c'est FFMPEG qui n'aime pas les sous-titres, je me prends ce message:

2020-09-11 09:49:30.352 T:1223277    INFO <general>: ffmpeg[0x7fb872a76c40X]: [hls] Skip ('# SUBTITLES groups')
2020-09-11 09:49:30.352 T:1223277   DEBUG <general>: ffmpeg[0x7fb872a76c40X]: [hls] Can't support the subtitle(uri: 236213963_france-domtom_TA-textstream_fre=1000.m3u8)

Je vais quand même ouvrir une issue chez ISA, on ne sait jamais... Edit: https://github.com/peak3d/inputstream.adaptive/issues/512

sy6sy2 commented 4 years ago

Bon les gars, je crois que ISA n'y pourra pas grand chose, c'est plutôt aux gars de FFMPEG d'implémenter les sous-titres "segments" à en croire leur code source :-/ --> https://github.com/FFmpeg/FFmpeg/blob/97d802914994b29eba97dc49e35e8ed60b5b8ae3/libavformat/hls.c#L494-L499

wwark commented 4 years ago

Merci pour ces vérifications @sy6sy2. on peut laisser ce ticket ouvert pour garder l'information.

Gaet81 commented 3 years ago

Hello, Je ne sais pas où ça en est et si il y a de nouvelles possibilités avec la V19, mais ne pourrait-on pas utiliser l'addon M3U8 pour récupérer ces sous-titres? https://github.com/globocom/m3u8 Il est visiblement déjà dispo dans Matrix d'après cette page: https://kodi.wiki/view/Add-on:M3u8

sy6sy2 commented 3 years ago

Hello tout le monde, je viens de faire un test rapide avec un épisode de n'oubliez pas les paroles et les sous-titres fonctionnent bien maintenant. Est-ce que quelqu'un peut confirmer (ou non) afin de fermer cet issue ?

zigarn commented 3 years ago

Je vérifie ASAP.

zigarn commented 3 years ago

Android 8 Kodi 19.1.0 CUTV&More 0.2.35

France 5 > Échappées belles ==> sous-titres OK France 2 > Un si grand soleil ==> sous-titres OK

Donc ça marche ! Merci bien.

Cependant, je constate que malgré l'option globale d'activation des sous-titres si disponible, je suis obligé d'activer les sous-titres à chaque vidéo, mais c'est un autre problème.

sy6sy2 commented 3 years ago

Super merci beaucoup pour le test !

Concernant l'option "sous-titre" présente dans les réglages du plugin, en effet il s'agit d'une ancienne option dont on se servait pour indiquer (ou non) au player de Kodi l'URL des sous-titre d'un flux vidéo. Pas sûr que serve encore beaucoup parce que la "bonne" façon de faire c'est d'indiquer au player de Kodi les flux de sous titre quand on peut les avoir et après l'user peut s'il le souhaite activer ou non les sous titre durant la lecture avec les réglages built-in de Kodi.

@wwark tu dois savoir mieux que moi pour ça, peut être qu'on peut supprimer ce réglage et virer tous les if plugin.setting.get_boolean('active_subtitle') afin de faire un item.subtitles.append(subtitle_url) dans tous les cas ? Qu'en penses tu ?