Classes
The following classes are available globally.
-
广告播放器
See moreDeclaration
Objective-C
@interface PLVVodMediaAdPlayer
Swift
class PLVVodMediaAdPlayer
-
广告数据模型
See moreDeclaration
Objective-C
@interface PLVVodMediaAd : NSObject
Swift
class PLVVodMediaAd : NSObject
-
视频数据模型
See moreDeclaration
Objective-C
@interface PLVVodMediaVideo : NSObject
Swift
class PLVVodMediaVideo : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaVideoKeyFrameItem : NSObject @property (nonatomic, copy) NSString *hours; // 小时 @property (nonatomic, copy) NSString *minutes; // 分钟 @property (nonatomic, copy) NSString *seconds; // 秒 @property (nonatomic, copy) NSString *keycontext; // 关键帧描述 @property (nonatomic, copy) NSString *id; // 记录id @property (nonatomic, copy) NSString *keytime; // 打点时间 @end
Swift
class PLVVodMediaVideoKeyFrameItem : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaVideoSubtitleItem : NSObject @property (nonatomic, copy, readonly) NSString *title; // 字幕名称 @property (nonatomic, copy, readonly) NSString *url; // 字幕地址 @end
Swift
class PLVVodMediaVideoSubtitleItem : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaVideoDoubleSubtitleItem : NSObject @property (nonatomic, copy, readonly) NSString *position; // 双字幕位置。topSubtitles-上方字幕;bottomSubtitles-下方字幕 @property (nonatomic, copy, readonly) NSString *title; // 字幕名称 @property (nonatomic, copy, readonly) NSString *url; // 字幕地址 @end
Swift
class PLVVodMediaVideoDoubleSubtitleItem : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaVideoSubtitlesStyle : NSObject @property (nonatomic, copy, readonly) NSString *style; // 字幕模式。single-单字幕;double-双字幕 @property (nonatomic, copy, readonly) NSString *position; // 位置,单字幕时为空。top-上方字幕;bottom-下方字幕 @property (nonatomic, copy, readonly) NSString *fontColor; // 字体颜色,16进制RGB,例如#FFFFFF @property (nonatomic, assign, readonly) BOOL fontBold; // 是否加粗,YES-加粗;NO-不加粗 @property (nonatomic, assign, readonly) BOOL fontItalics; // 是否倾斜,YES-倾斜;NO-不倾斜 @property (nonatomic, copy, readonly) NSString *backgroundColor; // 背景色,RGBA,例如rgba(0, 0, 0, 0.7) @end
Swift
class PLVVodMediaVideoSubtitlesStyle : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaVideoPlayerSetting : NSObject @property (nonatomic, assign) BOOL subtitlesEnabled; // 字幕是否显示。NO-不显示字幕;YES-默认显示第一份字幕文件,若双字幕开启且双字幕为默认字幕,则默认显示双字幕 @property (nonatomic, assign) BOOL subtitlesDoubleDefault; // 设置双字幕为默认字幕 @property (nonatomic, assign) BOOL subtitlesDoubleEnabled; // 双字幕功能是否开启。NO-未开启;YES-开启 @property (nonatomic, strong) NSArray <PLVVodMediaVideoSubtitlesStyle *> *subtitles; // 字幕样式 @end
Swift
class PLVVodMediaVideoPlayerSetting : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVMediaPlayerPictureInPictureManager : NSObject #pragma mark - [ 属性 ] /// avplayer的播放状态 @property (nonatomic, assign, readonly) NSInteger playbackState; #pragma mark 可配置项 /// 画中画恢复前的用户界面逻辑代理 @property (nonatomic, weak, nullable) id <PLVMediaPlayerPictureInPictureRestoreDelegate> restoreDelegate; /// 画中画小窗是否开启 @property (nonatomic, assign, readonly) BOOL pictureInPictureActive; /// 画中画当前播放的视频vid @property (nonatomic, assign, readonly) NSString *currentPlaybackVid; /// 画中画控件(包括播放/暂停、快进、后退)是否可见(YES 可见,NO不可见 默认 YES 可见) @property (nonatomic, assign) BOOL pictureInPictureControlsVisible; /// 是否是后台自动触发小窗模式,不同的触发方式,后续交互不一样 /// UI交互手动触发小窗,回到上一级页面;app 退到后台自动触发小窗,停留在当前界面 @property (nonatomic, assign, readonly) BOOL isBackgroudStartMode; /// 是否支持退到后台,自动启动小窗播放 @property (nonatomic, assign) BOOL canStartPictureInPictureAutomaticallyFromInline; #pragma mark - [ 方法 ] /// 单例方法 + (instancetype)sharedInstance; /// 停止画中画 - (void)stopPictureInPicture; /// 设置画中画播放器的播放速率 /// @param rate 速率【0,2】 - (void)setPlaybackRate:(CGFloat)rate; @end
Swift
class PLVMediaPlayerPictureInPictureManager : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaPlayer : PLVMediaPlayerCore /// 点播播放器特有回调代理,区别基础播放器回调 @property (nonatomic, weak) id <PLVVodMediaPlayerDelegate> delegateVodMediaPlayer; /// 点播视频数据模型, 保利威视频平台 视频播放方法 @property (nonatomic, strong) PLVVodMediaVideo *video; /// 播放模式 视频模式、音频模式 @property (nonatomic, assign) PLVVodMediaPlaybackMode playbackMode; #pragma mark [播放器seek 相关设置] /// 是否开启记忆播放位置,默认 NO, 开启后从前一播放位置续播 @property (nonatomic, assign) BOOL rememberLastPosition; /// 是否开启跨端续播(同步其他终端播放进度) /// 默认YES 只有后台开通了跨端续播的功能且keepPlay 设置为YES 才会生效 @property (nonatomic, assign) BOOL keepPlay; /// seek 播放定位类型设置。0 默认,1 精确模式 @property (nonatomic, assign) PLVVodMediaPlaySeekType seekType; /// 音频播放 seek定位类型设置。0 默认,1 快速模式 @property (nonatomic, assign) PLVVodMediaPlayAudioSeekType audioSeekType; /// seek 优化,从最近的关键帧开始seek, 默认NO @property (nonatomic, assign) BOOL enableKeyFrameSeek; #pragma mark [软解、硬解配置] /// 视频解码是否使用“硬解码” /// /// @note 硬解码效率更高,而软解码兼容性更好; /// YES:使用硬解码 NO:使用软解码; /// 默认值 YES; @property (nonatomic, assign) BOOL videoToolBox; #pragma mark [播放器片头、广告 控制] /// 是否播放片头,默认 NO @property (nonatomic, assign) BOOL enableTeaser; /// 片头、片尾播放状态 @property (nonatomic, assign, readonly) PLVVodMediaAssetState teaserState; /// 是否开启广告,默认 NO-- @property (nonatomic, assign) BOOL enableAd; /// 广告播放器 @property (nonatomic, strong, readonly) PLVVodMediaAdPlayer *adPlayer; /// 开启记忆播放 且 有记忆到播放进度的时候,是否先播广告再播正片,默认 NO @property (nonatomic, assign) BOOL shouldPlayAdBeforeContinue; #pragma mark [播放时间统计] /// 已播放进度 @property (nonatomic, assign, readonly) CGFloat playedProgress; /// 已播放时间点字符串 (示例 "01:23") @property (nonatomic, copy, readonly) NSString * playedTimeString; /// 总时长字符串 (示例 "01:23") @property (nonatomic, copy, readonly) NSString * durationTimeString; /// 用户观看时长 @property (nonatomic, assign, readonly) NSTimeInterval viewerWatchDuration; /// 用户停留时间 @property (nonatomic, assign, readonly) NSTimeInterval viewerStayDuration; /// 用户观看的视频内容时长 @property (nonatomic, assign, readonly) NSTimeInterval videoContentPlayedTime; #pragma mark [播放线路 ] /// 路由线路,仅对加密视频有效,传入 POVVodVideo 对象中 availableRouteLines 数组的元素 @property (nonatomic, copy) NSString *routeLine; #pragma mark [加密视频播放强化,自定义传入token] /// 请求自定义keyToken。 /// /// @note 播放加密视频时,若设置此block将优先使用block获取的值来解密视频;没有设置此block则sdk自动处理解密; /// 请在调用setVideo:方法前设置此block /// sdk在处理播放加密视频时,切换清晰度、切换线路、播放错误内部重试机制 过程的时候,将会通过此block向外界获取keyToken @property (nonatomic, copy) NSString *(^requestCustomKeyTokenBlock)(NSString *vid); #pragma mark [本地缓存视频播放 配置] /// 本地视频优先播放,默认为 YES @property (nonatomic, assign) BOOL localPrior; /// 是否为本地缓存播放 @property (nonatomic, assign, readonly) BOOL localPlayback; #pragma mark [视屏清晰度切换] /// 切换清晰度 - (void)setPlayQuality:(PLVVodMediaQuality )quality; /// seek 播放控制, 跳到具体时间点开始播放 - (void)seekToTime:(NSTimeInterval)toTime; #pragma mark [画中画控制] /// 开启画中画功能 - (void)startPictureInPicture; /// 关闭画中画功能 - (void)stopPictureInPicture; #pragma mark [播放器释放] /// 清理播放器 - (void)clearPlayer; #pragma mark [播放第三方平台视频接口] /// 播放第三方平台视频 播放器初始化 - (instancetype)initWithContentURL:(NSURL *)contentURL; /// 播放第三方平台视频 视频切换 - (void)setPlayerURL:(NSURL *)playerURL; @end
Swift
class PLVVodMediaPlayer : PLVMediaPlayerCore
-
视频下载管理单例
See moreDeclaration
Objective-C
@interface PLVDownloadMediaManager : NSObject
Swift
class PLVDownloadMediaManager : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVDownloadInfo : NSObject /// 唯一标识 @property (nonatomic, copy, readonly) NSString *identifier; /// PLVVodMediaVideo 对象 @property (nonatomic, strong, readonly) PLVVodMediaVideo *video; /// vid 便捷属性 @property (nonatomic, copy, readonly) NSString *vid; /// 清晰度 @property (nonatomic, assign, readonly) PLVVodMediaQuality quality; /// 下载状态 @property (nonatomic, assign, readonly) PLVVodDownloadState state; /// 下载速率(单位:byte/s) @property (nonatomic, assign, readonly) double bytesPerSeconds; /// 下载进度(0-1) @property (nonatomic, assign, readonly) double progress; /// 解压进度(0-1) @property (nonatomic, assign, readonly) double unzipProgress; /// 下载错误 @property (nonatomic, strong, readonly) NSError *error; /// 队列ID @property (nonatomic, assign, readonly) NSInteger downloadId; /// 文件类型,默认为视频 @property (nonatomic, assign, readonly) PLVDownloadFileType fileType; /// 请求cdn资源时的唯一标志 @property (nonatomic, copy, readonly) NSString *did; #pragma mark [UI 展示] /// 封面 @property (nonatomic, copy, readonly) NSString *snapshot; /// 视频名称 @property (nonatomic, copy, readonly) NSString *title; /// 文件大小 @property (nonatomic, assign, readonly) NSUInteger filesize; /// 视频时长 @property (nonatomic, assign, readonly) NSUInteger duration; #pragma mark [下砸过程回调] @property (nonatomic, copy) void (^stateDidChangeBlock)(PLVDownloadInfo *info); @property (nonatomic, copy) void (^bytesPerSecondsDidChangeBlock)(PLVDownloadInfo *info); @property (nonatomic, copy) void (^progressDidChangeBlock)(PLVDownloadInfo *info); @property (nonatomic, copy) void (^unzipProgressDidChangeBlock)(PLVDownloadInfo *info); @end
Swift
class PLVDownloadInfo : NSObject
-
本地视频数据模型(PLVVodVideo 子类)
See moreDeclaration
Objective-C
@interface PLVLocalVideo : PLVVodMediaVideo
Swift
class PLVLocalVideo : PLVVodMediaVideo
-
viewlog 参数设置
See moreDeclaration
Objective-C
@interface PLVVodMediaViewerInfo : NSObject
Swift
class PLVVodMediaViewerInfo : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaSettings : NSObject /// userid @property (nonatomic, copy, readonly) NSString *userid; /// readtoken @property (nonatomic, copy, readonly) NSString *readtoken; /// writetoken @property (nonatomic, copy, readonly) NSString *writetoken; /// secretkey @property (nonatomic, copy, readonly) NSString *secretkey; /// 子账号appid @property (nonatomic, copy, readonly) NSString *appid; /// 请求自定义keyToken。 /// 下载加密视频时,若设置此block将优先使用block获取的值来解密视频;没有设置此block则sdk自动处理解密; @property (nonatomic, copy) NSString *(^requestCustomKeyTokenBlock)(NSString *vid); /// 终端用户id @property (nonatomic, copy) NSString *viewerId; /// 终端用户昵称 @property (nonatomic, copy) NSString *viewerName; /// 终端用户头像 @property (nonatomic, copy) NSString *viewerAvatar; /// viewlog 参数设置 @property (nonatomic, strong) PLVVodMediaViewerInfo *viewerInfos; /// 终端用户播放令牌额外参数 @property (nonatomic, copy) NSString *viewerTokenExtraParam; /// 是否启用多账户,默认 NO。开启后可播放、下载除了配置的账号以外的其他账号的非加密视频。 @property (nonatomic, assign, getter=isMutilAccount) BOOL mutilAccount; /// 日志输出等级,默认 PLVVodMediaLogLevelWithoutDebug @property (nonatomic, assign) PLVVodMediaLogLevel logLevel; /// 是否启动 HTTPDNS,默认 YES. 优先级低于远端的httpDnsMode属性 @property (nonatomic, assign) BOOL enableHttpDNS; /// 是否启用 IPV6,如果启用,将自动选择IP,取消HTTPDNS @property (nonatomic, assign) BOOL enableIPV6; /// 延迟启动 HttpDNS,enableHttpDNS 为 YES 时生效,默认 NO @property (class, nonatomic, assign) BOOL delayHttpDNS DEPRECATED_MSG_ATTRIBUTE("HttpDNS将在获取视频信息的时候启动,此属性已废弃"); /// 延迟启动 HttpDNS 的时间,delayHttpDNS 为 YES 时生效,默认 2(单位:秒) @property (class, nonatomic, assign) NSInteger delayHttpDNSTime DEPRECATED_MSG_ATTRIBUTE("HttpDNS将在获取视频信息的时候启动,此属性已废弃"); /// 错误回调 @property (nonatomic, copy) void (^settingErrorHandler)(NSError *error); /** 获取 PLVVodMediaSettings 静态对象 @return PLVVodMediaSettings 静态对象 */ + (instancetype)sharedSettings; /** 通过 userid、readtoken、writetoken、secretkey 配置账号 @param userid userid @param readtoken readtoken @param writetoken writetoken @param secretkey secretkey @return 新的 PLVVodMediaSettings 静态对象 */ + (instancetype)settingsWithUserid:(NSString *)userid readtoken:(NSString *)readtoken writetoken:(NSString *)writetoken secretkey:(NSString *)secretkey; /** 使用加密串配置账号 @param configString 加密串 @param error 解密、配置过程的错误 @return 新的 PLVVodMediaSettings 静态对象 */ + (instancetype)settingsWithConfigString:(NSString *)configString error:(NSError **)error ; /** 使用加密串、加密秘钥、加密向量配置账号 @param configString 加密串 @param key 加密秘钥 @param iv 加密向量 @param error 解密、配置过程的错误 @return 新的 PLVVodMediaSettings 静态对象 */ + (instancetype)settingsWithConfigString:(NSString *)configString key:(NSString *)key iv:(NSString *)iv error:(NSError **)error; /** 通过appid,secretkey,总帐号userid 配置子帐号 @param appId 子帐号appid @param secretKey 子帐号加密key @param userId 总帐号userid */ + (instancetype)settingsWithAppId:(NSString *)appId secretKey:(NSString *)secretKey userId:(NSString *)userId; #pragma mark -- 多账号相关 -- /// 多账号就是在特殊场景下,可以同时播放和下载来自不同账号的视频。 /// 通过 userid、readtoken、writetoken、secretkey 添加多账号,请先使用主账号初始化SDK后再调用 /// @param userid userid /// @param readtoken readtoken /// @param writetoken writetoken /// @param secretkey secretkey /// @param error 解密、配置过程的错误 + (instancetype)addAccountWithUserid:(NSString *)userid readtoken:(NSString *)readtoken writetoken:(NSString *)writetoken secretkey:(NSString *)secretkey error:(NSError **)error; /// 使用加密串添加账号,请先使用主账号初始化SDK后再调用 /// @param configString 加密串 /// @param error 解密、配置过程的错误 + (instancetype)addAccountWithConfigString:(NSString *)configString error:(NSError **)error; /// 使用加密串、加密秘钥、加密向量添加账号,请先使用主账号初始化SDK后再调用 /// @param configString 加密串 /// @param key 加密秘钥 /// @param iv 加密向量 /// @param error 解密、配置过程的错误 + (instancetype)addAccountWithConfigString:(NSString *)configString key:(NSString *)key iv:(NSString *)iv error:(NSError **)error; /// 移除多账号中的账号信息(即:UserId、ReadToken、SecretKey) /// @param userId 多账号的userid + (void)removeAccountWithUserId:(NSString *)userId; /// 在多账号中查找vid归属账号的userid /// @param vid 视频id /// @return userid,为nil则表示该账号暂未添加 + (NSString *)findUserIdWithVid:(NSString *)vid; /// 在多账号中查找vid归属账号的readtoken /// @param vid 视频id /// @return readtoken,为nil则表示该账号暂未添加 + (NSString *)findReadTokenWithVid:(NSString *)vid; /// 在多账号中查找vid归属账号的secretkey /// @param vid 视频id /// @return secretkey,为nil则表示该账号暂未添加 + (NSString *)findSecretKeyWithVid:(NSString *)vid; @end
Swift
class PLVVodMediaSettings : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVMediaPlayerCore : NSObject #pragma mark - [ 属性 ] #pragma mark 可配置项 /// delegate @property (nonatomic, weak) id <PLVMediaPlayerCoreDelegate> coreDelegate; /// 播放器是否自动播放 @property (nonatomic, assign) BOOL autoPlay; /// App进入后台时,是否暂停 主播放器 播放 /// /// @note 若需支持‘后台播放’,则需同时在 TARGETS - Capability - Background Modes 中勾选 “Audio, AirPlay, and Picture in Picture”; /// YES:关闭后台播放 NO:开启后台播放;默认值 NO; /// 从后台进入前台时,主播放器不会自动恢复播放。请根据业务需要,自行调用恢复播放方法; @property (nonatomic, assign) BOOL pausePlayerInBackground; /// 开启后台模式,启动画中画播放功能, 默认NO @property (nonatomic, assign) BOOL enablePIPInBackground; #pragma mark 数据 /// 视频缓存时长 @property (nonatomic, readonly) int64_t videoCacheDuration; /// 视频下载速率 @property (nonatomic, readonly) int64_t originalTcpSpeed; /// 视频下载速率字符串 (示例 "100KB/s") @property (nonatomic, readonly) NSString * tcpSpeed; /// 视频大小 @property (nonatomic, readonly) CGSize naturalSize; /// 视频流量 @property (nonatomic, readonly) CGFloat flow; /// 当前播放时间点 (单位:秒) @property (nonatomic, readonly) NSTimeInterval currentPlaybackTime; /// 视频总时长 @property (nonatomic, readonly) NSTimeInterval duration; /// 当前已缓存时长 @property (nonatomic, readonly) NSTimeInterval playableDuration; /// 当前倍速 @property (nonatomic, assign, readonly) CGFloat currentSpeed; #pragma mark 状态 /// 播放器播放状态 @property (nonatomic, assign, readonly) PLVPlaybackState playbackState; /// 播放器加载状态 @property (nonatomic, assign, readonly) PLVPlayerLoadState playerLoadState; /// 播放器的缩放模式,默认为IJKMPMovieScalingModeAspectFit @property (nonatomic, assign, readonly) IJKMPMovieScalingMode scalingMode; /// 是否正在播放中 @property (nonatomic, assign, readonly) BOOL playing; #pragma mark 功能对象 /// 由外部传入的,负责承载播放器画面的父视图 /// /// @note 需调用 [setupDisplaySuperview:] 方法来设置 @property (nonatomic, strong, readonly) UIView * displaySuperview; #pragma mark - [ 方法 ] #pragma mark 通用 /// 播放主体内容 /// /// @note 初始化播放器; /// /// @param contentURL 媒体地址 /// @param options 播放器配置选项 - (void)initPlayerWithContentURL:(NSURL *)contentURL withOptions:(PLVOptions *)options; /// 初始化私有加密播放器 - (void)initPlayerWithPrefixUrlString:(NSString *)prefixURLString urlData:(NSData *)urlData withOptions:(PLVOptions *)options; /// 设置 承载播放器画面 的父视图 /// /// @param displayeSuperview 承载播放器画面的父视图 - (void)setupDisplaySuperview:(UIView *)displayeSuperview; /// 设置 播放器 的缩放模式 /// /// @param scalingMode 缩放模式,默认为IJKMPMovieScalingModeAspectFit - (void)setupScalingMode:(IJKMPMovieScalingMode)scalingMode; /// 清理 主播放器 - (void)clearMainPlayer; /// 清理 全部播放器 - (void)clearAllPlayer; /// 暂停 主播放器 播放 - (void)pause; /// 静音 主播放器 - (void)mute; /// 取消静音 主播放器 - (void)cancelMute; /// 开始 主播放器 播放 - (void)play; /// 主播放器 视频跳至某个时间点 - (void)seekToTime:(NSTimeInterval)toTime; /// 主播放器 切换倍速 (范围值 0.0~2.0) - (void)switchSpeedRate:(CGFloat)toSpeed; /// 当前时间截图 - (UIImage *)snapshot; @end
Swift
class PLVMediaPlayerCore : NSObject
-
Undocumented
See moreDeclaration
Objective-C
@interface PLVVodMediaColorUtil : NSObject + (UIColor *)colorFromHexString:(NSString *)hexString; + (UIColor *)colorFromHexString:(NSString *)hexString alpha:(float)alpha; + (UIImage *)createImageWithColor:(UIColor *)color; @end
Swift
class PLVVodMediaColorUtil
-
弱引用代理类
Note
用于解决某些系统方法会强制持有 self,导致不自动释放,而不走dealloc的问题
See more// 创建 Timer 时,以 weakProxy 作为 target 参数 PLVVodMediaFWeakProxy * weakProxy = [PLVVodMediaFWeakProxy proxyWithTarget:self]; _timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:weakProxy selector:@selector(timerEvent:) userInfo:nil repeats:NO]; // 则 dealloc 会正常被调用,并可在此时对 Timer 进行释放 - (void)dealloc{ [_timer invalidate]; _timer = nil; }
Declaration
Objective-C
@interface PLVVodMediaFWeakProxy : NSProxy
Swift
class PLVVodMediaFWeakProxy : NSProxy
-
Foundation 通用工具类
See moreDeclaration
Objective-C
@interface PLVVodMediaFdUtil : NSObject
Swift
class PLVVodMediaFdUtil : NSObject