PLVVodPlayerViewController

Objective-C

@interface PLVVodPlayerViewController

Swift

class PLVVodPlayerViewController

主视频播放器

  • 覆盖图层

    Declaration

    Objective-C

    @property (nonatomic, strong) UIView *maskView

    Swift

    var maskView: UnsafeMutablePointer<Int32>! { get set }
  • 视频渲染视图

    Declaration

    Objective-C

    @property (nonatomic, readonly) int *videoView;

    Swift

    var videoView: UnsafeMutablePointer<Int32>! { get }
  • video 模型

    Declaration

    Objective-C

    @property (nonatomic, strong) PLVVodVideo *video;

    Swift

    var video: PLVVodVideo! { get set }
  • 当前清晰度

    Declaration

    Objective-C

    @property (nonatomic, readonly) int quality;

    Swift

    var quality: PLVVodQuality { get }
  • 用户播放时间

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval viewerWatchDuration;

    Swift

    var viewerWatchDuration: TimeInterval { get }
  • 用户停留时间

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval viewerStayDuration;

    Swift

    var viewerStayDuration: TimeInterval { get }
  • 播放的视频内容时长

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval videoContentPlayedTime;

    Swift

    var videoContentPlayedTime: TimeInterval { get }
  • 其他 viewlog 参数,param1~param5 和 key1~key3 参数值需要 UrlSafeBase64 编码

    Declaration

    Objective-C

    @property (nonatomic, strong) NSDictionary<NSString *, id> *viewlogExtraParams;

    Swift

    var viewlogExtraParams: [String : Any]! { get set }
  • 本地视频优先播放,默认为 YES

    Declaration

    Objective-C

    @property (nonatomic) BOOL localPrior;

    Swift

    var localPrior: Bool { get set }
  • 是否为本地播放

    Declaration

    Objective-C

    @property (nonatomic) BOOL localPlayback;

    Swift

    var localPlayback: Bool { get set }
  • 是否允许后台播放

    Declaration

    Objective-C

    @property (nonatomic) BOOL enableBackgroundPlayback;

    Swift

    var enableBackgroundPlayback: Bool { get set }
  • 是否需要循环播放, 默认NO (不支持hls视频)

    Declaration

    Objective-C

    @property (nonatomic) BOOL enablePlayRecycle;

    Swift

    var enablePlayRecycle: Bool { get set }
  • 解码方式设置,默认 YES (硬解码)

    Declaration

    Objective-C

    @property (nonatomic) BOOL isVideoToolBox;

    Swift

    var isVideoToolBox: Bool { get set }
  • seek 播放定位类型设置。0 默认,1 精确模式

    Declaration

    Objective-C

    @property (nonatomic) PLVVodPlaySeekType seekType;

    Swift

    var seekType: PLVVodPlaySeekType { get set }
  • 是否播放片头,默认 NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL enableTeaser;

    Swift

    var enableTeaser: Bool { get set }
  • 离线播放时是否播放片头, 默认YES (只有在enableTeaser 为YES 时有效)

    Declaration

    Objective-C

    @property (nonatomic) BOOL enableLocalTeaser;

    Swift

    var enableLocalTeaser: Bool { get set }
  • 片头播放状态

    Declaration

    Objective-C

    @property (nonatomic, readonly) int teaserState;

    Swift

    var teaserState: PLVVodAssetState { get }
  • 是否开启广告,默认 NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL enableAd;

    Swift

    var enableAd: Bool { get set }
  • 广告播放器

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) PLVVodAdPlayerViewController *adPlayer;

    Swift

    var adPlayer: PLVVodAdPlayerViewController! { get }
  • 是否开启记忆播放位置,默认 NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL rememberLastPosition;

    Swift

    var rememberLastPosition: Bool { get set }
  • 拉伸模式

    Declaration

    Objective-C

    @property (nonatomic) PLVVodMovieScalingMode scalingMode;

    Swift

    var scalingMode: PLVVodMovieScalingMode { get set }
  • 路由线路,仅对加密视频有效,传入 POVVodVideo 对象中 availableRouteLines 数组的元素

    Declaration

    Objective-C

    @property (nonatomic, copy) NSString *routeLine;

    Swift

    var routeLine: String! { get set }
  • 播放控制

    Declaration

    Objective-C

    @property (nonatomic, strong) id<PLVVodPlayerSkinProtocol> playerControl;

    Swift

    @IBOutlet var playerControl: PLVVodPlayerSkinProtocol! { get set }
  • 识别手势类型

    Declaration

    Objective-C

    @property (nonatomic, readonly) PLVVodGestureType gestureType;

    Swift

    var gestureType: PLVVodGestureType { get }
  • 手势识别回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^) (PLVVodPlayerViewController *, int *, PLVVodGestureType) gestureCallback;

    Swift

    var gestureCallback: ((PLVVodPlayerViewController?, UnsafeMutablePointer<Int32>?, PLVVodGestureType) -> Void)! { get set }
  • 手势识别时忽略的视图

    Declaration

    Objective-C

    @property (nonatomic, strong) NSArray *doNotReceiveGestureViews;

    Swift

    var doNotReceiveGestureViews: [Any]! { get set }
  • 跑马灯

    Declaration

    Objective-C

    @property (nonatomic, strong) PLVMarquee *marquee;

    Swift

    var marquee: PLVMarquee! { get set }
  • 防录屏功能,默认NO关闭

    Declaration

    Objective-C

    @property (nonatomic) BOOL videoCaptureProtect;

    Swift

    var videoCaptureProtect: Bool { get set }

