如何从SoundCloud下载音频



我有一个可以从SoundCloud流频率的离子2应用程序。

这就是我进行流的方式:

public loadSelectedTrack(): void {
        SC.get('/tracks/' + this.audio.id, {
            filter: 'public'
        }).then((track) => {
            this.soundCloudCurrentTrack = track;
            this.playSelectedTrack();
        });
    }
    public playSelectedTrack(): void {
        SC.stream('/tracks/' + this.soundCloudCurrentTrack.id).then((player) => {

            this.togglePlayPause();
            player.on('buffering_start', () => {
                console.log('buffering...');
            });
            player.on('buffering_end', () => {
                console.log('party!');
                this.audioLoaded = true;
            });
            player.on('finish', () => {
                this.navCtrl.pop();
            });
            this.player = player;
            player.on('time', () => {
                this.updateTrackTime();
                this.updateTrackPercent();
            });
            this.saveUserData();
        });
    }

现在,我需要知道如何下载音频,然后,如何在设备中找到它。

我以为如果可以下载音频,我可以用存储或nativestorage存储ID

,但我不知道这是否是最好的方法。有人做了任何时间吗?


编辑:好吧,我尝试下载音频,但是有一个问题。当我按下载按钮时,我什么都看不到。因此,如果我转到App文件夹,我可以看到一个音频文件,但是它损坏了,因为始终具有600 bytes的大小,我无法手动播放它。

我想看看进度,所以在研究之后,我发现这是一个事件。因此,我试图通过吐司通知来展示颞的进度,但它向我显示了" 97" .." 98" ...然后不再发生。如果我使用资源管理器转到应用程序文件夹,我会看到一个音频文件,但要损坏。而且没有显示错误!这是代码:

public download(audio: any): void {
        this.platform.ready().then(() => {
            console.log("Clicked to download: " + audio.id);
            let url = `https://api.soundcloud.com/tracks/${audio.id}/download?client_id=${this.SC_CLIENT_ID}`;
            let pathToSaveTo: string = '';
            if (this.platform.is('android')) {
                pathToSaveTo = cordova.file.externalApplicationStorageDirectory + audio.id + '.wav';
                let fileTransfer = new Transfer();
                fileTransfer.onProgress(this.onProgress);
                fileTransfer.download(url, pathToSaveTo)
                    .then((entry) => {
                        console.log('download complete: ' + entry.toURL());
                    }, (error) => {
                        let prompt = this.alertCtrl.create({
                            title: 'Error',
                            subTitle: error,
                            buttons: ['Accept']
                        });
                        prompt.present();
                    });
            }

        });
    }
    onProgress = (progressEvent: ProgressEvent) : void => {
        this.ngZone.run(() => {
            if (progressEvent.lengthComputable) {
                let progress: any = Math.round((progressEvent.loaded / progressEvent.total) * 100);
                console.log(progress);
                let toast = this.toastCtrl.create({
                  message: progress,
                  duration: 100
                });
                toast.present();
            }
        });
    }

您可以使用传输模块离子2优惠轻松下载文件。您应该将文件下载到不同平台的其他目录,请在此处阅读文档下载文件时,存储有关文件的数据确实很不错,以供以后使用。您可以使用存储存储有关文件可能需要的任何数据(例如,它的名称)。然后。根据平台,您可以再次访问此文件,有关文件访问的更多详细信息,请参阅 cordova-plugin-file 的文档。

相关内容

  • 没有找到相关文章

最新更新