iOS線上音頻播放FreeStreamer
前言:在上文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