【问题标题】:How to download audios from soundcloud [duplicate]如何从soundcloud下载音频[重复]
【发布时间】:2017-10-20 19:40:41
【问题描述】:

我有一个可以从 SoundCloud 流式传输音频的 Ionic 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();

        });
    }

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

我想如果我可以下载音频,我可以用StorageNativeStorage存储id

但我不知道这是否是最好的方法。有人做过吗?


编辑:嗯,我已经尝试下载音频,但有一个问题。当我按下下载按钮时,我什么也看不到。因此,如果我转到 app 文件夹,我可以看到一个音频文件,但它已损坏,因为它的大小始终为 600 字节,而且我无法手动播放。

我想看看进展,所以经过研究,我发现可以通过一个事件来做到这一点。因此,我尝试通过 toast 通知暂时显示进度,但它向我显示“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();

            }
        });
    }

【问题讨论】:

  • 我刚刚用我的代码编辑了帖子,对不起
  • 如果你喜欢看,我添加了我尝试下载音频但有问题的方式。

标签: angular ionic2 storage soundcloud cordova-nativestorage


【解决方案1】:

您可以使用 ionic 2 提供的Transfer 模块轻松下载文件。 您应该将文件下载到不同平台的不同目录,阅读文档here 下载文件时,最好存储有关文件的数据以供以后使用。 您可以使用Storage 来存储您可能需要的有关文件的任何数据(例如它的名称)。 然后。根据平台,您可以访问此文件,再次,请参阅 cordova-plugin-file 的文档以了解有关文件访问的更多详细信息。

【讨论】:

  • 不错!我会研究它..
  • 我刚刚编辑了我的帖子。请问你能看到吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 2017-04-20
  • 2021-10-31
相关资源
最近更新 更多