大洋融云IOS播放器 -- RYPlayerSDK
基于ijkplayer开发,集点播、直播、VR播放功能于一体,支持播放数据统计。
集成方式:
1.使用cocoapods
请将以下代码添加到您的 Podfile 中:
pod 'RYPlayer'
2.手动集成
下载 RYPlayerSDK、IJKMediaFramework.framework;
将 RYPlayerSDK.framework 和 IJKMediaFramework.framework 复制到项目中;
-
添加依赖库:
在 Build Phases 中的 Link Bainary With Libraries 中添加:
RYPlayerSDK.framework、
IJKMediaFramework.framework、
Libiconv.tbd、
libsqlite3.tbd、
libz.tbd、
libz2.tbd、
libc++.tbd、
libxml2.tbd、
libresolve.9.tbd -
在 Embed Frameworks 中添加 RYPlayerSDK.framework
-
在 Build Settings 中找到 Other Linker Flags,添加 -ObjC
-
如需支持后台播放,需要打开 Background Modes 并勾选 Audio、airplay 和 Picture in Picture
-
播放器使用大观云平台统计播放数据,需要在 plist 中添加 App Transport Security Settings,并设置 Allow Arbitrary Loads 为 YES
播放器的使用:
引用 RYPlayerSDK
#import <RYPlayerSDK/RYPlayerSDK.h>
@implementation ViewController
-(void)viewDidLoad
{
[super viewDidLoad];
//添加播放器视图
[self.view addSubview:self.containerView];
//播放器管理器
NSObject<RYPlayerMediaPlayback> *playerManager;
//选择播放器类型
int type;
if(self.type == 0)
{
//直播
playerManager = [[RYIJKPlayerManager alloc] init];
//软解/硬解码
//[playerManager setGPUCodeMode:NO];
}else if (self.type == 1)
{
//点播
playerManager = [[RYAVPlayerManager alloc]init];
}else if(self.type == 2)
{
//全景VR直播
playerManager = [[RYVRPlayerManager alloc]initWithDecoderType:2];
}else if (self.type == 3)
{
//全景VR点播
playerManager = [[RYVRPlayerManager alloc]init];
}
// 播放器初始化
self.player = [RYPlayerController playerWithPlayerManager:playerManager containerView:self.containerView];
//设置不同分辨率播放地址
self.player.assetURLs = self.assetURLs;
//开始播放
[self.player playTheIndex:0];
}
@end
定制化开发接口说明
1.使用播放器自带 UI(如需自定义开发 UI,不调用此接口)
self.controlView = [RYPlayerControlView new];
self.player.controlView = self.controlView;
// 设置不同分辨率显示名称
[self.controlView setDefaultUIWithURLNames:URLNamesArr];
2.设置画面填充模式(VR播放器暂不支持)
playerManager.scalingMode = RYPlayerScalingModeAspectFit;
3.倍速播放(0.5~2倍)
playerManager.rate = 1;
4.播放器自动播放
playerManager.shouldAutoPlay = YES;
5.支持后台播放
(需要打开Background Modes并勾选Audio, airplay, and Picture in Picture)
self.player.pauseWhenAppResignActive = YES;
6.暂停播放
[self.player.currentPlayerManager pause];
7.恢复播放
[self.player.currentPlayerManager play];
8.切换不同分辨率
[self.player playTheIndex:x];
9.切换不同视频
Self.player.assetURLs = URLSArr;
10.播放器静音
[self.player.currentPlayerManager setMuted:YES];
11.截图(VR暂不支持截图功能)
[self.player.currentPlayerManager thumbnailImageAtCurrentTime];
12.销毁播放器
[self.player stop];
13.播放器索引时间点
[self.player seekToTime:time completionHandler:^(BOOL finished) { }];
1.播放器准备播放
self.player.playerPrepareToPlay = ^(id _Nonnull asset, NSURL * _Nonnull assetURL) { };
2.播放器准备好播放
self.player.playerReadyToPlay = ^(id _Nonnull asset, NSURL * _Nonnull assetURL) { };
3.播放器播放播放时间回调
self.player.playerPlayTimeChanged = ^(id _Nonnull asset, NSTimeInterval currentTime, NSTimeInterval duration){ };
4.播放器缓冲时间回调
self.playe.playerBufferTimeChanged = ^(id _Nonnull asset, NSTimeInterval bufferTime) { };
5.播放器播放状态回调
self.player.playerPlayStateChanged = = ^(id _Nonnull asset, RYPlayerPlaybackState playState) { };
6.播放器加载状态回调
self.player.playerLoadStateChanged = = ^(id _Nonnull asset, RYPlayerLoadState loadState) { };
7.播放器播放失败回调
self.player.playerPlayFailed = ^(id _Nonnull asset, id _Nonnull error) { };
8.播放器播放完毕回调
self.player.playerDidToEnd = ^(id _Nonnull asset) { };