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