From 4faf941373e9443ddaa90ddbabfc87c33f4f8bff Mon Sep 17 00:00:00 2001 From: Alvaro Claro Date: Thu, 7 Oct 2021 20:39:00 -0400 Subject: [PATCH] Changed the way the _startPlayerFromAsset verb works, instead of generating a temporary file and then playing it, I made it use the file's buffer and then I used the _startPlayerFromBuffer verb passing the file's buffer as parameter --- tau_sound/lib/public/tau_player.dart | 77 +++++----------------------- 1 file changed, 13 insertions(+), 64 deletions(-) diff --git a/tau_sound/lib/public/tau_player.dart b/tau_sound/lib/public/tau_player.dart index 39d2a07..c327261 100644 --- a/tau_sound/lib/public/tau_player.dart +++ b/tau_sound/lib/public/tau_player.dart @@ -917,15 +917,6 @@ class TauPlayer implements TauPlayerCallback { return PlayerState.values[state]; } - Future _loadAudioFromAsset(String path) async { - final byteData = await rootBundle.load(path); - var tempDir = await getTemporaryDirectory(); - var tempPath = '${tempDir.path}/flutter_sound_tmp.wav'; - final audioAsset = File(tempPath); - await audioAsset.writeAsBytes(byteData.buffer.asUint8List()); - return audioAsset; - } - Future _startPlayerFromAsset( InputAssetNode fromAsset, OutputDeviceNode to, { @@ -936,61 +927,19 @@ class TauPlayer implements TauPlayerCallback { bool defaultPauseResume = true, bool removeUIWhenStopped = true, }) async { - var audioFile = await _loadAudioFromAsset(fromAsset.path); - - var uri = audioFile.uri.toString(); - var codec = fromAsset.codec; - var fileNode = - InputFileNode(uri, codec: fromAsset.codec, track: fromAsset.track); - if (codec is Pcm && codec.audioFormat == AudioFormat.raw) { - fileNode = await fileNode.toWave(); - uri = fileNode.uri; - codec = fileNode.codec; - } - - var oldCodec = codec.deprecatedCodec; - - var what = { - 'codec': oldCodec, - 'path': uri, - 'fromDataBuffer': null, - }; - await _convert(oldCodec, what); - oldCodec = what['codec'] as Codec; - uri = what['path'] as String; - - var state = PlayerState.isStopped.index; - if (withShadeUI) { - var track = Track( - codec: oldCodec, - trackPath: uri, - trackAuthor: fileNode.track.author, - trackTitle: fileNode.track.title, - albumArtFile: fileNode.track.albumArtFile, - albumArtAsset: fileNode.track.albumArtAsset, - albumArtUrl: fileNode.track.albumArtURL); - - state = await TauPlayerPlatform.instance.startPlayerFromTrack( - this, - progress: Duration.zero, - duration: Duration.zero, - track: track.toMap(), - canPause: (onPaused != null || defaultPauseResume), - canSkipForward: (onSkipForward != null), - canSkipBackward: (onSkipBackward != null), - defaultPauseResume: defaultPauseResume, - removeUIWhenStopped: removeUIWhenStopped, - ); - } else { - state = await TauPlayerPlatform.instance.startPlayer( - this, - codec: oldCodec, - fromURI: uri, - fromDataBuffer: null, - ); - } - - return PlayerState.values[state]; + final byteData = await rootBundle.load(fromAsset.path); + var assetBuffer = byteData.buffer.asUint8List(); + var bufferNode = InputBufferNode(assetBuffer, + codec: fromAsset.codec, track: fromAsset.track); + return await _startPlayerFromBuffer( + bufferNode, + to, + defaultPauseResume: defaultPauseResume, + onPaused: onPaused, + onSkipBackward: onSkipBackward, + onSkipForward: onSkipForward, + removeUIWhenStopped: removeUIWhenStopped, + ); } Future _startPlayerFromBuffer(