播放

  • 自动播放,默认 YES

    Declaration

    Objective-C

    @property (nonatomic) BOOL autoplay;

    Swift

    var autoplay: Bool { get set }
  • 播放速度

    Declaration

    Objective-C

    @property (nonatomic) double playbackRate;

    Swift

    var playbackRate: Double { get set }
  • 是否在切换码率/切换音视频播放模式/切换播放线路时,记忆播放速度,默认 YES

    Declaration

    Objective-C

    @property (nonatomic) BOOL rememberPlaybackRate;

    Swift

    var rememberPlaybackRate: Bool { get set }
  • 播放音量

    Declaration

    Objective-C

    @property (nonatomic) double playbackVolume;

    Swift

    var playbackVolume: Double { get set }
  • 开始播放时间

    Declaration

    Objective-C

    @property (nonatomic) NSTimeInterval startPlaybackTime;

    Swift

    var startPlaybackTime: TimeInterval { get set }
  • 当前播放时间

    Declaration

    Objective-C

    @property (nonatomic) NSTimeInterval currentPlaybackTime;

    Swift

    var currentPlaybackTime: TimeInterval { get set }
  • 媒体时长

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval duration;

    Swift

    var duration: TimeInterval { get }
  • 可播放时长

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval playableDuration;

    Swift

    var playableDuration: TimeInterval { get }
  • 是否就绪播放

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL preparedToPlay;

    Swift

    var preparedToPlay: Bool { get }
  • 是否就绪播放回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodPlayerViewController *) preparedToPlayHandler;

    Swift

    var preparedToPlayHandler: ((PLVVodPlayerViewController?) -> Void)! { get set }
  • 播放状态

    Declaration

    Objective-C

    @property (nonatomic, readonly) PLVVodPlaybackState playbackState;

    Swift

    var playbackState: PLVVodPlaybackState { get }
  • 播放状态回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodPlayerViewController *) playbackStateHandler;

    Swift

    var playbackStateHandler: ((PLVVodPlayerViewController?) -> Void)! { get set }
  • 播放模式

    Declaration

    Objective-C

    @property (nonatomic) int playbackMode;

    Swift

    var playbackMode: PLVVodPlaybackMode { get set }
  • 播放模式回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodPlayerViewController *) playbackModeHandler;

    Swift

    var playbackModeHandler: ((PLVVodPlayerViewController?) -> Void)! { get set }
  • 更新播放模式更新成功回调

    Declaration

    Objective-C

    - (void)playbackModeDidChange;

    Swift

    func playbackModeDidChange()
  • Undocumented

    Declaration

    Objective-C

    - (void)updateAudioCoverAnimation:(BOOL)isPlaying;

    Swift

    func updateAudioCoverAnimation(_ isPlaying: Bool)
  • 加载状态

    Declaration

    Objective-C

    @property (nonatomic, readonly) PLVVodLoadState loadState;

    Swift

    var loadState: PLVVodLoadState { get }
  • 加载状态回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodPlayerViewController *) loadStateHandler;

    Swift

    var loadStateHandler: ((PLVVodPlayerViewController?) -> Void)! { get set }
  • 是否播放结束,只能判断播放结束,不能判断是成功结束,还是异常结束

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL reachEnd;

    Swift

    var reachEnd: Bool { get }
  • 是否成功播放结束

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL reachEndSuccess;

    Swift

    var reachEndSuccess: Bool { get }
  • 播放结束回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodPlayerViewController *) reachEndHandler;

    Swift

    var reachEndHandler: ((PLVVodPlayerViewController?) -> Void)! { get set }
  • 记忆播放位置

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSTimeInterval lastPosition;

    Swift

    var lastPosition: TimeInterval { get }
  • 是否正在载入回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(BOOL) loadingHandler;

    Swift

    var loadingHandler: ((Bool) -> Void)! { get set }
  • 设置全屏方向

    Declaration

    Objective-C

    @property (nonatomic) PLVVodFullScreenOrientation fullScreenOrientation;

    Swift

    var fullScreenOrientation: PLVVodFullScreenOrientation { get set }
  • 当前是否全屏

    Declaration

    Objective-C

    @property (nonatomic) BOOL fullscreen;

    Swift

    var fullscreen: Bool { get set }
  • 全屏状态变化回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(BOOL) didFullScreenSwitch;

    Swift

    var didFullScreenSwitch: ((Bool) -> Void)! { get set }
  • 本地视频播放,发送viewlog日志开关,默认NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL enableLocalViewLog;

    Swift

    var enableLocalViewLog: Bool { get set }
  • 播放器错误回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^) (PLVVodPlayerViewController *, NSError *) playerErrorHandler;

    Swift

    var playerErrorHandler: ((PLVVodPlayerViewController?, Error?) -> Void)! { get set }
  • 播放异常结束,手动恢复播放回调。播放异常结束后,该block每10s回调一次,在该block中可实现恢复播放逻辑。

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodPlayerViewController *) playbackRecoveryHandle;

    Swift

    var playbackRecoveryHandle: ((PLVVodPlayerViewController?) -> Void)! { get set }
  • 回调视频打点信息

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(NSUInteger) videoTipsSelectedHandler;

    Swift

    var videoTipsSelectedHandler: ((UInt) -> Void)! { get set }
  • 播放进度回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^) (PLVVodPlayerViewController *, NSTimeInterval) playbackProgressHandler;

    Swift

    var playbackProgressHandler: ((PLVVodPlayerViewController?, TimeInterval) -> Void)! { get set }
  • 是否启动 ppt 功能,默认为 NO,此时无论该视频有无 ppt 均不显示

    Declaration

    Objective-C

    @property (nonatomic) BOOL enablePPT;

    Swift

    var enablePPT: Bool { get set }
  • 是否使用avplayer 播放在线直播转存视频, 默认NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL enableAVPlayer;

    Swift

    var enableAVPlayer: Bool { get set }
  • 视频加载速率

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSString *tcpSpeed;

    Swift

    var tcpSpeed: String! { get }
  • 播放器 logo 图层

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) PLVVodPlayerLogo *logoView;

    Swift

    var logoView: PLVVodPlayerLogo! { get }
  • 预加载缓冲大小,单位字节。sdk默认10M。10M = 10*1024*1024

    Declaration

    Objective-C

    @property (nonatomic) NSInteger maxCacheSize;

    Swift

    var maxCacheSize: Int { get set }
  • 预加载缓冲时长, sdk 内部会转换为最小帧数. 如果设置缓冲数据长度为10s,视频帧率为25 ,对应的minCacheFrame 值为 10*25

    Declaration

    Objective-C

    @property (nonatomic) NSInteger maxCacheDuration;

    Swift

    var maxCacheDuration: Int { get set }
  • 预加载视频最小帧数,缓存数据长度达到最小帧数,不再读取更多数据

    Declaration

    Objective-C

    @property (nonatomic) NSInteger minCacheFrame;

    Swift

    var minCacheFrame: Int { get set }
  • 是否允许提示无法进行Seek

    Declaration

    Objective-C

    @property (nonatomic) BOOL allowShowToast;

    Swift

    var allowShowToast: Bool { get set }
  • 占位视图

    Declaration

    Objective-C

    @property (nonatomic, strong) UIView *placeholderView

    Swift

    var placeholderView: UnsafeMutablePointer<Int32>! { get set }
  • self.view 当前约束

    Declaration

    Objective-C

    @property (nonatomic, strong) NSMutableArray *constraints;

    Swift

    var constraints: NSMutableArray! { get set }
  • 根控制器

    Declaration

    Objective-C

    @property (nonatomic, weak) UIViewController *rootViewController

    Swift

    var rootViewController: UnsafeMutablePointer<Int32>! { get set }
  • 返回当前播放视频的 pid

    Declaration

    Objective-C

    - (NSString *)getPlayId;

    Swift

    func getPlayId() -> String!
  • 返回播放器实时状态

    Declaration

    Objective-C

    - (NSDictionary *)getRealPlayStatus;

    Swift

    func getRealPlayStatus() -> [AnyHashable : Any]!
  • 指定/切换 PLVVodVideo 对象,及其清晰度

    Declaration

    Objective-C

    - (void)setVideo:(PLVVodVideo *)video quality:(id)quality;

    Swift

    func setVideo(_ video: PLVVodVideo!, quality: PLVVodQuality)

    Parameters

    video

    PLVVodVideo 对象

    quality

    清晰度

  • 切换码率,若码率不符合则自动切换到附近的清晰度

    Declaration

    Objective-C

    - (void)switchQuality:(id)quality;

    Swift

    func switchQuality(_ quality: PLVVodQuality)

    Parameters

    quality

    清晰度

  • 播放

    Declaration

    Objective-C

    - (void)play;

    Swift

    func play()
  • 暂停

    Declaration

    Objective-C

    - (void)pause;

    Swift

    func pause()
  • 离开播放器并暂停

    Declaration

    Objective-C

    - (void)leavePlayerWithPause;

    Swift

    func leavePlayerWithPause()
  • 当前时刻的截图

    Declaration

    Objective-C

    - (id)snapshot;

    Swift

    func snapshot() -> Any!
  • 播放时间显示字符串,子类中重写该方法,可实现自定义播放器时间显示

    Declaration

    Objective-C

    - (NSString *)timeDescription;

    Swift

    func timeDescription() -> String!
  • 获取视频的宽高;在视频播放就绪后可获取到数值,可在preparedToPlayHandler中根据就绪状态来获取

    Declaration

    Objective-C

    - (CGSize)getVideoSize;

    Swift

    func getVideoSize() -> CGSize
  • 检查该视频模型是否将本地播放

    Declaration

    Objective-C

    - (BOOL)checkVideoWillPlayLocal:(PLVVodVideo *)video;

    Swift

    func checkVideoWillPlayLocal(_ video: PLVVodVideo!) -> Bool

