技术支持

IOS开发文档

介绍

该SDK实现了一个基于万视无忧平台流媒体播放方案,通过集成该SDK,加上app的相关业务逻辑,就能实现一个视频客户端。该sdk能 够播放万视无忧平台上所有的视频资源,并且能够实现多码流切换。同时会根据节目的编码类型,自动调用合适的播放器。
目前支持的流媒体协议包括HSM,HLS.支持的编码器包括H264,H265,TIVC7,AAC,AMRWB,AMRNB。
该SDK以静态库的方式呈现,包括以下部分:
1.header目录,该目录包含了所有的头文件
2.resource目录,该目录包含了播放器所需要的全部资源。
3.lib目录,该目录包含了播放器的所有的库文件。



集成


1.导入工程

导入所有的文件到xcode工程中,如下图所示:


2.xcode编译设置

由于sdk目前只支持armv7,因此需要修改配置体系为armv7,如下图


增加link库,包括系统库以及上述提及过的SDK库,如下图:


3.代码编写

假如我们在MYMainViewController类中使用播放器。
a:包含文件
#import "YZVideoItem.h"
#imoprt "YZPlayerViewController.h"

b:代码增加
在MYMainViewController.h中增加对播放器通知协议YZPlayerNotifyDelegate的支持,同时定义YZVideoItem变量:
@interface MYMainViewController:UIViewController
@property(nonatomic,strong) YZVideoItem *videoItem;

增加协议通知的代码实现:
播放器退出时触发
-(BOOL)playerWillExit:(YZPlayerViewController *)controller videoInfo:(YZVideoItem *)video
{
    NSLog(@"play point=%f",video.recordTime);
    return TRUE;
}

用户点击播放器右上角的按钮触发:
- (void)playerCustomButton:(YZPlayerViewController*)controller videoInfo:(YZVideoItem*)video
{
  didCollect = !didCollect;
  NSString *collectStr = didCollect ? @"ʕسɹ" : @"ȡϻʕسɹ";
  NSString *path;
  if( didCollect )
        path = @"collect";
  else
        path = @"unCollect";
  [controller updateCustomButton:path];
  [controller showUserText:collectStr duration:1.0];
}

在MYMainViewController中合适的地方增加播放器调用代码:
- (void)StarPLay:(id)sender
{
self.videoItem = [[YZVideoItem alloc] init];
self.videoItem.PlayURL = @"http://www.wsview.com/smo.action?account=123&userAgent=ios&video=27118&647596.smo";
self.videoItem.videoType =0;
self.videoItem.recordTime = 0;
self.videoItem.title = @"ΞӇƽ̨ʓƵڄ";
self.videoItem.showCustomButton = TRUE;
self.videoItem.CustomButtonImg = @"unCollect";

YZPlayerViewController *controller = [[YZPlayerViewController alloc] initWithNibName:nil bundle:nil];
controller.videoInfo = videoItem;
controller.notifydelegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
controller.SupportInterfaceOrientationMask = UIInterfaceOrientationMaskAll;
controller.preferredInterfaceOrientation = UIInterfaceOrientationLandscapeRight;
[self presentViewController:controller animated:YES completion:^{
[controller playVideoWithInfo];
}];

增加程序切换到后台,前台的处理:
在Appdelegate.m中包含头文件"YZCheckNetWork.h"
然后增加如下代码:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotificationName:KApplicationEnterForegroundNotification object:self userInfo:nil];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotificationName:KApplicationEnterBackgroundNotification object:self userInfo:nil];
}

至此播放器就可以开始播放指定的URL了,下面将详细介绍其中部分细节.

4.YZVideoItem属性介绍


需要播放的信息是通过YZVideoItem指定到playercontroller的中,YZVideoItem的属性如下表:
属性名称 作用
NSInteger videoId 用户可根据自己需求决定是否使用该属性
NSString *title 视频标题,该标题将会出现在播放器的顶部
NSString *describle 视频描述,播放器暂时没有使用
NSInteger videoType 视频是直播(1),还是点播(0)直播和点播在UI上有一些不同
NSString *PlayURL 视频的播放URL
NSTimeInterval recordTime 该值有2个作用。1是表示在播放器启动时视频的播放开始时间。2表示如果还没播放完成就退出播放,那么该值保 存了退出的时间进度,方便下次实现续播,如果播放完成退出该值为0。
BOOL didFinish 该视频是否播放完成
BOOL showCustomButton 是否显示播放器右上角的按钮,通过该按钮用户可以对现有的播放功能做一定的定制,如果显示该按钮则必须实 现该按钮的通知协议,
-(void)playerCustomButton::,以及设置该按钮的图片
NSString *CustomButtonIm 右上角的按钮的图片,该图片还可以通过YZPlayerViewController的updateCustomButton更新其图片

5.YZPlayerNotifyDelegate方法介绍

方法名称 说明
-(BOOL)playerWillExit 播放器要退出时候的通知,该通知如果返回FALSE,则播放器不会退出,返回TRUE,播放器退出。
-(void)playerCustomButton; 右上角按钮响应通知,如果设置了YZVideoItem中的showCustomButton,必须实现该协议。

6.YZPlayerViewController属性介绍

名称 说明
id notifydelegate; 实现YZPlayerNotifyDelegate的代理
YZVideoItem *videoInfo 播放视频的信息描述
UIInterfaceOrientationMask
SupportInterfaceOrientationMask;
播放需要支持的旋转方向,默认支持4个方向旋转
UIInterfaceOrientation
preferredInterfaceOrientation
进入播放器时,播放器的方向

7.YZPlayerViewController方法介绍

名称 说明
- (void)playVideoWithInfo; 开始播放
- (void)updateCustomButton:(NSString*)imgName; 更新右上角按钮图片,imgName为图片的名称
-(void)showUserText:(NSString*)text duration:(float)t; 在播放器视图上显示用户提示信息,t表示持续时间



扩展

sdk中resource是播放器所使用到的图片资源,用户可以在这个基础上对颜色,形状按需要进行修改,以便于达到符合app整体风格 的需要。但是图片的大小尺寸尽可能保持跟sdk中的一致。
播放器右上角的按钮,用户也可以根据具体需要实现自己的功能,sdk中附带的demo就用该按钮实现收藏和取消收藏的功能。


地图支持