From 5b457fc4bdf2c6e362eea0ab0564f416f87f39d9 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 21 Jun 2025 22:40:20 +0600 Subject: [PATCH] chore: fix streaming quality is worse then available --- .../youtube_engine/newpipe_engine.dart | 6 ++++- .../youtube_explode_engine.dart | 27 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/services/youtube_engine/newpipe_engine.dart b/lib/services/youtube_engine/newpipe_engine.dart index f58fc333..f4a87f33 100644 --- a/lib/services/youtube_engine/newpipe_engine.dart +++ b/lib/services/youtube_engine/newpipe_engine.dart @@ -17,7 +17,11 @@ class NewPipeEngine implements YouTubeEngine { FileSize.unknown, Bitrate(stream.bitrate), stream.codec, - stream.quality, + switch (stream.bitrate) { + > 130 * 1024 => "high", + > 64 * 1024 => "medium", + _ => "low", + }, [], MediaType.parse(stream.mediaFormat!.mimeType), null, diff --git a/lib/services/youtube_engine/youtube_explode_engine.dart b/lib/services/youtube_engine/youtube_explode_engine.dart index 10a4780b..15906aad 100644 --- a/lib/services/youtube_engine/youtube_explode_engine.dart +++ b/lib/services/youtube_engine/youtube_explode_engine.dart @@ -11,8 +11,9 @@ class YouTubeExplodeEngine implements YouTubeEngine { } @override - Future getStreamManifest(String videoId) { - return _youtubeExplode.videos.streamsClient.getManifest( + Future getStreamManifest(String videoId) async { + final streamManifest = + await _youtubeExplode.videos.streamsClient.getManifest( videoId, requireWatchPage: false, ytClients: [ @@ -21,6 +22,28 @@ class YouTubeExplodeEngine implements YouTubeEngine { YoutubeApiClient.mweb, ], ); + + return StreamManifest( + streamManifest.audioOnly.map((stream) { + return AudioOnlyStreamInfo( + stream.videoId, + stream.tag, + stream.url, + stream.container, + stream.size, + stream.bitrate, + stream.audioCodec, + switch (stream.bitrate.bitsPerSecond) { + > 130 * 1024 => "high", + > 64 * 1024 => "medium", + _ => "low", + }, + stream.fragments, + stream.codec, + stream.audioTrack, + ); + }), + ); } @override