IBAction

  • 播放或暂停 Action

    Declaration

    Objective-C

    - (void)playPauseAction:(id)sender;

    Swift

    @IBAction func playPauseAction(_ sender: Any!)
  • 播放进度滑杆 TouchDown Action

    Declaration

    Objective-C

    - (void)playbackSliderTouchDownAction:(id)sender;

    Swift

    @IBAction func playbackSliderTouchDownAction(_ sender: Any!)
  • 播放进度滑杆 ValueChange Action

    Declaration

    Objective-C

    - (void)playbackSliderValueChangeAction:(id)sender;

    Swift

    @IBAction func playbackSliderValueChangeAction(_ sender: Any!)
  • 播放进度滑杆 TouchUpCancel Action

    Declaration

    Objective-C

    - (void)playbackSliderTouchUpCancelAction:(id)sender;

    Swift

    @IBAction func playbackSliderTouchUpCancelAction(_ sender: Any!)
  • 亮度滑杆调节 Action

    Declaration

    Objective-C

    - (void)brightnessAction:(id)sender;

    Swift

    @IBAction func brightnessAction(_ sender: Any!)
  • 音量滑杆调节 Action

    Declaration

    Objective-C

    - (void)volumeAction:(id)sender;

    Swift

    @IBAction func volumeAction(_ sender: Any!)
  • 添加播放器到占位视图上

    placeholderView 为竖屏时的占位视图,该视图需要先布局,播放器会参照该视图的布局而进行竖屏的布局。

    Declaration

    Objective-C

    - (void)addPlayerOnPlaceholderView:(id)placeholderView
                    rootViewController:(id)rootViewController;

    Swift

    func addPlayer(onPlaceholderView placeholderView: Any!, rootViewController: Any!)

    Parameters

    placeholderView

    竖屏状态时的占位视图

    rootViewController

    播放器所在页面的 UIViewController 对象

  • 播放外部平台视频,保利威平台视频不能采用该方法

    Declaration

    Objective-C

    - (void)setURL:(NSURL *)videoUrl;

    Swift

    func setURL(_ videoUrl: URL!)

    Parameters

    videoUrl

    外部视频url 地址

  • 播放外部平台视频,保利威平台视频不能采用该方法

    Declaration

    Objective-C

    - (void)setURL:(NSURL *)videoUrl
        withHeaders:(NSDictionary<NSString *, NSString *> *)headers;

    Swift

    func setURL(_ videoUrl: URL!, withHeaders headers: [String : String]!)

    Parameters

    videoUrl

    外部视频url 地址

    headers

    请求头设置

  • 手动销毁播放器,单例播放等少数特别场景才需要调用此方法

    Declaration

    Objective-C

    - (void)destroyPlayer;

    Swift

    func destroyPlayer()
  • 自定义片头设置

    Declaration

    Objective-C

    - (BOOL)setCustomTeaser:(NSString *)teaserUrl
             teaserDuration:(NSInteger)teaserDuration;

    Swift

    func setCustomTeaser(_ teaserUrl: String!, teaserDuration: Int) -> Bool

    Parameters

    teaserUrl

    片头url,图片支持png,jpg,gif; 视频支持mp4,flv

    teaserDuration

    片头播放时长,片头时长大于视频时长时,以视频实际时长为准

    Return Value

    YES,设置成功; NO,设置失败,参数错误

  • 为播放器增加 logo,一个播放器只能添加一个 PLVVodPlayerLogo 对象

    Declaration

    Objective-C

    - (void)addPlayerLogo:(PLVVodPlayerLogo *)logo;

    Swift

    func add(_ logo: PLVVodPlayerLogo!)
  • Deprecated

    Please use [PLVVodSkinPlayerController playInFullscreen:] instead

    Undocumented

    Declaration

    Objective-C

    - (void)setPlayerFullScreen:(BOOL)full DEPRECATED_MSG_ATTRIBUTE("Please use [PLVVodSkinPlayerController playInFullscreen:] instead");

    Swift

    func setPlayerFullScreen(_ full: Bool)
  • Deprecated

    Please use [PLVVodUtils changeDeviceOrientation:] instead

    旋转设备到指定方向

    Declaration

    Objective-C

    + (void)rotateOrientation:(id)orientation;

    Swift

    class func rotateOrientation(_ orientation: Any!)