我有一個可以從SoundCloud流音頻的Ionic 2應用程序。如何從soundcloud下載音頻
這是我如何做流:
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();
});
}
現在,我需要知道如何下載音頻,然後,如何找到它的設備。
我想如果我可以下載音頻,我可以存儲的ID與Storage或NativeStorage
但我不知道這是否是做的最好辦法。有人在任何時候做過?
編輯:好吧,我試圖下載音頻,但有一個問題。當我按下下載按鈕時,我什麼都看不到。所以如果我去應用程序文件夾,我可以看到一個音頻文件,但它被破壞,因爲總是有600bytes的大小,我不能手動播放它。
我想看看進展情況,所以在研究之後,我發現要做到這一點。所以我試着用吐司通知臨時顯示進度,但是它顯示我「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();
}
});
}
我剛剛用我的代碼編輯了這篇文章,對不起 –
如果你喜歡看,我補充說我如何下載音頻但是有問題。 –