jaylinski / kodi-addon-vimeo

📽 Vimeo Add-on for Kodi.
MIT License
13 stars 2 forks source link

Can't play videos in HLS format anymore #56

Closed thombet closed 2 years ago

thombet commented 3 years ago

Hello,

I would like to report a bug: I am not able to videos anymore from on Kodi 18.9 with add-on version 5.2.0. The navigation in the categories works though.

On MacOS 10.11.6, the error makes Kodi crash and the log is not very clear about this: https://paste.nomagic.uk/?82894fdbf4b380cd#HzH292SbXjCHZpnDZMS69LGG24Jjr3LbXAD2Eq2SmfV1

On OSMC/RPi 3, Kodi do not crash and the error is the following: https://paste.nomagic.uk/?fdf3e869e98e1ff1#HyiUujUXr2GypKp52D7gpV4FG1obct1iPrK5AveX81bu

Do you confirm the issue on your side?

Thanks in advance for your support!

jaylinski commented 3 years ago

@thombet I can confirm the issue. As a workaround you can choose 1080p instead of HLS in the plugin settings.

Details: Vimeo now adds the AV1-format in its HLS streams. Kodi (ffmpeg) tries to play those, even if it doesn't support it and will thus fail.

thombet commented 3 years ago

Thanks for the workaround 👍

If I select a lower quality (like 480p) it does not seem to work (probably this quality does not exist for the video I tried). Is there a way to play a video with the quality configured in the settings or higher automatically?

jaylinski commented 3 years ago

@thombet Nope. The current logic is pretty dumb. It uses the selected quality if it is found, if not, it simply uses the first video-link from the list: https://github.com/jaylinski/kodi-addon-vimeo/blob/v5.2.0/resources/lib/api.py#L304-L330

Can definitely be improved. That's why HLS is the default option.

thombet commented 3 years ago

@thombet Nope. The current logic is pretty dumb. It uses the selected quality if it is found, if not, it simply uses the first video-link from the list: https://github.com/jaylinski/kodi-addon-vimeo/blob/v5.2.0/resources/lib/api.py#L304-L330

Actually I think I ran into a different problem when I tried with 480p ^^ It seems an error is thrown for any video when the quality 480p is configured in the add-on settings. The error is the following:

Error log ```python ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<-- - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS! Error Type: Error Contents: '480p' Traceback (most recent call last): File "/Users/xxxx/Library/Application Support/Kodi/addons/plugin.video.vimeo/addon.py", line 3, in plugin.run() File "/Users/xxxx/Library/Application Support/Kodi/addons/plugin.video.vimeo/resources/plugin.py", line 95, in run resolved_url = api.resolve_media_url(media_url) File "/Users/xxxx/Library/Application Support/Kodi/addons/plugin.video.vimeo/resources/lib/api.py", line 177, in resolve_media_url media_url = self._extract_url_from_search_response(res["play"]) File "/Users/xxxx/Library/Application Support/Kodi/addons/plugin.video.vimeo/resources/lib/api.py", line 305, in _extract_url_from_search_response video_format = self.settings.VIDEO_FORMAT[self.video_stream] KeyError: '480p' -->End of Python script error report<-- ```

The error is thrown for videos which do not have the 480p quality (for instance this video) and also when the quality does exist (like this video).

Do you also get this issue on your side?

jaylinski commented 3 years ago

@thombet Yep, the plugin-settings don't match the internal settings. :see_no_evil: I will fix that. 540p and above will work.

thombet commented 3 years ago

Thanks for the hint, I confirm it works with 540p on my side. By the way I don't know the code of this add-on but if you need help in fixing the bugs I reported in this ticket, let me know I could help 😉

EDIT: by "help" I obviously mean in case you don't have time to fix them.

jaylinski commented 3 years ago

@thombet I already have a fix for the 480p issue and the AV1 codec issue: #57

But while debugging the issues, I noticed that all AV1-enabled HLS playlists have broken audio-streams. I wrote the Vimeo team, maybe they'll fix it. Otherwise I may change the default settings from HLS to 1080p in the meantime. :thinking:

jaylinski commented 3 years ago

My guess is that Vimeo won't fix this issue because, as far as I know, they are not using HLS themselves. So I'm going to add DASH support via the inputstream.adaptive-addon (Vimeo uses DASH almost everywhere).

thombet commented 3 years ago

Thanks for the update.

I am not at all an expert in video streaming technology but I understand that using DASH over HLS will allow the streams to be played by Kodi. May I know what is the difference between a fixed quality (1080p for instance) and DASH/HLS? DASH/HLS will adapt the quality automatically?

Otherwise I may change the default settings from HLS to 1080p in the meantime.

I don't know how many videos are impacted but it is probably a good solution to avoid users facing the same issue.

jaylinski commented 3 years ago

I am not at all an expert in video streaming technology but I understand that using DASH over HLS will allow the streams to be played by Kodi.

Kodi uses ffmpeg, which can play HLS and DASH streams (https://ffmpeg.org/ffmpeg-formats.html). Both are similar formats. While HLS can be played natively, DASH can only be played by Kodi with the inputstream.adaptive-addon (I have no idea why...).

May I know what is the difference between a fixed quality (1080p for instance) and DASH/HLS? DASH/HLS will adapt the quality automatically?

Yes, with DASH/HLS multiple qualities of a video are provided. And since the video is split in small chunks, you can change the quality of a video during playback (thus adaptive). Adaptive bitrate switching sadly still doesn't work with Kodi, you have to switch manually: https://github.com/xbmc/inputstream.adaptive#bandwidth-and-resolution

thombet commented 3 years ago

Very clear explanations, thanks 👍