在現階多媒體技術應用變得越來越廣泛,尤其是大家在聽音樂看視頻的時候,如果我們想完成一個從網絡加載資源并且進行播放的例子就需要用到多媒體,多媒體蘋果有自帶的但是功能不是很強大,如果需要更加強大的功能我們需要借助第三方,現在我們用一下豆瓣提供的多媒體庫進行一個簡單的播放實例。
1、我們首先要引入庫,先去官網下載響應的類庫并引入到項目中

2、針對類庫,我們還需要引入對應的支持框架如下圖

3、完成上面工作后我們就可以搭建界面了,我們先用storyboard搭建一個簡單的界面,并且進行對應的輸出口鏈接,如圖所示

@PRoperty (weak, nonatomic) IBOutlet UILabel *spedd;@property (weak, nonatomic) IBOutlet UILabel *receive;@property (weak, nonatomic) IBOutlet UILabel *total;
4、下面我們就可以開始編程了,首先引入頭文件
#import "DOUAudioStreamer.h"/**豆瓣流媒體對象*/@property(nonatomic,strong) DOUAudioStreamer * stream; // 這里發現初始化流對象需要一個參數,而參數是id類型,并且遵守了DOUAudioFile協議,于是我們就封裝一個類JRAudioFile,并且里面有一個屬性為音頻鏈接

然后我們就可以初始化該流對象了
//初始化文件 JRAudioFile * file=[[JRAudioFile alloc] init]; file.audioFileURL=[NSURL URLWithString:@"http://localhost/ghsy.mp3"]; //初始化流 self.stream=[DOUAudioStreamer streamerWithAudioFile:file]; //開始播放[self.stream play];
5、在音頻播放的時候我們需要監控下載進度,此時我們需要通過KVO的方式進行監控,如下所示:
[self.stream addObserver:self forKeyPath:@"bufferingRatio" options:NSKeyValueObservingOptionNew context:nil]; #pragma mark - 觀察回調方法-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ // 這里需要除以1000來轉換單位,不是1024 CGFloat expectedLength= self.stream.expectedLength/1000.0/1000.0; CGFloat receivedLength= self.stream.receivedLength/1000.0/1000.0; CGFloat downloadSpeed= self.stream.downloadSpeed/1000.0/1000.0; //回到主線程 dispatch_sync(dispatch_get_main_queue(), ^{ self.spedd.text=[NSString stringWithFormat:@"下載速度:%gKB/S",downloadSpeed]; self.total.text=[NSString stringWithFormat:@"文件大小:%gM",expectedLength]; self.receive.text=[NSString stringWithFormat:@"已經接受:%gM",receivedLength]; }); NSLog(@"%.2f,%.2f,%.2f",expectedLength,receivedLength,downloadSpeed);}
然后一個簡單的網絡音頻播放就完成了。
疑問咨詢或技術交流,請加入官方QQ群:
(452379712)
新聞熱點
疑難解答