预加载是指在开始播放之前提前下载即将播放视频的头部数据,以实现快速起播,从而显著优化播放体验。详细功能介绍,请见 Android 自定义预加载。
注意
该功能仅高级版支持。请确保您已购买高级版的 License,详见播放器 License。
实现自定义预加载的步骤如下:
构造播放源并添加预加载任务。Vid 模式和 DirectUrl 模式的示例代码具体如下:
// 使用vid和playAuthToken初始化vid source, resolution为期望预加载的档位 TTVideoEngineVidSource source = TTVideoEngineVidSource.init( vid: <vid>, playAuthToken: <playAuthToken>, resolution: <TTVideoEngineResolutionType>); // 使用source和preloadSize初始化PreloaderVidItem, 预加载字节数preloadSize默认800 KB TTVideoEnginePreloaderVidItem item = TTVideoEnginePreloaderVidItem.vidItemWithVideoSource(source, 800 * 1024); // 添加预加载任务 TTVideoEnginePreload.addTaskWithVidItem(item);
// 使用url和url cacheyKey初始化 url source, cacheKey 用作磁盘缓存的文件名,建议采用 url 中能标识视频文件的部分的 MD5 值 TTVideoEngineUrlSource source = TTVideoEngineUrlSource.initWithURL(<url>, <url cache>); // 由业务指定的视频源唯一ID。是一组内容相同但分辨率、编解码格式、封装格式等不同的视频集合的ID source.vid = <vid>; // 使用source和preloadSize初始化PreloaderURLItem, 预加载字节数preloadSize默认800 KB TTVideoEnginePreloaderURLItem item = TTVideoEnginePreloaderURLItem.urlItemWithVideoSource(source, 800 * 1024); // 添加预加载任务 TTVideoEnginePreload.addTaskWithURLItem(item);
取消预加载任务:
// 取消全部预加载任务 TTVideoEnginePreload.cancelAllTask(); // 根据key取消一个预加载任务,key为创建预加载任务使用的cacheKey TTVideoEnginePreload.cancelTaskByKey(Key);
监听预加载任务状态:
// 对已添加的预加载任务PreloaderURLItem,监听item的cancel和end回调 // 预加载任务取消 item.onPreloadCancel = () { print('TTF -- 预加载cancel 回调到dart'); }; // 预加载任务完成 // taskInfo - 预加载任务的文件信息和下载信息 // error - 预加载任务的error信息 item.onPreloadEnd = (TTVideoEngineLocalServerTaskInfo? taskInfo, TTError? error) { Map<dynamic, dynamic>? map = taskInfo?.toJson(); String errorStr = error.toString(); print('TTF -- 预加载end 回调到dart end = $map error = $errorStr'); };