在现阶多媒体技术应用变得越来越广泛,尤其是大家在听音乐看视频的时候,如果我们想完成一个从网络加载资源并且进行播放的例子就需要用到多媒体,多媒体苹果有自带的但是功能不是很强大,如果需要更加强大的功能我们需要借助第三方,现在我们用一下豆瓣提供的多媒体库进行一个简单的播放实例。
1、我们首先要引入库,先去官网下载响应的类库并引入到项目中
2、针对类库,我们还需要引入对应的支持框架如下图
3、完成上面工作后我们就可以搭建界面了,我们先用storyboard搭建一个简单的界面,并且进行对应的输出口链接,如图所示
@property (weak, nonatomic) IBOutlet UILabel *spedd;
@property (weak, nonatomic) IBOutlet UILabel *receive;
@property (weak, nonatomic) IBOutlet UILabel *total;
4、下面我们就可以开始编程了,首先引入头文件
#import "DOUAudioStreamer.h"
/**豆瓣流媒体对象*/
@property(nonatomic,strong) DOUAudioStreamer * stream;
// 这里发现初始化流对象需要一个参数,而参数是id类型,并且遵守了DOUAudioFile协议,于是我们就封装一个类JRAudioFile,并且里面有一个属性为音频链接
然后我们就可以初始化该流对象了
//初始化文件
JRAudioFile * file=[[JRAudioFile alloc] init];
file.audioFileURL=[NSURL URLWithString:@"http://localhost/ghsy.mp3"];
//初始化流
self.stream=[DOUAudioStreamer streamerWithAudioFile:file];
//开始播放
[self.stream play];
5、在音频播放的时候我们需要监控下载进度,此时我们需要通过KVO的方式进行监控,如下所示:
[self.stream addObserver:self forKeyPath:@"bufferingRatio" options:NSKeyValueObservingOptionNew context:nil];
#pragma mark - 观察回调方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
// 这里需要除以1000来转换单位,不是1024
CGFloat expectedLength= self.stream.expectedLength/1000.0/1000.0;
CGFloat receivedLength= self.stream.receivedLength/1000.0/1000.0;
CGFloat downloadSpeed= self.stream.downloadSpeed/1000.0/1000.0;
//回到主线程
dispatch_sync(dispatch_get_main_queue(), ^{
self.spedd.text=[NSString stringWithFormat:@"下载速度:%gKB/S",downloadSpeed];
self.total.text=[NSString stringWithFormat:@"文件大小:%gM",expectedLength];
self.receive.text=[NSString stringWithFormat:@"已经接受:%gM",receivedLength];
});
NSLog(@"%.2f,%.2f,%.2f",expectedLength,receivedLength,downloadSpeed);
}
然后一个简单的网络音频播放就完成了。
疑问咨询或技术交流,请加入官方QQ群: (452379712)
作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。