前言:在上文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