Fix listen mode audio bitrate labels

This commit is contained in:
barnacleagent-svg 2026-06-03 03:45:47 +00:00
parent 0e0ee40cb6
commit e20c1a97ac
3 changed files with 11 additions and 6 deletions

View File

@ -72,15 +72,16 @@ module Invidious::Routes::API::Manifest
lang = audio_track["id"]?.try &.as_s.split('.')[0] || "und"
is_default = audio_track.has_key?("audioIsDefault") ? audio_track["audioIsDefault"].as_bool : i == 0
displayname = audio_track["displayName"]?.try &.as_s || "Unknown"
bitrate = fmt["bitrate"]
bitrate = fmt["bitrate"].as_i
bitrate_kbps = (bitrate / 1000).round.to_i
# Different representations of the same audio should be groupped into one AdaptationSet.
# However, most players don't support auto quality switching, so we have to trick them
# into providing a quality selector.
# See https://github.com/iv-org/invidious/issues/3074 for more details.
xml.element("AdaptationSet", id: i, mimeType: mime_type, startWithSAP: 1, subsegmentAlignment: true, label: "#{displayname} [#{bitrate}k]", lang: lang) do
xml.element("AdaptationSet", id: i, mimeType: mime_type, startWithSAP: 1, subsegmentAlignment: true, label: "#{displayname} [#{bitrate_kbps}k]", lang: lang) do
codecs = fmt["mimeType"].as_s.split("codecs=")[1].strip('"')
bandwidth = fmt["bitrate"].as_i
bandwidth = bitrate
itag = fmt["itag"].as_i
url = fmt["url"].as_s

View File

@ -167,8 +167,11 @@ module Invidious::Routes::Watch
url = audio_streams[0]["url"].as_s
if params.quality.ends_with? "k"
bitrate = params.quality.rchop("k").to_i
bitrate *= 1000 if bitrate < 1000
audio_streams.each do |fmt|
if fmt["bitrate"].as_i == params.quality.rchop("k").to_i
if fmt["bitrate"].as_i == bitrate
url = fmt["url"].as_s
end
end

View File

@ -28,12 +28,13 @@
src_url = invidious_companion.public_url.to_s + src_url +
"&check=#{invidious_companion_check_id}" if (invidious_companion)
bitrate = fmt["bitrate"]
bitrate = fmt["bitrate"].as_i
bitrate_kbps = (bitrate / 1000).round.to_i
mimetype = HTML.escape(fmt["mimeType"].as_s)
selected = (i == best_m4a_stream_index)
%>
<source src="<%= src_url %>" type='<%= mimetype %>' label="<%= bitrate %>k" selected="<%= selected %>">
<source src="<%= src_url %>" type='<%= mimetype %>' label="<%= bitrate_kbps %>k" selected="<%= selected %>">
<% if !params.local && !CONFIG.disabled?("local") %>
<source src="<%= src_url %>&local=true" type='<%= mimetype %>' hidequalityoption="true">
<% end %>