更新记录

1.0.5(2026-08-04)

  • 新增 getVideoStoryboard,可按起止时间一次生成带确定性帧坐标的视频时间轴预览整图或雪碧图。
  • Android、iOS 和 Web 支持统一的居中采样、网格布局、cover / contain 适配、背景色、缓存复用、任务取消与进度回调。
  • 默认生成 12 帧、4 列、160×90 单元格;帧数限制为 2-60,并按 App 1600 万像素、Web 800 万像素限制最终画布,避免大图内存风险。
  • HarmonyOS、微信小程序和支付宝小程序继续返回明确不支持,不伪造时间轴预览成功。
  • uni-app 示例新增手动入口和一键自检第 14 项,覆盖整图、行列、时间递增、坐标边界与缓存命中。
  • App 原生实现已变化,升级后需要重新构建并安装对应平台自定义基座。

1.0.4(2026-07-31)

  • HarmonyOS 新增视频路径文本归一化、空缓存统计和空缓存清理基础能力,并使用显式结果类兼容 ArkTS 名义类型。
  • 能力矩阵继续明确真实视频信息、取帧、批量和智能封面尚未实现,不伪造媒体处理成功。
  • Harmony 真机一键自检的路径与缓存基础项已通过;Harmony 原生 UTS 已变化,升级后需要重新构建并安装匹配的 Harmony HAP 或自定义基座。

1.0.2(2026-07-28)

  • 新增任务 ID 与 cancelVideoThumbnailTask,支持取消单帧、多时间点、批量及网络下载任务,取消统一返回 9060011,重复或未知任务取消保持幂等。
  • 新增显式 cachePolicy: 'reuse'cacheMaxAgeMscacheHitgetThumbnailCacheInfo;默认仍为 refresh,保持既有唯一文件名和输出路径行为。
  • Android 增加下载循环、解码前后、缓存写入前和批量项间取消检查,并支持稳定文件缓存复用与统计。
  • 修复 Android 取消、缓存统计、缓存清理和独立下载回调结果被编译为 UTSJSONObject 后触发具体结果类型强转崩溃的问题。
  • iOS 增加 Swift 异步可取消取帧桥、AVAssetImageGenerator 取消、单次回调仲裁、取消输出清理及缓存图片读取统计。
  • Web 增加 video/canvas 任务清理和最多 32 项的进程内 LRU 缓存;HarmonyOS、微信小程序和支付宝小程序继续返回明确不支持。
  • 同步更新 uni-app / uni-app x 示例、能力矩阵、平台声明、客户文档和任务缓存回归守卫。
查看更多

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序
× ×

lizhao-video-thumb

lizhao-video-thumb 是面向 uni-app / uni-app x 的视频封面、视频缩略图和视频帧图提取 UTS 插件。你只需要传入视频地址,就可以在 App 端使用原生能力取出指定时间点的封面图,也可以在 Web 端使用降级方案生成预览图。

这个插件适合短视频列表、课程封面、聊天视频消息、素材库、视频编辑器时间轴、上传前预览等场景。插件会把真实项目里常见的路径、格式、批量、缓存和平台差异问题收进插件层处理,减少业务页反复写兼容代码。

你可以先这样理解

  1. 不知道哪一帧适合做封面:调用 getSmartVideoThumbnail 自动分析和选择。
  2. 播放器或编辑器需要一张时间轴预览整图:调用 getVideoStoryboard
  3. 只想取指定时间的一张封面:调用 getVideoThumbnail
  4. 想在一个视频里取多个时间点:调用 getVideoThumbnails
  5. 想批量处理多个视频:调用 getVideoThumbnailBatch
  6. 视频是网络地址:在 common 或普通取帧参数中开启 allowNetwork
  7. 页面要直接预览:outputType 使用 base64both,可直接拿到 Base64。
  8. 想主动停止耗时任务:传入 taskId,再调用 cancelVideoThumbnailTask
  9. 想复用相同结果:设置 cachePolicy: 'reuse',通过 cacheHit 判断是否命中。

