多媒體流媒體,流媒體和多媒體
在現階多媒體技術應用變得越來越廣泛,尤其是大家在聽音樂看視頻的時候,如果我們想完成一個從網路載入資源並且進行播放的例子就需要用到多媒體,多媒體蘋果有內建的但是功能不是很強大,如果需要更加強大的功能我們需要藉助第三方,現在我們用一下豆瓣提供的多媒體庫進行一個簡單的播放執行個體。
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)
作者:傑瑞教育
出處:http://www.cnblogs.com/jerehedu/
本文著作權歸煙台傑瑞教育科技有限公司和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。