您好,登錄后才能下訂單哦!
iOS中的AVAudioPlayer不支持邊下邊播,所以只能下載到本地再播放。
方法:
NSString *urlStr = @"http://…………xxx.mp3";
NSURL *url = [[NSURL alloc]initWithString:urlStr];
NSData * audioData = [NSData dataWithContentsOfURL:url];
//將數(shù)據(jù)保存到本地指定位置
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp3", docDirPath , @"temp"];
[audioData writeToFile:filePath atomically:YES];
//播放本地音樂
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
[player play];
注意代碼中的player是類的私有變量,因?yàn)樵贏RC模式下如果定義局部變量,出了作用域后對象會(huì)被銷毀。這個(gè)問題也是糾結(jié)了好久才搞明白。參見鏈接
當(dāng)然也可以不保存文件,只是將player的構(gòu)造方法改為用data實(shí)例化即可。
總結(jié):
下面說一下我遇到的各種問題:
1、由于添加了All Exception斷點(diǎn),導(dǎo)致每次都在初始化的時(shí)候自動(dòng)斷到,因?yàn)椴皇荗C異常,又無異常信息顯示。這時(shí)應(yīng)該編輯斷點(diǎn),將其類型由All改為OC。這個(gè)異常并不會(huì)導(dǎo)致程序的崩潰,所以可以不作處理。
2、網(wǎng)上有的說不能播放,解決方案是應(yīng)該在 AppDelegate.m文件中的
application didFinishLaunchingWithOptions 添加這樣一句代碼:
[[AVAudioSessionsharedInstance]setCategory:AVAudioSessionCategoryPlaybackerror:nil];
我也沒看到效果,但有很多人支持,就暫且記下地址:鏈接
附:
另外,流式播放,也就是邊下邊播,是別人的例子:下載
也可以將音樂下載到本地NSRULRequest,得到本地的路徑在播放
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。