功能特色

  • 支持本地视频、_docfile://content://uni.saveFile 临时路径、相册资源和网络视频的统一入口设计。
  • Android/iOS 已实现网络视频下载到私有缓存后取帧,downloadVideoForThumbnail 已可直接返回本地缓存路径。
  • 对于网络视频,downloadVideoForThumbnail 已可直接返回本地缓存路径,后续可继续调用取帧接口。
  • 支持毫秒级 timeMs 取帧,避免只能按整数秒取封面导致画面不准确。
  • 支持智能封面:默认在视频 5% 到 95% 区间分析 7 个候选帧,自动避开近黑、近白和曝光异常画面,并返回每个候选的质量指标。
  • 支持视频时间轴预览与雪碧图:一次顺序提取多帧并合成网格整图,同时返回每帧对应的时间和像素坐标,适合播放器悬停预览与视频编辑器。
  • 支持单个视频、多时间点、多个视频批量生成缩略图,批量任务默认使用异步队列和并发限制。
  • 默认生成唯一文件名,支持自定义输出目录、文件名和覆盖策略,避免多个视频得到重复图片或缓存互相覆盖。
  • 输出支持本地文件、Base64 或两者同时返回,方便上传、预览和业务缓存。
  • Android 已实现本地视频、content://、file://、_doc、_downloads 基础取帧,并在此基础上支持网络视频下载取帧,覆盖 Android 10 分区存储下的内容 URI 读取、毫秒级取帧、唯一文件名和 Base64 输出。
  • iOS 已实现本地视频、file://、_doc、_downloads 基础取帧,并在此基础上支持网络视频下载取帧。iOS 使用 AVAssetImageGenerator 并默认修正视频方向,覆盖 iOS 旋转修正,兼容 MOV / HEVC 系统解码能力并提供空白帧邻近时间点兜底。
  • 相册选择和录制视频拿到的本地临时路径会走同一套路径归一与取帧流程,避免录制视频无响应。
  • 网络视频默认关闭,业务需显式设置 allowNetwork: true,并关注下载超时、最大字节数和 App 网络权限。
  • 提供 clearThumbnailCache 缓存清理能力,避免长期使用产生过多图片文件。
  • 批量队列会为每个视频生成唯一文件名,减少多视频同时处理时的重复图片和互相覆盖问题。
  • 支持任务 ID 和协作式取消,取消、成功、失败互斥,complete 只触发一次。
  • 支持显式缓存复用、最大缓存年龄和缓存统计;默认仍生成唯一文件,不改变既有接入行为。

接入方式选择

场景 推荐接口 说明
自动选择更合适的封面 getSmartVideoThumbnail 分析多个候选帧并返回最高质量封面及评分明细
生成时间轴预览整图 getVideoStoryboard 一次生成网格雪碧图,并返回每帧时间与像素坐标
只取一个视频封面 getVideoThumbnail 传入 src 和可选 timeMs,返回图片路径或 Base64
同一个视频取多帧 getVideoThumbnails 传入 timesMs,适合时间轴预览或编辑器封面选择
多个视频批量处理 getVideoThumbnailBatch 传入 itemsconcurrency,内部排队避免卡住 UI
先检查视频信息 getVideoInfo 读取时长、宽高、方向、格式和大小
路径不确定 normalizeVideoPath 统一识别 _docfile://content://、网络地址等路径类型
网络视频封面 downloadVideoForThumbnail + getVideoThumbnail 下载到私有缓存目录后取帧,支持超时和大小限制
清理缩略图缓存 clearThumbnailCache 按缓存、视频或过期时间清理
取消耗时任务 cancelVideoThumbnailTask 使用客户传入的 taskId 取消单帧、多帧、批量或下载任务
复用与统计缓存 cachePolicy: 'reuse' + getThumbnailCacheInfo 避免重复解码,并查询文件数、字节数和命中次数

最小可运行示例

import { getVideoThumbnail } from '@/uni_modules/lizhao-video-thumb'

