From 88b201b24b4d028af6012bf9dbc3bfaa4bc08ca8 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Thu, 10 Feb 2022 22:28:48 +0600 Subject: [PATCH] using audio/mp4 for MacOS & iOS Platform for compatibilty --- lib/helpers/search-youtube.dart | 13 ++++++++++++- pubspec.lock | 2 +- pubspec.yaml | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/helpers/search-youtube.dart b/lib/helpers/search-youtube.dart index 007b1dbd..cedea1e6 100644 --- a/lib/helpers/search-youtube.dart +++ b/lib/helpers/search-youtube.dart @@ -1,3 +1,5 @@ +import 'dart:io'; +import 'package:collection/collection.dart'; import 'package:spotify/spotify.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart'; @@ -21,7 +23,16 @@ Future toYoutubeTrack(YoutubeExplode youtube, Track track) async { var trackManifest = await youtube.videos.streams.getManifest(ytVideo.id); - track.uri = trackManifest.audioOnly.withHighestBitrate().url.toString(); + // Since Mac OS's & IOS's CodeAudio doesn't support WebMedia + // ('audio/webm', 'video/webm' & 'image/webp') thus using 'audio/mpeg' + // codec/mimetype for those Platforms + track.uri = (Platform.isMacOS || Platform.isIOS + ? trackManifest.audioOnly + .where((info) => info.codec.mimeType == "audio/mp4") + .withHighestBitrate() + : trackManifest.audioOnly.withHighestBitrate()) + .url + .toString(); track.href = ytVideo.url; return track; } diff --git a/pubspec.lock b/pubspec.lock index 45c709eb..77b0ed0c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -121,7 +121,7 @@ packages: source: hosted version: "1.1.0" collection: - dependency: transitive + dependency: "direct main" description: name: collection url: "https://pub.dartlang.org" diff --git a/pubspec.yaml b/pubspec.yaml index 23e11b4f..49b1828a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,6 +49,7 @@ dependencies: just_audio_libwinmedia: ^0.0.4 path: ^1.8.0 path_provider: ^2.0.8 + collection: ^1.15.0 dev_dependencies: flutter_test: