前言:在上文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 示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #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=@视频地址<span new="" style="font-family:" times="">;</span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 |