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
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:
@@ -1289,13 +1289,22 @@ def get_play_url(media_source, play_session_id, channel_id=None):
|
|||||||
audio_max_channels = settings.getSetting("audio_max_channels")
|
audio_max_channels = settings.getSetting("audio_max_channels")
|
||||||
playback_video_force_8 = settings.getSetting("playback_video_force_8") == "true"
|
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 = {
|
transcode_params = {
|
||||||
"MediaSourceId": item_id,
|
"MediaSourceId": item_id,
|
||||||
"DeviceId": device_id,
|
"DeviceId": device_id,
|
||||||
"PlaySessionId": play_session_id,
|
"PlaySessionId": play_session_id,
|
||||||
"api_key": user_token,
|
"api_key": user_token,
|
||||||
"SegmentContainer": "ts",
|
"SegmentContainer": "ts",
|
||||||
"VideoCodec": "h264",
|
"VideoCodec": transcode_video_codec,
|
||||||
"VideoBitrate": bitrate,
|
"VideoBitrate": bitrate,
|
||||||
"MaxWidth": playback_max_width,
|
"MaxWidth": playback_max_width,
|
||||||
"AudioCodec": audio_codec,
|
"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
|
# Note: force_transcode_* settings filter codecs for DirectPlay independently
|
||||||
# This setting only affects what codec the server transcodes TO when transcoding is needed
|
# This setting only affects what codec the server transcodes TO when transcoding is needed
|
||||||
transcode_target_codec_setting = settings.getSetting("transcode_target_video_codec")
|
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":
|
if transcode_target_codec_setting == "1":
|
||||||
transcode_video_codec = "hevc"
|
transcode_video_codec = "hevc"
|
||||||
elif transcode_target_codec_setting == "2":
|
elif transcode_target_codec_setting == "2":
|
||||||
transcode_video_codec = "av1"
|
transcode_video_codec = "av1"
|
||||||
else:
|
else:
|
||||||
transcode_video_codec = "h264"
|
transcode_video_codec = "h264"
|
||||||
|
log.debug("Transcode target video codec: {0}".format(transcode_video_codec))
|
||||||
|
|
||||||
profile = {
|
profile = {
|
||||||
"Name": "Kodi",
|
"Name": "Kodi",
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
<setting type="sep" />
|
<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="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="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="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" enable="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_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_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" />
|
<setting id="force_transcode_msmpeg4v3" type="bool" label="30240" default="false" visible="true" enable="true" />
|
||||||
|
|||||||
Reference in New Issue
Block a user