From e20c1a97ac308b574b151dff60b6b1467030b89d Mon Sep 17 00:00:00 2001 From: barnacleagent-svg Date: Wed, 3 Jun 2026 03:45:47 +0000 Subject: [PATCH] Fix listen mode audio bitrate labels --- src/invidious/routes/api/manifest.cr | 7 ++++--- src/invidious/routes/watch.cr | 5 ++++- src/invidious/views/components/player.ecr | 5 +++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/invidious/routes/api/manifest.cr b/src/invidious/routes/api/manifest.cr index c27caad7..1d46531e 100644 --- a/src/invidious/routes/api/manifest.cr +++ b/src/invidious/routes/api/manifest.cr @@ -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 diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr index 7a68a145..88ccdd98 100644 --- a/src/invidious/routes/watch.cr +++ b/src/invidious/routes/watch.cr @@ -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 diff --git a/src/invidious/views/components/player.ecr b/src/invidious/views/components/player.ecr index fbd472e0..153ad0f0 100644 --- a/src/invidious/views/components/player.ecr +++ b/src/invidious/views/components/player.ecr @@ -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) %> - + <% if !params.local && !CONFIG.disabled?("local") %> <% end %>