博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多媒体流媒体
阅读量:6887 次
发布时间:2019-06-27

本文共 1947 字,大约阅读时间需要 6 分钟。

  在现阶多媒体技术应用变得越来越广泛,尤其是大家在听音乐看视频的时候,如果我们想完成一个从网络加载资源并且进行播放的例子就需要用到多媒体,多媒体苹果有自带的但是功能不是很强大,如果需要更加强大的功能我们需要借助第三方,现在我们用一下豆瓣提供的多媒体库进行一个简单的播放实例。

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)

 

作者:
出处:
 
本文版权归和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 
你可能感兴趣的文章
2015第5周三网摘
查看>>
C#系列教程——对一个对象的装箱取消转换
查看>>
RTP协议分析
查看>>
簡單SQL存儲過程實例
查看>>
有效沟通:听懂话,才能回答(转)
查看>>
整理的代码规范
查看>>
JStorm-介绍
查看>>
JSTL 核心标签库 使用
查看>>
Node.js教程系列~目录
查看>>
design pattern Builder 生成器设计模式
查看>>
about greenplum collection tool
查看>>
Android UI ActionBar功能-自动隐藏 Action Bar
查看>>
shell教程一:字符串操作
查看>>
Makefile中include、-include、sinclude的区别
查看>>
[Spring] spring-session + JedisPool 实现 session 共享
查看>>
IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结...
查看>>
小知识~让你的DLL类库带上注释
查看>>
Junit测试打印详细的log日志,可以看到sql
查看>>
还是畅通工程
查看>>
man pthread_mutex_init 或 man pthread_mutex_lock 没有结果的解决的方法
查看>>