4 影片播放
4.1 播放前準備
4.1.1 部署播放器
點播 SDK 中的播放器類別為 PLVVodPlayerViewController,而開源元件中提供的帶有預設面板的播放器類別 PLVVodSkinPlayerController 是 PLVVodPlayerViewController 的子類別,這裡以 SDK 中的基底類別為例。要進行影片播放,首先,在頁面上建立一個 PLVVodPlayerViewController 物件,以及放置播放器的 UIView 物件。程式碼範例如下:
#import “PLVVodPlayerViewController.h”
@interface UIViewController ()
@property (nonatomic, strong) PLVVodPlayerViewController *player;
@property (nonatomic, weak) UIView *playerPlaceholder;
@end
@implementation UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
PLVVodPlayerViewController *player = [[PLVVodPlayerViewController alloc] init];
[player addPlayerOnPlaceholderView:self.playerPlaceholder rootViewController:self];
self.player = player;
}
@end
播放器 player 可自動在 playerPlaceholder 中實現自動佈局,以及半螢幕/全螢幕的切換。
4.1.2 外部傳入播放憑證
自 iOS 點播 2.17.0 版本開始,支援透過外部傳入播放憑證的方式進行加密影片的播放,以避免非法盜版者利用漏洞建立無身份資訊的播放憑證。
- Token 是用於解密播放保利威平台加密影片的,本地傳入 Token 將更好地提升影片安全性。
- 客戶在使用此功能時,務必要保證傳入的 Token 在自家 API 傳輸中的安全性,如介面加密。
播放加密影片實踐完整流程可參考 播放加密影片最佳實踐 。
首先,您需要整合 iOS 點播 SDK 在 2.17.0 以上版本
修改 podfile 檔案,引入點播 SDK:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://gitee.com/polyv_ef/plvspecs.git'
project 'PolyvVodSDKDemo.xcodeproj'
platform :ios, '8.0'
inhibit_all_warnings!
target 'PolyvVodSDKDemo' do
# ......
# PLVVodSDK
pod 'PolyvVodSDK', '~>2.17.0'
end
其次,使用本地傳入 Token 的 API,在點播標頭檔 PLVVodPlayerViewController.h 中查看 API 如下:
/// 请求自定义keyToken。
/// 播放加密视频时,若设置此block将优先使用block获取的值来解密视频;没有设置此block则sdk自动处理解密;
/// 请在调用setVideo:方法前设置此block
/// sdk在处理播放加密视频、切换清晰度、切换线路、播放错误内部重试机制 过程的时候,将会通过此block向外界获取keyToken
@property (nonatomic, copy) NSString *(^requestCustomKeyTokenBlock)(NSString *vid);
在初始化播放器後,設定 requestCustomKeyTokenBlock;後續每當 SDK 需要 keytoken 的時候,將會透過執行該 block 進行取得,示例如下:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
PLVVodSkinPlayerController *player = [[PLVVodSkinPlayerController alloc] initWithNibName:nil bundle:nil];
[player addPlayerOnPlaceholderView:self.playerPlaceholder rootViewController:self];
self.player = player;
// 当需要使用自定义keytoken的时候解开以下注释,每当sdk需要使用keytoken的时候,将会通过此block来向开发者获取
[self.player setRequestCustomKeyTokenBlock:^NSString *(NSString *vid) {
__block NSString *token = nil;
dispatch_semaphore_t signal = dispatch_semaphore_create(0);
// 调用自定义接口获取凭证Token,服务端接口定义可参考本文档最下方注意事项
[[[NSURLSession sharedSession] dataTaskWithRequest:request
completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error) {
token = @"解析返回数据中的token字段";
dispatch_semaphore_signal(signal);
} else {
dispatch_semaphore_signal(signal);
}
}] resume];
dispatch_semaphore_wait(signal, DISPATCH_TIME_FOREVER);
return token;
}];
}
4.2 影片播放
點播 SDK 將影片資料封裝類別 PLVVodVideo 中,透過 PLVVodVideo 物件將影片資料傳遞給播放器。PLVVodVideo 包含影片 ID、影片標題、影片長度等資料。
注意,為播放器設定 video 屬性後,會馬上套用播放器的屬性值,因此播放器的屬性配置應在賦值 PLVVodVideo 物件之前進行。
// video 模型 @property (nonatomic, strong) PLVVodVideo *video;
直接設定 video 屬性時,會使用後台設定的「預設畫質」。播放影片的範例程式碼如下:
self.player.video = video; // video 为 PLVVodVideo 对象
[self.player play]; // 开始播放
[self.player pause]; // 暂停播放
其中,self.player 為 4.1 程式碼範例提到的播放器 PLVVodPlayerViewController。
4.2.1 設定畫質
若希望設定自訂的畫質,則需使用 -setVideo:quality: 方法。透過唯讀屬性 quality 可獲得目前影片的播放畫質。
// 清晰度
typedef NS_ENUM(NSInteger, PLVVodQuality) {
PLVVodQualityAuto, // 自动
PLVVodQualityStandard = 1, // 流畅
PLVVodQualityHigh, // 高清
PLVVodQualityUltra // 超清
};
// 当前清晰度
@property (nonatomic, assign, readonly) PLVVodQuality quality;
/**
指定/切换 PLVVodVideo 对象,及其清晰度
@param video PLVVodVideo 对象
@param quality 清晰度
*/
- (void)setVideo:(PLVVodVideo *)video quality:(PLVVodQuality)quality;
播放過程中也支援切換來自點播後台所提供的畫質。切換畫質,只需呼叫 -switchQuality: 方法。若需要知道影片支援哪些畫質,可讀取 PLVVodVideo 物件的 qualityCount 屬性取得可用的畫質。
/**
切换码率,若码率不符合则自动切换到附近的清晰度
@param quality 清晰度
*/
- (void)switchQuality:(PLVVodQuality)quality;
4.2.2 切換線路
切換線路指切換影片所存取的 CDN 服務商,保利威為加密的點播影片提供了多種線路切換,設定該屬性即可完成線路的切換。線路來源可從 PLVVodVideo 物件的 availableRouteLines 選取。
// 路由线路,仅对加密视频有效,传入 POVVodVideo 对象中 availableRouteLines 数组的元素
@property (nonatomic, copy) NSString *routeLine;
4.2.3 設定播放速度
播放器支援倍速播放,正常播放速度為 1.0。開發者可以透過修改該值改變播放器的播放速度,也可以透過該值取得播放器目前的播放速度。
// 播放速度
@property (nonatomic, assign) double playbackRate;
4.2.4 設定播放音量
播放器的播放音量透過屬性 playbackVolume 設定。該音量有別於系統音量,值為 0~系統目前音量。開發者可以透過該值取得播放器目前的播放音量。
// 播放音量
@property (nonatomic, assign) double playbackVolume;
4.2.5 播放進度跳轉
播放器透過設定 currentPlaybackTime 屬性來進行 seek 操作。同樣地,開發者可以透過該值取得目前播放時間。
// 当前播放时间
@property (nonatomic, assign) NSTimeInterval currentPlaybackTime;
透過對 currentPlaybackTime 與 duration (媒體長度)進行計算,可得出目前的播放進度。
4.2.6 全螢幕與半螢幕切換
全螢幕分為垂直全螢幕和橫向全螢幕,使用者可呼叫播放器提供的方法 -setPlayerFullScreen: 設定播放器是否全螢幕。列舉值屬性 fullScreenOrientation 用於設定全螢幕的方向,可根據影片寬高比自動選擇橫直螢幕,也可固定一個方向,預設為根據影片寬高比自動選擇橫/直螢幕。
typedef NS_ENUM(NSInteger, PLVVodFullScreenOrientation) {
// 根据视频宽高比自动判断,当宽高比 >=1 时,横向全屏;当宽高比 <1 时,竖向全屏
PLVVodFullScreenOrientationAuto = 0,
// 竖向全屏
PLVVodFullScreenOrientationPortrait,
// 横向全屏
PLVVodFullScreenOrientationLandscape,
};
// 设置全屏方向
@property (nonatomic, assign) PLVVodFullScreenOrientation fullScreenOrientation;
// 设置播放器是否处于全屏模式
- (void)setPlayerFullScreen:(BOOL)full;
以下唯讀屬性 fullscreen 可用於取得播放器目前的全螢幕狀態,以及對應的全螢幕狀態變更回呼。
// 当前是否全屏
@property (nonatomic, assign, readonly) BOOL fullscreen;
// 全屏状态变化回调
@property (nonatomic, copy) void (^didFullScreenSwitch)(BOOL fullScreen);
以上方法的使用範例可參考 PLVVodPlayerSkin。建議直接使用我們提供的帶播放器面板 PLVVodPlayerSkin 的播放器 PLVVodSkinPlayerController 去整合。
4.2.7 設定影片畫面拉伸模式
影片畫面拉伸模式與 UIView 的 contentMode 定義類似,可參照其定義。
// 拉伸模式
typedef NS_ENUM(NSInteger, PLVVodMovieScalingMode) {
PLVVodMovieScalingModeNone,
PLVVodMovieScalingModeAspectFit,
PLVVodMovieScalingModeAspectFill,
PLVVodMovieScalingModeFill
};
// 拉伸模式
@property (nonatomic, assign) PLVVodMovieScalingMode scalingMode;
4.3 播放狀態
4.3.1 使用者播放/停留時間
唯讀屬性 viewerWatchDuration 為 App 使用者播放目前影片的時間,該時長僅當使用者播放中時才會統計,暫停時停留的時間並不會計算。
唯讀屬性 viewerStayDuration 為 App 使用者開啟播放器,在該影片停留的時間。
注意,切換影片時上面兩個屬性值都歸零。
// 用户播放时间
@property (nonatomic, assign, readonly) NSTimeInterval viewerWatchDuration;
// 用户停留时间
@property (nonatomic, assign, readonly) NSTimeInterval viewerStayDuration;
4.3.2 媒體長度與緩衝進度
透過唯讀屬性 duration 可取得目前影片的媒體長度,唯讀屬性 playableDuration 為已快取(可播放)影片長度。將 playableDuration 除以 duration 可得出目前快取進度。
// 媒体时长
@property (nonatomic, assign, readonly) NSTimeInterval duration;
// 可播放时长
@property (nonatomic, assign, readonly) NSTimeInterval playableDuration;
4.3.3 取得目前時刻截圖
播放器可透過 -snapshot 方法獲得目前時刻的影片截圖。方法宣告如下:
// 当前时刻的视频截图
- (UIImage *)snapshot;
4.3.4 手勢類型與回呼
播放器支援辨識多種手勢,並把辨識的手勢類型與回應事件回呼開放出來。開發者可根據實際需求實作手勢事件。具體使用方式,可參考 PLVVodSkinPlayerController。若不希望某些檢視回應播放器的手勢,可設定 doNotReceiveGestureViews 陣列,加入忽略手勢事件回應的檢視。
// 手势识别类型
typedef NS_ENUM(NSInteger, PLVVodGestureType) {
PLVVodGestureTypeUnknown, // 未知
PLVVodGestureTypeTap, // 点击
PLVVodGestureTypeDoubleTap, // 双击
PLVVodGestureTypeLeftPan, // 左滑
PLVVodGestureTypeRightPan, // 右滑
PLVVodGestureTypeLeftSideUpPan, // 左侧上滑
PLVVodGestureTypeLeftSideDownPan, // 左侧下滑
PLVVodGestureTypeRightSideUpPan, // 右侧上滑
PLVVodGestureTypeRightSideDownPan,// 右侧下滑
PLVVodGestureTypeLongPress, // 长按
PLVVodGestureTypeLongPressEnd // 长按取消
};
// 识别手势类型
@property (nonatomic, assign, readonly) PLVVodGestureType gestureType;
// 手势识别回调
@property (nonatomic, copy) void (^gestureCallback)(PLVVodPlayerViewController *player, UIGestureRecognizer *recognizer, PLVVodGestureType gestureType);
// 手势识别时忽略的视图
@property (nonatomic, strong) NSArray *doNotReceiveGestureViews;
播放器 PLVVodSkinPlayerController 實作了以上所有手勢的回應事件:
- 點擊:顯示播放器面板
- 雙擊:播放或暫停
- 左滑/右滑:拖動播放進度
- 左側上滑/下滑:調整亮度
- 右側上滑/下滑:調整音量
- 長按/取消:快轉/取消快轉
如果想屏蔽長按手勢,可將屬性 disableLongPressGesture 設定為 YES,長按時快轉的倍速可透過屬性 longPressPlaybackRate 修改,預設為 2.0。
// 是否屏蔽长按倍速快进手势,默认为 NO
@property (nonatomic, assign) BOOL disableLongPressGesture;
// 长按快进时的倍速,默认为 2.0
@property (nonatomic, assign) double longPressPlaybackRate;
4.3.5 播放狀態與回呼
以下所列的唯讀屬性可用於取得播放器目前的播放狀態,包括影片是否就緒可以播放、目前播放狀態、目前影片載入狀態、播放是否結束。每一個屬性值都有各自的變更回呼,開發者可實作不同播放狀態的變更回呼。
// 是否就绪播放
@property (nonatomic, assign, readonly) BOOL preparedToPlay;
// 就绪播放回调
@property (nonatomic, copy) void (^preparedToPlayHandler)(PLVVodPlayerViewController *player);
// 当前播放状态
@property (nonatomic, assign, readonly) PLVVodPlaybackState playbackState;
// 播放状态回调
@property (nonatomic, copy) void (^playbackStateHandler)(PLVVodPlayerViewController *player);
// 播放模式
@property (nonatomic, assign) PLVVodPlaybackMode playbackMode;
// 播放模式回调
@property (nonatomic, copy) void (^playbackModeHandler)(PLVVodPlayerViewController *player);
// 加载状态
@property (nonatomic, assign, readonly) PLVVodLoadState loadState;
// 加载状态回调
@property (nonatomic, copy) void (^loadStateHandler)(PLVVodPlayerViewController *player);
// 是否播放结束
@property (nonatomic, assign, readonly) BOOL reachEnd;
// 是否成功播放结束
@property (nonatomic, readonly) BOOL reachEndSuccess;
// 播放结束回调
@property (nonatomic, copy) void (^reachEndHandler)(PLVVodPlayerViewController *player);
// 播放异常结束,手动恢复播放回调。播放异常结束后,该 block 每 5s 回调一次,在该 block 中可实现恢复播放逻辑
@property (nonatomic, copy) void (^playbackRecoveryHandle)(PLVVodPlayerViewController *player);
播放狀態、播放模式、載入狀態這三個列舉值的定義如下:
// 播放状态
typedef NS_ENUM(NSInteger, PLVVodPlaybackState) {
PLVVodPlaybackStateStopped,
PLVVodPlaybackStatePlaying,
PLVVodPlaybackStatePaused,
PLVVodPlaybackStateInterrupted,
PLVVodPlaybackStateSeekingForward,
PLVVodPlaybackStateSeekingBackward
};
// 加载状态
typedef NS_OPTIONS(NSUInteger, PLVVodLoadState) {
PLVVodLoadStateUnknown = 0,
PLVVodLoadStatePlayable = 1 << 0,
PLVVodLoadStatePlaythroughOK = 1 << 1, // Playback will be automatically started in this state when shouldAutoplay is YES
PLVVodLoadStateStalled = 1 << 2, // Playback will be automatically paused in this state, if started
};
// 播放模式
typedef NS_ENUM(NSInteger, PLVVodPlaybackMode) {
PLVVodPlaybackModeDefault,
PLVVodPlaybackModeVideo,
PLVVodPlaybackModeAudio
};
4.3.6 其他回呼
為了簡化開發者的工作,播放器還提供了以下幾個回呼。
// 是否正在载入回调
@property (nonatomic, copy) void (^loadingHandler)(BOOL isLoading);
// 播放器错误回调
@property (nonatomic, copy) void (^playerErrorHandler)(PLVVodPlayerViewController *player, NSError *error);
回呼 loadingHandler 的回呼參數 isLoading 表示播放器當時是否在載入中,開發者可直接在該回呼中,進行 UI 的變更。
playerErrorHandler 回呼了播放器在播放過程中所有錯誤,並以標準的 NSError 回呼錯誤資訊。開發者可以在該回呼中做錯誤處理和錯誤資訊的展示。
注意,若是按照 PLVVodPlayerSkinProtocol 實作面板或使用帶有預設面板設定的播放器 PLVVodSkinPlayerController,則不需要實作這兩個回呼,其實作已在播放器內部實作。
4.4 自訂面板
PLVVodPlayerViewController 是播放器基底類別,不帶任何播放控制項,使用者需要帶面板控制項的播放器,可直接使用 PLVVodSkinPlayerController。若需要自訂面板,可實作 PLVVodPlayerSkinProtocol 協定,建立面板,並設定到 PLVVodPlayerViewController 的 playerControl 屬性。自訂面板的具體設定可參考 demo 中的 PLVVodPlayerSkin 類別。
4.4.1 對播放器的弱參考
播放器面板對播放器有弱參考,面板可透過該弱參考取得播放器的屬性,以及方法呼叫。譬如取得播放器的播放模式、目前播放長度、取得播放器目前播放截圖等。
// 播放控制
@property (nonatomic, strong) IBOutlet id<PLVVodPlayerSkinProtocol> playerControl;
4.4.2 根據播放屬性設定面板
PLVVodPlayerSkinProtocol 協定還規定了播放器面板必須包含以下屬性,播放器面板可根據這些屬性、屬性改變回呼來設定面板、改變面板樣式。
// 清晰度个数
@property (nonatomic, assign) int qualityCount;
// 当前清晰度
@property (nonatomic, assign) PLVVodQuality quality;
// 清晰度修改回调
@property (nonatomic, copy) void (^qualityDidChangeBlock)(PLVVodQuality quality);
// 当前是否播放本地视频
@property (nonatomic, assign) BOOL localPlayback;
// 当前播放速率
@property (nonatomic, assign) double playbackRate;
// 播放速率改变回调
@property (nonatomic, copy) void (^selectedPlaybackRateDidChangeBlock)(double playbackRate);
// 当前视频拉伸方式
@property (nonatomic, assign) NSInteger scalingMode;
// 视频拉伸方式改变回调
@property (nonatomic, copy) void (^scalingModeDidChangeBlock)(NSInteger scalingMode);
// 字幕名称
@property (nonatomic, strong) NSArray<NSString *> *subtitleKeys;
// 选中的字幕名称
@property (nonatomic, copy) NSString *selectedSubtitleKey;
// 字幕改变回调
@property (nonatomic, copy) void (^selectedSubtitleKeyDidChangeBlock)(NSString *selectedSubtitleKey);
4.4.3 自訂導覽列/狀態列
實作屬性 shouldHideNavigationBar,播放器會根據其值隱藏或顯示播放器所在控制器的導覽列。實作屬性 shouldHideStatusBar,播放器所在頁面可根據該值實作 -prefersStatusBarHidden 和 -preferredStatusBarStyle 方法,達到設定播放器狀態列的目的。
// 指导页面隐藏导航栏
@property (nonatomic, assign) BOOL shouldHideNavigationBar;
// 指导页面状态栏隐藏
@property (nonatomic, assign) BOOL shouldHideStatusBar;
// 指导页面状态栏样式
@property (nonatomic, assign) UIStatusBarStyle statusBarStyle;
4.4.4 設定播放器控制項
播放器面板還必須包含以下控制項:
// 播放/暂停按钮
@property (nonatomic, weak) IBOutlet UIButton *playPauseButton;
// 时间标签
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
// 缓冲进度
@property (weak, nonatomic) IBOutlet UIProgressView *bufferProgressView;
// 播放进度滑杆
@property (weak, nonatomic) IBOutlet UISlider *playbackSlider;
// 全屏/半屏按钮
@property (nonatomic, weak) IBOutlet UIButton *fullShrinkscreenButton;
// 亮度滑杆
@property (nonatomic, weak) IBOutlet UISlider *brightnessSlider;
// 音量滑杆
@property (nonatomic, weak) IBOutlet UISlider *volumeSlider;
4.5 播放器配置
在使用播放器播放影片之前,我們需要先對播放器的屬性進行配置。
4.5.1 設定自訂 viewlog 參數
播放器在播放過程中,會按照其管理的心跳機制進行 viewlog 日誌傳送,該日誌為使用者播放資訊。除了播放器記錄的維度,開發者還可自訂部分參數。具體參數含義與用法,還需聯繫保利威技術支援獲得協助。
/// 其他 viewlog 参数,param1~param5 和 key1~key3 参数值需要 UrlSafeBase64 编码
@property (nonatomic, strong) NSDictionary<NSString *, id> *viewlogExtraParams
4.5.2 開啟|關閉本地影片優先播放
PLVVodLocalVideo 是繼承於 PLVVodVideo 的子類別,表示本地的影片資料模型。PLVVodVideo 物件下載之後,也可以轉化為 PLVVodLocalVideo 物件,即線上影片轉為離線影片。播放器支援傳入 PLVVodVideo 物件,也支援 PLVVodLocalVideo 物件。
當把一個 PLVVodVideo 物件傳入播放器時,如果該影片已下載,播放器會根據屬性 localPrior 的值來決定是否播放本地影片。
當該屬性為 YES,播放器會自動檢索對應的 PLVVodVideo 物件的離線影片,存在則播放離線影片,不存在則播放線上影片;當該屬性為 NO,則根據傳入 video 屬性的物件播放影片,若傳入 PLVVodVideo 物件則播放線上影片,若傳入 PLVVodLocalVideo 物件則播放本地離線影片,找不到資源則播放失敗。
開發者可以根據播放器的 localPlayback 屬性判斷目前播放的到底是線上影片還是離線影片。
// 本地视频优先播放,默认 YES
@property (nonatomic, assign) BOOL localPrior;
// 是否为本地播放
@property (nonatomic, assign) BOOL localPlayback;
4.5.3 開啟|關閉背景播放
背景播放指允許 App 回到桌面或鎖定螢幕後,播放器依然能夠播放音訊。要實現背景播放,首先,需在 App 所在專案「Capability」中開啟「Background Modes」中的「Audio, AirPlay, and Picture in Picture」。如下圖所示:

