本文档介绍如何简单使用SDK,播放视频
sdk在使用前需要初始化
#import <KSMediaPlayer/KSMediaPlayer.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//SDK的初始化,内部会完成SDK的安全检验、缓存路径的建立及播放配置的远程下发,此时不会创建播放器实例
BOOL success = [KSMediaPlayerConfig initWithAppId:@"appId" //appId 和我方服务工程师沟通后获取
appKey:@"appKey"//appKey 和我方服务工程师沟通后获取
ksFileBundlePath:[[NSBundle mainBundle] bundlePath]//ksFileBundlePath 鉴权文件所在的bundle path如果在工程目录中,就是[[NSBundle mainBundle] bundlePath]
cacheDir:nil//cacheDir 如需自定义缓存路径,cacheDir请传入完整路径; 否则传入nil即可, SDK内部会使用默认的沙盒路径进行创建
deviceId:@"deviceId"];//deviceId 业务定义的deviceId 用户播放器的上报,确定设置
if (!success) {
NSLog(@"播放SDK校验失败,后续无法创建播放器实例,请检查传入参数!!!!!");
}
return YES;
}
SDK具备点播和直播的播放能力,分别介绍点播和直播的快速播放的步骤。
播放器初始状态为Inited,生命周期内其状态变迁如下图所示。
其中单箭头代表方法触发状态变化,双箭头表示状态变化时有事件回调
播放器的方法有url、videoId、manifest,先演示用视频url地址创建创建播放器。
一个播放器实例只能播放一个视频url
NSString *url = @"https://*******";
KSMediaPlayer *player = [[KSMediaPlayer alloc] initWithUrl:url];//用视频URL创建播放器
player.delegate = self;//设置播放器代理
播放器的显示视图需要加到父视图上,才能正常显示视频画面。
//将播放器视图加载到父视图中
[self.playerView addSubview:player.playerView];
//设置播放视图约束
player.playerView.translatesAutoresizingMaskIntoConstraints = NO;
[player.playerView.leadingAnchor constraintEqualToAnchor:self.playerView.leadingAnchor].active = YES;
[player.playerView.trailingAnchor constraintEqualToAnchor:self.playerView.trailingAnchor].active = YES;
[player.playerView.widthAnchor constraintEqualToAnchor:self.playerView.widthAnchor].active = YES;
[player.playerView.heightAnchor constraintEqualToAnchor:self.playerView.heightAnchor].active = YES;
如果shouldAutoplay=YES播放器在调用- (void)prepareToPlay方法,准备完成之后会自动播放。
如果shouldAutoplay=NO播放器在调用- (void)prepareToPlay方法,准备完成之后不会自动播放。
需要在- (void)mediaPlayer:(KSMediaPlayer *_Nullable)mediaPlayer eventChanged:(KSMediaPlayerEvent)event 代理中KSMediaPlayerEvent_IsPrepared时间回调之后调用- (void)play方法播放
//设置自动播放
/*如果shouldAutoplay=YES播放器在调用- (void)prepareToPlay方法,准备完成之后会自动播放。
如果shouldAutoplay=NO播放器在调用- (void)prepareToPlay方法,准备完成之后不会自动播放。
需要在- (void)mediaPlayer:(KSMediaPlayer *_Nullable)mediaPlayer eventChanged:(KSMediaPlayerEvent)event 代理中KSMediaPlayerEvent_IsPrepared时间回调之后调用- (void)play方法播放*/
player.shouldAutoplay = YES;
播放器初始化完成之后,需要调用- (void)prepareToPlay方法,开始播放前准备
//准备播放
//如果shouldAutoplay=YES播放器会自动播放
/*如果shouldAutoplay=NO播放器不会自动播放需要在- (void)mediaPlayer:(KSMediaPlayer *_Nullable)mediaPlayer eventChanged:(KSMediaPlayerEvent)event
代理中KSMediaPlayerEvent_IsPrepared时间回调之后调用- (void)play方法播放*/
[player prepareToPlay];
在播放器的代理方法- (void)mediaPlayer:(KSMediaPlayer *_Nullable)mediaPlayer eventChanged:(KSMediaPlayerEvent)event 代理中KSMediaPlayerEvent_IsPrepared时间回调之后调用- (void)play方法播放
如果设置了《player.shouldAutoplay = YES》则此步骤可以省略
#pragma mark KSMediaPlayerDelegate
/// 播放器事件回调代理
/// - Parameters:
/// - mediaPlayer: 播放器实例
/// - event: 播放器事件
- (void)mediaPlayer:(KSMediaPlayer *_Nullable)mediaPlayer eventChanged:(KSMediaPlayerEvent)event {
switch (event) {
case KSMediaPlayerEvent_IsPrepared: {//播放器准备完成
[mediaPlayer play];//开始播放
}
break;
default:
break;
}
}
当不再需要播放器时,需要及时停止播放和销毁播放器。
/// 销毁播放器
- (void)destroyPlayer {
[self.player stop];//停止播放
[self.player destroy];//销毁播放器资源
self.player = nil;//属性置空,销毁播放器实例
}
创建直播播放器只要初始化实例就好
KSLivePlayer *player = [[KSLivePlayer alloc] init];
player.delegate = self;//设置播放器代理
播放器的显示视图需要加到父视图上,才能正常显示视频画面。
//将播放器视图加载到父视图中
[self.playerView addSubview:player.playerView];
//设置播放视图约束
player.playerView.translatesAutoresizingMaskIntoConstraints = NO;
[player.playerView.leadingAnchor constraintEqualToAnchor:self.playerView.leadingAnchor].active = YES;
[player.playerView.trailingAnchor constraintEqualToAnchor:self.playerView.trailingAnchor].active = YES;
[player.playerView.widthAnchor constraintEqualToAnchor:self.playerView.widthAnchor].active = YES;
[player.playerView.heightAnchor constraintEqualToAnchor:self.playerView.heightAnchor].active = YES;
需要给直播播放器设置直播数据源实例,数据源实例封装了直播url地址等信息。
NSString *url = @"https://*******";
//初始化数据源实例
KSLiveDataSource *dataSource = [KSLiveDataSource sourceWithURL:[NSURL URLWithString:url] streamId:@"test_stream_id"];
//播放器设置数据源
[player setDataSource:dataSource];
//开始播放
[player play];
当不再需要播放器时,需要及时销毁播放器。
/// 销毁播放器
- (void)destroyPlayer {
[self.player destroy];//销毁播放器资源
self.player = nil;//属性置空,销毁播放器实例
}