今晚月色真美

前言

我写了一个iOS流媒体播放器Demo:TDPlayer,需要的朋友可下载,播放器底层播放这层本文就不做赘述了,本文主要针对TDPlayer(播放与UI)的分解使用讲解,Demo实际效果如下:

Simulator Screen Shot - iPhone 7 - 2019-06-05 at 14.01.52.png

集成与使用

导入

Demo里TDPlayer直接拖往工程里,就可直接使用。

D4C60B70-4109-4E14-B50B-16F4812B8C0B.png

目录

TDPlayerConfig

TDPlayerConfig.h配置文件,一些自定义配置可在里面设置。

TDPlayerView

播放器View层,此层在Player上面,也在播放器UI层的最低层,作为中间层来执行UI层与Player数据交互,对外交互也应是此View来完成。

TDPlayerTopBar

播放器Top层,可设置标题,有左右按钮交互事件等。

TDPlayerBottomBar

播放器Bottom层,为用户与播放交互层,播放\暂停,快进\快退,音量调节,上\下一页都在这层实现。

TDPlayerStatusView

该View简单来所就是用户友好提示页,根据视频的状态来显示加载、正常、结束、失败、错误状态UI,还提供重新播放功能。

TDPlayerLoadingView

视频加载过程中出现的加载View,以及还支持显示当前的加载网速。

使用

其实对外的接口,我已经封装得比较简单易懂了,外部使用直接使用TDPlayerView这个类,如下:(Demo上还有代理回调的使用)

1
2
3
4
5
6
7
8
9
10
11
12
tdPlayerView = [[TDPlayerView alloc] initWithFrame:CGRectMake(0, 0, selfWidth, selfHeight)];
tdPlayerView.delegate = self;
[self.view addSubview:tdPlayerView];

[tdPlayerView startLoadingWithTitleStr:@"测试视频"];

self.playUrl = @"http://182.138.101.48:5001/nn_vod/nn_x64/aWQ9NWZlOTljZWYwY2Q0Mzk3ZGRlNjI1MDExMTE0OGFlNjMmdXJsX2MxPTZkNmY2OTc2NjU3MzJmMzA2MjYzMzQzODMzNjUzMDY1MzIzMTYzNjYzMTMzMzAzMzYyMzUzNzM3MzkzMjY1NjE2MTM0Mzg2NjY2NjQzMzJlNzQ3MzIwMDAmbm5fYWs9MDFkZTU0YTczNjYxOWZiODdlMzU1NjgxZjEzZGNhYzc4ZCZudHRsPTMmbnBpcHM9MTgyLjEzOC4xMDEuNDg6NTEwMSZuY21zaWQ9MTAwMDAxJm5ncz01NTFlMDQxYTAwMGI5NWYxNWVjZjc1NTg2MDYyMTZiOCZubl91c2VyX2lkPVlZSEQwMDAwMDc3OSZuZHY9MS4wLjAuMC4yLlNDLUpHUy1JUEhPTkUuMC4wX1JlbGVhc2UmbmVhPSZuZXM9/5fe99cef0cd4397dde6250111148ae63.ts";

if ([self.playUrl rangeOfString:@".ts"].location != NSNotFound) {
self.playUrl = [self.playUrl stringByReplacingOccurrencesOfString:@".ts" withString:@".m3u8"];
}
[tdPlayerView playVideoByUrl:self.playUrl];

值得注意的是:iOS播放器是不支持ts后缀地址播放的,替换成m3u8后缀即可,实际m3u8是一个索引文件,播放时,会根据索引去下载对应的ts分片进行播放。

总结

优缺点

TDPlayer将播放层及UI层统一进行了封装,如果你的需求仅仅是播放一个视频,对UI要求不高,这套使用起来还是很方便的。

但是,缺点是什么呢?耦合度太高,播放层与UI层粘性高,不利用扩展或修改。

推荐

这里提供一个无UI的纯播放适配器TDPlayerLite,这个将AVPlayer一些回调乱调、状态不友好的问题内部解决了,并封装了一套用户友好的代理出来,很好集成与使用。

此纯播放器SDK,具体集成与使用详见:iOS纯播放器(适配器)

 评论

本站总字数统计:18.4k

感谢您的浏览, 本站总访问量为 次 。
载入天数...载入时分秒...