diff --git a/resources/language/resource.language.de/strings.po b/resources/language/resource.language.de/strings.po index 558e697..a5ad46d 100644 --- a/resources/language/resource.language.de/strings.po +++ b/resources/language/resource.language.de/strings.po @@ -1233,3 +1233,27 @@ msgstr "Alle – Favoriten" msgctxt "#30678" msgid "TV Shows per page" msgstr "Fernsehsendungen pro Seite" + +msgctxt "#30679" +msgid "Transcode Ziel-Video-Codec" +msgstr "Transcode Ziel-Video-Codec" + +msgctxt "#30680" +msgid "H.264 (Standard)" +msgstr "H.264 (Standard)" + +msgctxt "#30681" +msgid "H.265 (HEVC)" +msgstr "H.265 (HEVC)" + +msgctxt "#30682" +msgid "H264 zum Transcoding zwingen" +msgstr "H264 zum Transcoding zwingen" + +msgctxt "#30683" +msgid "AV1" +msgstr "AV1" + +msgctxt "#30684" +msgid "Disk-Caching deaktivieren (nur RAM)" +msgstr "Disk-Caching deaktivieren (nur RAM)" diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 04bb92e..0101da1 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -1224,3 +1224,27 @@ msgstr "Recap Skipper" msgctxt "#30678" msgid "TV Shows per page" msgstr "TV Shows per page" + +msgctxt "#30679" +msgid "Transcode target video codec" +msgstr "Transcode target video codec" + +msgctxt "#30680" +msgid "H.264 (default)" +msgstr "H.264 (default)" + +msgctxt "#30681" +msgid "H.265 (HEVC)" +msgstr "H.265 (HEVC)" + +msgctxt "#30682" +msgid "Force transcode h264" +msgstr "Force transcode h264" + +msgctxt "#30683" +msgid "AV1" +msgstr "AV1" + +msgctxt "#30684" +msgid "Disable disk caching (RAM only)" +msgstr "Disable disk caching (RAM only)" diff --git a/resources/lib/play_utils.py b/resources/lib/play_utils.py index a4fa08c..8f0641d 100644 --- a/resources/lib/play_utils.py +++ b/resources/lib/play_utils.py @@ -1540,7 +1540,12 @@ class PlaybackService(xbmc.Monitor): def get_item_playback_info(item_id, force_transcode): + # Filter codecs that should NEVER be played directly (always force transcoding) + # These settings work independently from the target codec setting below + # Example: force_transcode_h264=true + target=hevc means: H.264 files will be transcoded to H.265 filtered_codecs = [] + if settings.getSetting("force_transcode_h264") == "true": + filtered_codecs.append("h264") if settings.getSetting("force_transcode_h265") == "true": filtered_codecs.append("hevc") filtered_codecs.append("h265") @@ -1564,6 +1569,17 @@ def get_item_playback_info(item_id, force_transcode): audio_bitrate = int(audio_playback_bitrate) * 1000 + # Determine target video codec for transcoding + # Note: force_transcode_* settings filter codecs for DirectPlay independently + # This setting only affects what codec the server transcodes TO when transcoding is needed + transcode_target_codec_setting = settings.getSetting("transcode_target_video_codec") + if transcode_target_codec_setting == "1": + transcode_video_codec = "hevc" + elif transcode_target_codec_setting == "2": + transcode_video_codec = "av1" + else: + transcode_video_codec = "h264" + profile = { "Name": "Kodi", "MaxStaticBitrate": bitrate, @@ -1579,7 +1595,7 @@ def get_item_playback_info(item_id, force_transcode): "Protocol": "hls", "Type": "Video", "AudioCodec": audio_codec, - "VideoCodec": "h264", + "VideoCodec": transcode_video_codec, "MaxAudioChannels": audio_max_channels }, { diff --git a/resources/settings.xml b/resources/settings.xml index fba244a..4bd42cb 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -30,6 +30,8 @@ + + @@ -157,6 +159,7 @@ +