Fix incomplete transcode target codec implementation
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
CodeQL Analysis / analyze (python, 3.9) (push) Has been cancelled
Release Drafter / Update release draft (push) Has been cancelled
Test JellyCon / test (3.9) (push) Has been cancelled

- Add transcode target codec logic to get_play_url function
- Add debug logging to track codec selection
- Remove redundant enable="true" attributes in settings.xml

The get_play_url function was still using hardcoded h264, which caused
the transcode target codec setting to not take effect for direct
transcode URLs.
This commit is contained in:
mani
2026-01-05 23:41:16 +01:00
parent 30a07327bc
commit 10857e39b1
2 changed files with 14 additions and 3 deletions

View File

@@ -1289,13 +1289,22 @@ def get_play_url(media_source, play_session_id, channel_id=None):
audio_max_channels = settings.getSetting("audio_max_channels")
playback_video_force_8 = settings.getSetting("playback_video_force_8") == "true"
# Determine target video codec for transcoding
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"
transcode_params = {
"MediaSourceId": item_id,
"DeviceId": device_id,
"PlaySessionId": play_session_id,
"api_key": user_token,
"SegmentContainer": "ts",
"VideoCodec": "h264",
"VideoCodec": transcode_video_codec,
"VideoBitrate": bitrate,
"MaxWidth": playback_max_width,
"AudioCodec": audio_codec,
@@ -1573,12 +1582,14 @@ def get_item_playback_info(item_id, force_transcode):
# 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")
log.debug("Transcode target codec setting value: '{0}'".format(transcode_target_codec_setting))
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"
log.debug("Transcode target video codec: {0}".format(transcode_video_codec))
profile = {
"Name": "Kodi",

View File

@@ -30,8 +30,8 @@
<setting type="sep" />
<setting id="max_stream_bitrate" type="enum" label="30208" values="0.5 Mbps|1 Mbps|1.5 Mbps|2.0 Mbps|2.5 Mbps|3.0 Mbps|4.0 Mbps|5.0 Mbps|6.0 Mbps|7.0 Mbps|8.0 Mbps|9.0 Mbps|10.0 Mbps|12.0 Mbps|14.0 Mbps|16.0 Mbps|18.0 Mbps|20.0 Mbps|25.0 Mbps|30.0 Mbps|35.0 Mbps|40.0 Mbps|100.0 Mbps|1000.0 Mbps [default]|Maximum" visible="true" default="23" />
<setting id="allow_direct_file_play" type="bool" label="30433" default="false" visible="true" enable="true" />
<setting id="transcode_target_video_codec" type="select" label="30679" lvalues="30680|30681|30683" default="0" visible="true" enable="true" />
<setting id="force_transcode_h264" type="bool" label="30682" default="false" visible="true" enable="true" />
<setting id="transcode_target_video_codec" type="select" label="30679" lvalues="30680|30681|30683" default="0" visible="true" />
<setting id="force_transcode_h264" type="bool" label="30682" default="false" visible="true" />
<setting id="force_transcode_h265" type="bool" label="30236" default="false" visible="true" enable="true" />
<setting id="force_transcode_mpeg2" type="bool" label="30239" default="false" visible="true" enable="true" />
<setting id="force_transcode_msmpeg4v3" type="bool" label="30240" default="false" visible="true" enable="true" />