// Android/iOS 已支持原生取帧;Web 已支持 video + canvas 降级取帧。
// HarmonyOS 和小程序当前会返回明确不支持错误,不会伪造成功。
getVideoThumbnail({
  src: '_doc/demo.mp4',
  timeMs: 0,
  outputType: 'file',
  success(res) {
    console.log('视频封面生成成功', res.imagePath)
  },
  fail(err) {
    console.log('视频封面生成失败', err.errCode, err.errMsg)
  },
  complete(res) {
    console.log('视频封面流程结束', res)
  }
})

常见增强示例

import { getSmartVideoThumbnail } from '@/uni_modules/lizhao-video-thumb'

// 智能封面会先分析候选帧,再使用同一套输出参数生成最终缩略图。
getSmartVideoThumbnail({
  src: '_doc/demo.mp4',
  candidateCount: 7,
  startRatio: 0.05,
  endRatio: 0.95,
  common: {
    outputType: 'both',
    fixOrientation: true,
    maxWidth: 720,
    maxHeight: 405
  },
  success(res) {
    // 业务日志建议只记录摘要,不要输出 thumbnail.base64 正文。
    console.log('智能封面完成', res.selectedTimeMs, res.score, res.thumbnail.imagePath)
  },
  fail(err) {
    console.log('智能封面失败', err.errCode, err.errMsg)
  },
  complete() {
    console.log('智能封面流程结束')
  }
})
import { getVideoThumbnailBatch } from '@/uni_modules/lizhao-video-thumb'

// 批量任务建议设置 concurrency,避免多个大视频同时解码造成界面阻塞。
getVideoThumbnailBatch({
  taskId: 'video-cover-batch-001',
  items: [
    { id: 'local-1', src: '_doc/a.mp4', timeMs: 350 },
    { id: 'camera-1', src: 'file:///storage/emulated/0/DCIM/Camera/demo.mp4', timeMs: 1200 }
  ],
  concurrency: 2,
  common: {
    outputType: 'both',
    fixOrientation: true,
    // 复用相同视频、时间点和图片参数生成的受管缓存。
    cachePolicy: 'reuse',
    cacheMaxAgeMs: 86400000
  },
  progress(event) {
    console.log('批量缩略图进度', event.current, event.total, event.message)
  },
  success(res) {
    console.log('批量缩略图完成', res.results)
  },
  fail(err) {
    console.log('批量缩略图失败', err.errMsg)
  }
})
import { getVideoStoryboard } from '@/uni_modules/lizhao-video-thumb'

// 默认会在视频有效区间居中采样 12 帧,并合成为 4 列网格整图。
getVideoStoryboard({
  taskId: 'video-storyboard-001',
  src: '_doc/demo.mp4',
  frameCount: 12,
  columns: 4,
  frameWidth: 160,
  frameHeight: 90,
  fitMode: 'cover',
  backgroundColor: '#000000',
  common: {
    outputType: 'both',
    fixOrientation: true,
    cachePolicy: 'reuse'
  },
  success(res) {
    // frames 可直接映射时间点与整图中的 x/y/width/height 区域。
    console.log('时间轴预览完成', res.imagePath, res.columns, res.rows, res.frames)
  },
  fail(err) {
    console.log('时间轴预览失败', err.errCode, err.errMsg)
  },
  complete() {
    console.log('时间轴预览流程结束')
  }
})

如果播放器需要单行横向雪碧图,可将 columns 设置为与 frameCount 相同;例如 frameCount: 12, columns: 12 会生成一行 12 格整图。Web 读取跨域视频时,视频服务仍需允许 CORS,否则浏览器无法把画面绘制到可导出的 canvas。

取消任务与查询缓存

import {
  cancelVideoThumbnailTask,
  getThumbnailCacheInfo
} from '@/uni_modules/lizhao-video-thumb'

// taskId 应由业务保证唯一;取消未知或已完成任务会返回 accepted: false。
cancelVideoThumbnailTask({
  taskId: 'video-cover-batch-001',
  success(res) {
    console.log('取消请求结果', res.accepted, res.state)
  }
})

