播放器 SDK 支持 QUIC(HTTP/3)传输协议。根据内部实践,在弱网场景下开启 QUIC 协议,针对部分丢包和限速场景,视频的首帧加载时长及播放卡顿率均有一定程度的下降,能够显著提升极端网络环境下的播放体验。SDK 提供两种开启策略,您可以根据业务需求选择:
SDK 版本要求:SDK 自 1.46.2.9 版本起支持播放 QUIC。
添加依赖:在您项目的 Podfile 中添加相关依赖,并指定包含 Player-Quic 的 subspecs。
# Podfile # 请将版本号替换为实际使用的版本 pod 'TTSDK', 'x.xx.x.x', :subspecs => ['Player-Quic']
tip
目前 subspecs 暂不支持通过手动配置同时指定 Player-SR(超分)和 Player-Quic(QUIC)。若您的业务场景需要同时使用超分功能与 QUIC 协议,请联系火山引擎技术支持,获取定制化的集成方案。
服务端支持:
Content-Length 字段。此方式下,SDK 会根据网络状况和服务器响应,自动在 TCP 和 QUIC 之间进行切换或竞速。
// 1. 开启新版网络下载模块 (开启 QUIC 的必要前提) [TTVideoEngine.ls_localServerConfigure setOptionForKey:@(VEMDLKeyIsEnableMDL2_BOOL) value:@(YES)]; // 2. 开启 QUIC 下载器 [TTVideoEngine.ls_localServerConfigure setOptionForKey:@(VEMDLKeyIsEnableTTNetDownloader_BOOL) value:@(YES)]; TTSDKConfiguration *configuration = [TTSDKConfiguration defaultConfigurationWithAppID:appId licenseName:licenseName]; TTSDKTTNetConfiguration* ttnetConfig = [[TTSDKTTNetConfiguration alloc] init]; // 3. 开启全局 QUIC 开关 ttnetConfig.shouldEnableQuic = YES; configuration.ttnetConfiguration = ttnetConfig; // 4. 执行 SDK 初始化 [TTSDKManager startWithConfiguration:configuration];
如果您希望针对核心业务域名跳过标准协议中“先走 TCP 探测”的阶段,实现“首跳开启”以获取极致的首帧速度,请参考以下配置。
// 1. 开启新版网络下载模块 [TTVideoEngine.ls_localServerConfigure setOptionForKey:@(VEMDLKeyIsEnableMDL2_BOOL) value:@(YES)]; // 2. 开启 QUIC 下载器 [TTVideoEngine.ls_localServerConfigure setOptionForKey:@(VEMDLKeyIsEnableTTNetDownloader_BOOL) value:@(YES)]; // 3. 关键配置:禁用 SDK 内部的自动探测和域名黑名单降级逻辑,实现强制开启 QUIC // ttnet_enable_quic_probe: 0 表示关闭探测;ttnet_enbale_quic_broken: 0 表示关闭黑名单逻辑 [TTVideoEngine.ls_localServerConfigure setOptionForKey:@(VEMDLKeyIsTemporaryOptStr_NSString) value:@"{\"ttnet_enable_quic_probe\": 0, \"ttnet_enbale_quic_broken\": 0}"]; TTSDKConfiguration *configuration = [TTSDKConfiguration defaultConfigurationWithAppID:appId licenseName:licenseName]; TTSDKTTNetConfiguration* ttnetConfig = [[TTSDKTTNetConfiguration alloc] init]; // 4. 开启全局 QUIC 开关 ttnetConfig.shouldEnableQuic = YES; // 5. 指定强制使用 QUIC 的域名及端口(通常为 443),可以添加多个 // 配置后,播放器发起该域名的首次网络请求时即直接尝试 QUIC 协议 NSMutableDictionary* hints = [NSMutableDictionary dictionary]; hints[@"www.example.com"] = @(443); hints[@"video.test.com"] = @(443); ttnetConfig.quicHints = hints; configuration.ttnetConfiguration = ttnetConfig; // 6. 执行 SDK 初始化 [TTSDKManager startWithConfiguration:configuration];