From 140b6c1227754356145acd7b76820e3921745ef8 Mon Sep 17 00:00:00 2001 From: 138138138 <78271024+138138138@users.noreply.github.com> Date: Thu, 23 Jun 2022 02:13:22 +0800 Subject: [PATCH] DASH playback force highest quality m4a Since VideoJS is unable to handle adaptive audio quality, the best audo quality is forced for every video quality. --- src/invidious/routes/api/manifest.cr | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/invidious/routes/api/manifest.cr b/src/invidious/routes/api/manifest.cr index 8bc36946..8b5bfc06 100644 --- a/src/invidious/routes/api/manifest.cr +++ b/src/invidious/routes/api/manifest.cr @@ -61,7 +61,18 @@ module Invidious::Routes::API::Manifest next if mime_streams.empty? xml.element("AdaptationSet", id: i, mimeType: mime_type, startWithSAP: 1, subsegmentAlignment: true) do + # ignore the 64k m4a stream, only consider the 128k m4a stream + best_m4a_stream = mime_streams[0] + best_m4a_stream_bitrate = 0 mime_streams.each do |fmt| + bandwidth = fmt["bitrate"].as_i + if (bandwidth > best_m4a_stream_bitrate) + best_m4a_stream_bitrate = bandwidth + best_m4a_stream = fmt + end + end + + [best_m4a_stream].each do |fmt| # OTF streams aren't supported yet (See https://github.com/TeamNewPipe/NewPipe/issues/2415) next if !(fmt.has_key?("indexRange") && fmt.has_key?("initRange"))