// 只统计该视频相关的插件受管缓存;不传 src 时统计全部。
getThumbnailCacheInfo({
  src: '_doc/demo.mp4',
  success(res) {
    console.log('缓存文件与命中情况', res.fileCount, res.totalBytes, res.hitCount)
  }
})

完整示例源码路径

示例 路径 说明
主项目 uni-app 演示页 uni_modules/lizhao-video-thumb/example/uniapp/videoThumbnail.vue 覆盖本地视频、网络视频、Base64、批量、多时间点、缓存清理
插件内 uni-app 示例 uni_modules/lizhao-video-thumb/example/uniapp/videoThumbnail.vue 适合复制到普通 Vue 页面验证
插件内 uni-app x 示例 uni_modules/lizhao-video-thumb/example/uniappx/index.uvue 适合复制到 UVUE 页面验证

支持平台

平台 是否支持 说明
Android 已支持 已实现时间轴雪碧图、智能选帧、本地/网络视频取帧、content://、任务取消、显式缓存复用、缓存统计、Base64 和批量队列
iOS 已支持 已实现时间轴雪碧图、智能选帧、本地/网络视频取帧、异步任务取消、显式缓存复用、缓存统计、Base64、批量队列和方向修正
HarmonyOS 明确不支持 当前返回 9060001,不伪造成功;后续仅在可编译、可验证时补真实媒体能力
Web 已支持降级 Web 已支持单 video + canvas 时间轴合成、智能选帧、普通取帧、任务取消和进程内 LRU;Web 网络视频需要服务端允许 CORS;Web 端不写入本地文件,imagePath 会返回 data URL
微信小程序 明确不支持 当前返回 9060001,不伪造成功;后续按小程序媒体能力实现可用子集
支付宝小程序 明确不支持 当前返回 9060001,不伪造成功;后续按平台能力实现可用子集

getVideoThumbnail(options)

说明 生成单个视频在指定时间点的视频封面或视频缩略图。

参数

参数 类型 必填 说明 默认值 可选参数
options VideoThumbnailOptions 取帧参数对象 src / timeMs / outputType / success / fail / complete
options.taskId string 客户自定义任务 ID,用于主动取消 自动生成
options.src string 视频地址,支持本地视频、网络视频、_docfile://content://
options.timeMs number 取帧时间,单位毫秒 0 大于等于 0
options.strategy ThumbnailFrameStrategy 取帧策略 nearestSync nearestSync / previousSync / exact / fast
options.outputType ThumbnailOutputType 输出类型 file file / base64 / both
options.outputDir string 自定义输出目录 插件私有缓存目录
options.fileName string 自定义输出文件名 自动生成唯一文件名
options.overwrite boolean 是否允许覆盖同名文件 false true / false
options.maxWidth number 缩略图最大宽度 原始帧宽度
options.maxHeight number 缩略图最大高度 原始帧高度
options.quality number 图片质量 90 1-100
options.format ThumbnailImageFormat 输出图片格式 jpg jpg / png / webp
options.fixOrientation boolean 是否修正视频旋转方向 true true / false
options.allowNetwork boolean 是否允许网络视频下载取帧 false true / false
options.downloadTimeoutMs number 网络视频下载超时时间 30000
options.maxDownloadBytes number 网络视频下载大小上限 104857600
options.cachePolicy ThumbnailCachePolicy 是否复用参数完全一致的受管缓存 refresh refresh / reuse
options.cacheMaxAgeMs number reuse 缓存最大年龄,0 表示不按年龄过期 0 大于等于 0
options.progress function 下载、解码、写入缓存等进度回调
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

返回值

字段 类型 说明
success boolean 是否生成成功
taskId string 当前任务 ID
platform string 当前平台
src string 原始视频地址
normalizedPath string 归一化后的视频路径
pathType VideoThumbnailPathType 路径类型
imagePath string 生成的本地缩略图路径
base64 string Base64 图片内容,outputTypebase64 / both 时返回
width number 缩略图宽度
height number 缩略图高度
timeMs number 实际取帧时间
durationMs number 视频时长
orientation number 视频方向角度
fileName string 输出文件名
cacheKey string 当前取帧参数对应的缓存键
cacheHit boolean 是否直接复用了已有缓存
message string 中文说明