其次,播放器中有一個設定是否開啟背景播放功能的屬性,屬性值預設為 YES,屬性宣告如下:
// 是否允许后台播放,默认 YES
@property (nonatomic, assign) BOOL enableBackgroundPlayback;
4.5.4 開啟|關閉循環播放
如果希望開啟循環播放,可以將播放器的 enablePlayRecycle 屬性設為 YES,預設為 NO。注意,該功能不支援 hls 影片。
// 是否需要循环播放, 默认 NO
@property (nonatomic, assign) BOOL enablePlayRecycle;
4.5.5 開啟|關閉播放片頭
開啟「播放片頭」後,將根據播放器邏輯套用點播後台設定的影片、圖片片頭,播放完片頭後會自動播放正片。注意,此時不會套用自動播放(autoplay)的設定。
播放片頭設定預設為 NO。開發者可根據播放器的 teaserState 屬性取得片頭的播放狀態。
// 资源状态
typedef NS_ENUM(NSInteger, PLVVodAssetState) {
PLVVodAssetStateUnknown = 0, // 未知
PLVVodAssetStateLoading, // 加载中
PLVVodAssetStatePlaying, // 播放中
PLVVodAssetStateFinished // 播放结束
};
// 是否播放片头,默认 NO
@property (nonatomic, assign) BOOL enableTeaser;
// 片头播放状态
@property (nonatomic, assign, readonly) PLVVodAssetState teaserState;
4.5.6 開啟|關閉廣告
開啟廣告後,將根據播放邏輯套用點播後台設定的影片、圖片廣告。在片頭播放之前播放片頭廣告,暫停播放暫停廣告,播放結束播放片尾廣告。
注意,廣告播放完成後,自動播放片頭,若沒有片頭,或關閉了片頭,則自動播放正片。此時不會套用自動播放(autoplay)的設定。
開啟廣告屬性為 enableAd,預設為 NO。廣告播放器 adPlayer 為唯讀屬性。
// 是否开启广告,默认 NO
@property (nonatomic, assign) BOOL enableAd;
// 广告播放器
@property (nonatomic, strong, readonly) PLVVodAdPlayerViewController *adPlayer;
4.5.7 開啟|關閉記憶播放位置
記憶播放位置,顧名思義啟用後會記錄該影片上一次最後的播放位置。這裡的「上一次」指上一次銷毀播放器或切換影片的時機。僅當該屬性為 YES 時,才會記錄並更新上一次播放位置。
注意,影片播放完成後,會清除該影片記錄的播放位置。
// 是否开启记忆播放位置,默认 NO
@property (nonatomic, assign) BOOL rememberLastPosition;
4.5.8 設定跑馬燈
使用跑馬燈功能需要 CocoaPods 引入 PLVMarquee 專案,並建立 PLVMarquee 跑馬燈模型物件,並傳入播放器的屬性 marquee 中。
// 跑马灯
@property (nonatomic, strong) PLVMarquee *marquee;
PLVMarquee 具體介面參照其標頭檔程式碼註解。使用範例:
PLVMarquee *marquee = [[PLVMarquee alloc] init];
marquee.type = PLVMarqueeTypeRollFade;
marquee.maxFadeInterval = 5;
player.marquee = marquee;
注意,跑馬燈功能目前並無與點播後台跑馬燈介面接入,因此所有資料都是本地資料。
4.5.9 開啟|關閉防錄影功能
開啟防錄影功能後,一旦捕捉到錄影行為,會立即停止播放,並出現提示「停止錄影或投影操作才能繼續播放影片」的彈窗。防錄影功能預設關閉。
// 防录屏功能,默认 NO(关闭)
@property (nonatomic, assign) BOOL videoCaptureProtect;
注意,播放過程中不能關閉防錄影功能。
4.5.10 開啟|關閉自動播放
開啟該屬性,則影片載入後會立即播放。否則,需要開發者呼叫 -play 方法,播放器才會播放影片。
// 自动播放,默认 YES
@property (nonatomic, assign) BOOL autoplay;
4.5.11 設定開始播放時間
開發者設定了開始播放時間 startPlaybackTime 後,播放器開始播放時會跳轉到該時間。播放器中的「記憶播放位置」功能也是透過設定該屬性來實現。
// 开始播放时间
@property (nonatomic, assign) NSTimeInterval startPlaybackTime;
