起播选档是指在视频开始播放前,根据用户的网络状况、设备信息及业务场景,智能选择一个最合适的清晰度进行播放。起播选档旨在优化视频的起播体验,在保障首帧速度的同时,尽可能提供更高的初始画质。与 ABR 播放的不同之处在于,起播选档仅在播放开始前进行一次选档决策。播放过程中,清晰度将保持不变,不会根据网络波动自动切换。iOS 播放器 SDK 支持以下两种视频源的起播选档:
在集成此功能前,请确保您已满足以下所有条件:
初始化播放器 SDK 后,调用以下代码进行选档模块的全局配置。此操作只需执行一次。
// 在调用 [TTSDKManager startWithConfiguration:configuration] 之后,进行全局配置 // 1. 使用默认参数初始化选档模块 // 该配置为抖音同款默认选档配置,能综合匹配目标码率和网速,保障体验和成本最优。 [TTVideoEngineStrategyAutoSelectConfig globalInitWithSDKDefaultConfig]; // 2. (推荐) 开启选档结果的日志上报,便于问题排查和数据分析。 [TTVideoEngine setGlobalForKey:VEGSKeyEngineSelectResultReport_BOOL value:@(YES)]; // 3. (推荐) 使预加载任务也采用相同的选档策略,提升预加载效率和命中率。 // 此开关对 App 内所有的预加载任务生效。 [TTVideoEngine ls_localServerConfigure].isEnablePreloadAutoSelect = YES;
对于每一次播放,您都需要在创建 TTVideoEngine 实例后、设置 videoSource 之前,为该实例开启起播选档功能。
// 在创建 TTVideoEngine 实例后、设置 videoSource 前调用 if (AutoSelectSwitchOn) { // 1.设置代理,用于接收选档结果等回调信息 (可选,推荐) // 开启起播选档后,无需再调用 configResolution 方法手动指定起播清晰度 self.videoEngine.autoSelectDelegate = self; // 2.为当前播放器实例开启起播选档功能 [self.videoEngine setOptionForKey:VEKKeyPlayerEnableAutoSelectBitrate_BOOL value:@YES]; // 3.(按需配置) 如果您播放的是标准的 Master M3U8 视频源,需额外开启针对 M3U8 的开关。 // 对于自研协议(Vid/VideoModel)播放,则无需添加此行。 [self.videoEngine setOptionForKey:VEKKeyMasterm3u8AutoStartupBitrateSelectionEnable_BOOL value:@(YES)]; } else { // 如果不开启起播选档,则按原有逻辑手动设置起播清晰度 [self.videoEngine configResolution:YourDefaultResolution]; } // 后续设置 videoSource 并播放 // [self.videoEngine setVideoEngineVideoSource:vidSource]; // [self.videoEngine play];