getVideoStoryboard(options)

说明 在指定时间区间内按帧中心点均匀采样,将所有帧顺序合成为一张网格整图,并返回每帧对应的时间和像素坐标。Android、iOS 和 Web 支持;HarmonyOS 与小程序返回明确不支持。

参数

参数 类型 必填 说明 默认值 可选参数
options VideoStoryboardOptions 时间轴预览参数对象 taskId / src / startTimeMs / endTimeMs / frameCount / columns / frameWidth / frameHeight / fitMode / backgroundColor / common / progress / success / fail / complete
options.taskId string 客户自定义任务 ID,可用于取消 自动生成
options.src string 本地或网络视频地址
options.startTimeMs number 采样起始时间,单位毫秒 0 大于等于 0
options.endTimeMs number 采样结束时间,单位毫秒 视频时长 大于 startTimeMs 且不超过视频时长
options.frameCount number 采样和输出帧数 12 2-60
options.columns number 网格列数 4 1-frameCount
options.frameWidth number 单元格宽度,单位像素 160 正整数
options.frameHeight number 单元格高度,单位像素 90 正整数
options.fitMode StoryboardFitMode 帧填充单元格的适配方式 cover cover / contain
options.backgroundColor string 整图背景色 #000000 #RRGGBB / #AARRGGBB
options.common VideoThumbnailCommonOptions 输出、网络、方向修正和缓存参数 outputType / quality / format / allowNetwork / cachePolicy / cacheMaxAgeMs
options.progress function 元数据、提取、合成和写缓存进度回调
options.success function 整图生成成功回调
options.fail function 参数、路径、解码、画布或输出失败回调
options.complete function 成功或失败后触发一次

App 最终画布限制为 1600 万像素,Web 最终画布限制为 800 万像素。超过限制会返回 9060015,业务应减少帧数、列数或单元格尺寸。

返回值

字段 类型 说明
taskId string 当前任务 ID
success boolean 是否成功
src string 原始视频地址
imagePath string 整图文件路径;Web 返回 data URL
base64 string 整图 Base64 或 Web data URL;纯文件输出时为空
outputType ThumbnailOutputType 实际输出类型
format ThumbnailImageFormat 实际图片格式
width / height number 整图宽高
columns / rows number 实际网格列数和行数
frameCount number 实际帧数
durationMs number 视频时长,单位毫秒
startTimeMs / endTimeMs number 归一化后的采样区间
cacheHit boolean 是否直接复用了已有整图缓存
frames Array<VideoStoryboardFrame> 各帧的 index / timeMs / x / y / width / height
message string 中文说明

getSmartVideoThumbnail(options)

说明 在指定视频区间内等距分析多个候选帧,综合亮度、对比度、清晰度和黑白画面占比,选择质量更高的封面。候选分析不会生成临时图片文件;最终封面复用普通缩略图的输出和缓存参数。

参数

参数 类型 必填 说明 默认值 可选参数
options SmartVideoThumbnailOptions 智能封面参数对象 taskId / src / candidateCount / startRatio / endRatio / common / progress / success / fail / complete
options.taskId string 客户自定义任务 ID,可用于取消任务 自动生成
options.src string 本地或网络视频地址
options.candidateCount number 候选帧数量,运行时限制到 3-20 7 3-20
options.startRatio number 候选区间起始比例 0.05 0-1
options.endRatio number 候选区间结束比例,必须大于 startRatio 0.95 0-1
options.common VideoThumbnailCommonOptions 最终输出、网络、方向修正和缓存参数 outputType / maxWidth / maxHeight / quality / format / allowNetwork / cachePolicy
options.progress function 元数据、分析、选择和最终输出进度回调
options.success function 智能封面成功回调
options.fail function 参数、路径、解码或输出失败回调
options.complete function 成功或失败后触发一次

返回值

