前言:在上文iOS錄音實踐中我們用到了AVAudioPlayer來播放本地音頻文件。可是在實際應用中我們需要播放網絡音頻文件,那麼在iOS中如何播放網絡流媒體呢?就是使用AudioToolbox框架中的音頻隊列服務Audio Queue Services。本文將介紹第三方優秀開源框架FreeStreamer
一 FreeStreamer 功能簡介
FreeStreamer是適用於iOS和OS X的音頻播放引擎, 專門為播放音頻流而設計。該引擎示范UI簡單,效率高,占用內存少,用C++寫成。
功能:
高效低內存占用(Objective-C方法調用不會額外消耗性能)
支持ShoutCast和IceCast流媒體以及標准的HTTP協議
可檢測流媒體格式
支持ShoutCast metadata
支持暫停,比如因通話暫停播放
支持後台播放
支持ID3v2
支持Podcast RSS feeds
內容可以被儲存在文件中(查看OS X app)
可訪問PCM音頻示例
包含頻率分析器(可查看Additions和iOS app)
二 使用方法
1 使用cocoapods安裝FreeStreamer.
2 示例
#import ViewController.h #import FSAudioStream.h @interface ViewController () @property (nonatomic,strong) FSAudioStream *audioStream; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self.audioStream play]; } /** * 取得本地文件路徑 * * @return 文件路徑 */ -(NSURL *)getFileUrl{ NSString *urlStr=[[NSBundle mainBundle]pathForResource:@飛鳥.mp3 ofType:nil]; NSURL *url=[NSURL fileURLWithPath:urlStr]; return url; } -(NSURL *)getNetworkUrl{ NSString *urlStr=@視頻地址;
NSURL *url=[NSURL URLWithString:urlStr]; return url; } /** * 創建FSAudioStream對象 * * @return FSAudioStream對象 */ -(FSAudioStream *)audioStream{ if (!_audioStream) { NSURL *url=[self getNetworkUrl]; //創建FSAudioStream對象 _audioStream=[[FSAudioStream alloc]initWithUrl:url]; _audioStream.onFailure=^(FSAudioStreamError error,NSString *description){ NSLog(@播放過程中發生錯誤,錯誤信息:%@,description); }; _audioStream.onCompletion=^(){ NSLog(@播放完成!); }; [_audioStream setVolume:0.5];//設置聲音 } return _audioStream; } @end