BJVideoPlayerUI 点播UI SDK
变更记录:hhttps://git2.baijiashilian.com/open-ios/BaijiaYun/-/blob/master/ChangeLog/BJVideoPlayerUI-CHANGELOG.md
git SDK 链接:https://git2.baijiashilian.com/open-ios/BaijiaYun.git
git 源码链接:https://git2.baijiashilian.com/open-ios/BJVideoPlayerUI.git
概述
BJVideoPlayerCore(百家云 iOS Core SDK, 以下简称”Core SDK”), 是一款支持iOS 点播/回放视频播放/下载的SDK, 不带UI, UI需要开发者自主集成. 适用于iOS 9.0+。集成 2.2.0 或以上版本的 SDK 要求 Xcode 的版本至少为 11.0。
BJVideoPlayerUI (百家云 iOS 点播 UI SDK, 以下简称”点播UI SDK”), 是基于BJVideoPlayerCore 封装的提供通用点播播放UI的SDK. 适用于iOS 9.0+。
Demo
Demo是集成了点播UI SDK的项目, 以源码的形式详细展示了其中播放器的使用, 点播和回放视频的下载等功能. 开发者下载或者Git Clone本项目, 经过简单的修改即可运行Demo.
下面列表展示了Demo项目的项目结构:
BJPlayManagerUI
├── Podfile
├── Podfile.lock
├── Pods
├── Tests
├── BJPlayerManagerUI.xcworkspace
└── BJPlayerManagerUI
├── PUAppdelegate.h
├── PUAppdelegate.m
├── PUMainViewController.h
├── PUMainViewController.m (Demo首页入口)
├── PUPlayViewController.h
├── PUPlayViewController.m (点播视频播放页面)
├── playback (回放视频模块)
├── BJPViewController.h (回放视频播放控制器)
└── BJPViewController.m
├── localVideo (本地视频播放模块)
├── PMLocalViewViewController.h (本地视频播放控制器)
└── PMLocalViewViewController.m
├── download (下载模块)
└── BJLDownload
├── BJLDownloadViewController.h(视频下载控制器)
└── BJLDownloadViewController.m
├── setting (播放设置模块)
├── PUVideoOptionsViewController.h (播放设置控制器)
├── PUVideoOptionsViewController.m
├── PUPlayOptionsManager.h
└── PUPlayOptionsManager.m (配置Manager)
├── extension (扩展类)
├── UIAlertView+bjp.h
├── UIAlertView+bjp.m
├── NSString+md5.h
├── NSString+md5.m
├── UIWindow+PUMotion.h
├── UIWindow+PUMotion.m
├── UIViewController+PUUtil.h
└── UIViewController+PUUtil.m
├── BJPlayerManagerUI-Prefix.pch
├── BJPlayerManagerUI-Info.plist
├── Base.lproj
├── LaunchScreen.storyboard
└── Main.storyboard
├── Images.xcassets (图片资源)
└── main.m
Demo运行
- 在 Example 的工程目录下执行 pod install
- 使用 Xcode 打开 Example 文件夹下的 BJPlayerManagerUI.xcworkspace 文件
- 将demo中的证书和bundleID更改为开发者自己的数据, 即可运行.
温馨提示
如果在Demo中发现了bug或者发现了SDK的bug,在告知我公司开发人员时,请将系统版本,硬件版本,产生bug的操作流程一并告知我公司开发人员,必要时需要提供日志。
BJVideoPlayerUI SDK
点播UI SDK是在Core SDK的基础上对通用点播播放功能的集成, 如果用户有更丰富的需求, 请参考点播UI SDK中接口的使用方式, 在理解点播SDK机制的前提下, 根据自己的需求进行自定义开发.适用于iOS9.0+。
通用功能简介
- 支持横竖屏切换
- 视频播放/暂停/快进/快退, 改变淸晰度和倍速播放
- 横屏播放支持锁屏功能
- 视频播放界面左侧支持滑动调节亮度, 右侧支持滑动调节音量
点播UISDK源码已开源, 文件结构如下:
BJVideoPlayerUI
├── BJVideoPlayerUI.h
├── BJVideoPlayerUI.m
├── Resources
├── Theme
└── BJPUTheme
├── Util
├── BJPUVideoOptions (播放配置)
├── BJPUAppearance
└── MBProgressHUD+bjp
├── View
├── BJPUMediaControlView
├── BJPUMediaSettingCell
├── BJPUMediaSettingView
├── BJPUProgressView
├── BJPUReloadView
└── BJPUSliderView
└── ViewController
├── BJPUViewController
├── BJPUViewController+media
├── BJPUViewController+observe
├── BJPUViewController+protected
├── BJPUViewController+reachability
└── BJPUViewController+ui
SDK集成
Podfile配置
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git2.baijiashilian.com/open-ios/specs.git'
Podfile
中引入 BJVideoPlayerUI
pod 'BaijiaYun/BJVideoPlayerUI', '~> 2.11.0'
全局设置
//注意:需要头文件中引入
#import <BJVideoPlayerCore/BJVAppConfig.h>
[[BJVAppConfig sharedInstance] setPrivateDomainPrefix:privateDomainPrefix];
- 注意:BJVideoPlayerCore 和 BJVRequestTokenDelegate
在开始使用点播/回放的播放和下载之前, 首先必须要为BJVideoPlayerCore
设置tokenDelegate,下面为tokenDelegate需要实现的两个方法:
//用于在播放/下载中, 客户需要调用completion提供某一videoID对应的视频播放token
- (void)requestTokenWithVideoID:(NSString *)videoID
completion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion;
//用于在播放/下载中, 客户需要调用completion提供某一回放课程对应的视频播放token
- (void)requestTokenWithClassID:(NSString *)classID
sessionID:(nullable NSString *)sessionID
completion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion;
可以参考Demo的PUAppDelegate.m文件中BJVRequestTokenDelegate的使用方法
播放器使用
- 使用
BJPUVideoOptions
初始化BJPUViewController
(注: PUPlayOptionsManager
为Demo中示例对象) - 根据需要设置block
- 添加播放器view到对应的页面上
self.playerUIVC = [[BJPUViewController alloc] initWithVideoOptions:[PUPlayOptionsManager getVideoOptions]];
[self addChildViewController:self.playerUIVC];
[self.playerUIVC didMoveToParentViewController:self];
__weak typeof(self) weakSelf = self;
// 退出回调
[self.playerUIVC setCancelCallback:^{
__strong __typeof__(weakSelf) strongSelf = weakSelf;
[strongSelf.navigationController popViewControllerAnimated:YES];
}];
// 锁屏回调
[self.playerUIVC setScreenLockCallback:^(BOOL locked) {
PUAppDelegate *appDelegate = (PUAppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.allowRotation = !locked;
}];
[self.view addSubview:self.playerUIVC.view];
//播放在线视频
[self.playerUIVC playWithVid:_vid token:_token];
//播放本地视频BJVDownloadItem
[self.playerUIVC playWithDownloadItem:downloadItem];
定制UI元素(BJPUTheme.h)
//设置颜色
//默认状态下文本颜色
+ (void)setDefaultTextColor:(UIColor *)color;
//选中状态的文本颜色
+ (void)setHighlightTextColor:(UIColor *)color;
//设置topBar/bottomBar/definitionView/RateView的背景
+ (void)setBrandColor:(UIColor *)color;
//small image
//logo
+ (void)setLogoImage:(UIImage *)image;
//backButtonImage
+ (void)setBackButtonImage:(UIImage *)image;
//PlayButton
+ (void)setPlayButtonImage:(UIImage *)image;
//pauseButton
+ (void)setPauseButtonImage:(UIImage *)image;
//stopButton
+ (void)setStopButtonImage:(UIImage *)image;
//nextButton
+ (void)setNextButtonImage:(UIImage *)image;
//ProgressSlider
+ (void)setProgressSliderImage:(UIImage *)image;
//ScaleButton
+ (void)setScaleButtonImage:(UIImage *)image;
//ForwardImage
+ (void)setForwardImage:(UIImage *)image;
//BackwardImage
+ (void)setBackwardImage:(UIImage *)image;
代码示例
参见Demo,Demo只是示范SDK中接口的使用方式,并不保证使用方式最符合用户的需求,请用户在充分理解SDK机制的前提下,根据自己的情况处理数据.对照抄SDKDemo代码引起的性能问题和其他非SDK bug,不负任何责任.
常见问题