字段 类型 说明
taskId string 当前任务 ID
success boolean 是否成功
src string 客户传入的原始视频地址
selectedTimeMs number 最终选中帧的时间,单位毫秒
score number 最终候选质量分,范围 0-1
fallbackUsed boolean 是否因全部候选质量较低而使用最高分兜底
thumbnail VideoThumbnailResult 最终生成的标准缩略图结果
candidates Array<SmartThumbnailCandidate> 成功解码候选的时间、指标、得分和可用性
message string 中文说明

错误码

错误码 含义 说明
9060001 platform unsupported 当前平台暂不支持真实取帧能力
9060002 native context unavailable 原生上下文不可用
9060003 invalid video source 视频地址为空或格式不合法
9060004 path inaccessible 视频路径无法读取,常见于外部路径、content:// 授权或沙箱边界
9060005 network disabled 传入网络视频但未开启 allowNetwork
9060006 download failed 网络视频下载失败
9060007 decode failed 视频解码失败,例如 MOV / HEVC 在目标平台不支持
9060008 frame extraction failed 指定时间点取帧失败
9060009 cache write failed 缩略图缓存写入失败
9060010 operation timeout 下载、解码或取帧超时
9060011 batch cancelled 批量任务被取消
9060012 unsupported codec or format 当前平台不支持视频编码或封装格式
9060013 active task id conflict 相同任务 ID 仍处于活动状态
9060014 invalid storyboard options 时间轴帧数、区间、列数、单元格尺寸、适配方式或背景色不合法
9060015 storyboard canvas exceeds safe pixel limit 时间轴整图超过当前平台安全像素上限

自定义基座说明

插件包含 App 端 utssdk/app-android/**/*.utsutssdk/app-ios/**/*.uts 和 iOS Swift 桥接逻辑,Android 网络视频还使用 INTERNET 权限。客户真机要使用 Android / iOS 最新原生逻辑时,需要重新运行对应平台原生联编或重新打对应平台自定义基座;仅更新 wgt/appResource 不能替换旧基座中的原生逻辑。时间轴预览和智能封面没有新增 Android/iOS 三方 SDK、libsresFrameworksResources

注意事项

  • Android、iOS 已支持任务取消与文件缓存复用;Web 使用进程内 LRU,页面刷新后缓存会释放。
  • 插件层会优先把路径归一、缓存命名、批量队列和错误码做成稳定契约,后续平台实现不得要求客户改成唯一指定调用写法。
  • 网络视频默认关闭,业务需显式设置 allowNetwork: true,并关注下载大小、超时和服务端是否支持移动端直接访问。
  • HarmonyOS、微信小程序和支付宝小程序当前返回明确不支持错误,不伪造成功;只有拿到可编译、可验证的真实平台能力后才会打开能力矩阵。

作者系列UTS插件

以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。

插件 能力方向 插件市场
lizhao-nfc-pro NFC 标签读写、NDEF、IsoDep 与诊断 查看插件
lizhao-float-window 悬浮窗、画中画、权限与诊断 查看插件
lizhao-device-id 设备标识、隐私策略与诊断 查看插件
lizhao-scan-pro 原生扫码、连续扫码、相册识别 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-smart-tts 系统 TTS、云端合成、听书方案 查看插件
lizhao-share-plus 系统分享、远程文件下载后分享 查看插件
lizhao-sqlite-pro 原生 SQLite、迁移、备份与诊断 查看插件
lizhao-icon-pro SVG 图标组件、多主题与缓存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件
lizhao-gallery-pro 相册媒体分页、筛选、缩略图与导出 查看插件
lizhao-video-thumb 视频封面、批量取帧与 Base64 返回 查看插件
lizhao-ble BLE 扫描、连接、读写、通知与自动重连 查看插件
lizhao-sse-pro SSE、Line、JSONL 与 Raw 流式请求 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 网络视频下载取帧使用 INTERNET 权限;本地视频取帧不主动申请相册权限,用户通过 chooseVideo 等系统选择器授权后读取所选视频

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

默认仅在本机读取视频文件并生成本地缩略图缓存,不上传视频、不上传缩略图、不采集用户数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无广告

暂无用户评论。