YD/T 3904-2021 标准解读

YD通信标准信息

现行

作者:标准下载站
发布时间:2026‑10‑10
2102 字
阅读约 8 分钟

一、标准适用范围与执行边界

  • 适用主体:视频内容分发平台(含IPTV、OTT、互联网视频APP)、智能终端厂商(支持Android TV、WebOS、鸿蒙OS的机顶盒/智能电视)、第三方播放SDK提供方;不适用于纯直播流媒体服务器(如RTMP源站)、无用户播放状态感知能力的CDN节点。
  • 适用场景:用户在终端发起点播、回看、时移等非实时单向播放行为,且播放过程存在明确启停、跳转、缓冲、异常中断等可量化状态变化;覆盖HLS、DASH、HTTP-FLV协议下的自适应码率播放场景。
  • 排除条件:广播式线性直播(无用户主动控制行为)、P2P下载类视频客户端、仅支持本地文件播放无网络上报能力的离线应用、播放时长<3秒的瞬时播放行为(系统自动过滤)。

二、核心实操技术要求

  1. 上报触发条件:必须在播放状态变更后≤500ms内完成HTTP POST上报,状态类型包括:play_start、play_pause、play_resume、play_stop、seek_start、seek_complete、buffer_start、buffer_complete、error_occurred(含错误码1xx-9xx)。
  2. 必填字段规范:
    字段名类型约束说明
    play_idString(32)全局唯一播放会话ID,由客户端生成UUIDv4,同一播放会话内不可重复
    timestampLong毫秒级Unix时间戳,误差≤±200ms,需与NTP服务器校准
    video_idString(64)内容唯一标识,须与媒资管理系统video_id完全一致,禁止使用URL或临时token
    bitrate_kbpsInteger当前实际播放码率,取值为CDN返回的manifest中Representation带宽值,非估算值
  3. 传输安全要求:采用HTTPS单向认证,服务端证书须由国密SM2或RSA2048以上CA签发;报文Body需AES-128-CBC加密,密钥通过平台预置密钥协商机制获取,禁止硬编码密钥。
  4. 容错与重传机制:上报失败时启动指数退避重试(初始间隔1s,最大重试3次),重试失败数据本地缓存≤24小时,缓存容量上限5MB,超限时按FIFO策略丢弃旧数据。

三、典型业务场景应用案例

  • OTT平台多屏协同场景:用户在手机APP发起《新闻联播》回看,播放至第12分钟时切换至客厅电视继续观看。手机端上报play_stop(含position=720000ms),电视端上报play_start(含resume_from=720000ms),平台服务端比对play_id前缀与user_id关联性,实现断点续播状态同步,误差≤1.5秒。
  • 教育类APP课件学习分析场景:K12在线课堂APP在学生播放微课视频时,每30秒采集一次buffer_complete事件,结合bitrate_kbps与device_model字段,统计各型号平板在4G网络下平均卡顿率;当某批次华为MatePad上报buffer_start频次>8次/分钟且bitrate_kbps持续<800时,自动触发CDN节点切换策略。
  • 广电IPTV故障定位场景:某省IPTV用户集中反馈“点播黑屏”,平台接收error_occurred事件中code=503且device_os=“Linux 4.19”占比达92%,结合video_id分布发现仅限H.265编码内容,锁定为终端解码库兼容缺陷,48小时内推送SDK热更新补丁。

四、实操难点与解决方案

  1. 难点:Android低版本系统后台进程被杀导致上报丢失
    实测Android 8.0以下机型在播放暂停后5分钟内进入Doze模式,上报服务进程被系统回收
    • 方案:接入系统JobIntentService,在play_pause事件触发时立即提交前台Job,设置minimumLatency=0,overrideDeadline=3000ms,确保上报线程保活
  2. 难点:HLS多Variant流切换时bitrate_kbps字段误填
    部分播放器在EXT-X-STREAM-INF切换瞬间读取到上一Variant的bandwidth值
    • 方案:强制在AVPlayerItemStatusReadyToPlay回调后,解析当前loadedTimeRanges首个CMTimeRange对应EXT-X-STREAM-INF的BANDWIDTH属性,缓存至播放会话上下文
  3. 难点:Web端Safari浏览器因ITP机制阻断第三方Cookie导致play_id跨域失效
    iFrame嵌入场景下,主站域名与播放SDK域名不一致,localStorage写入失败
    • 方案:改用StorageManager API申请持久化存储配额,play_id生成逻辑迁移至Service Worker上下文,通过postMessage同步至页面主线程
标准解读不等同于原文,以标准原文为准

更多解读

标准号标准名称状态发布日期实施日期
YD/T 3904-2021视频应用与视频服务平台播放状态信息上报接口技术要求现行2021-05-172021-07-01