保利威文档中心

幫助中心

4 影片播放

更新時間:2026-01-20 17:32:43

4.1 播放前準備

4.1.1 部署播放器

點播 SDK 中的播放器類別為 PLVVodPlayerViewController,而開源元件中提供的帶有預設面板的播放器類別 PLVVodSkinPlayerControllerPLVVodPlayerViewController 的子類別,這裡以 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;

透過對 currentPlaybackTimeduration (媒體長度)進行計算,可得出目前的播放進度。

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 設定影片畫面拉伸模式

影片畫面拉伸模式與 UIViewcontentMode 定義類似,可參照其定義。

// 拉伸模式 
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 協定,建立面板,並設定到 PLVVodPlayerViewControllerplayerControl 屬性。自訂面板的具體設定可參考 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」。如下圖所示:

影片播放_圖1

其次,播放器中有一個設定是否開啟背景播放功能的屬性,屬性值預設為 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;
联系客服,在线咨询