火山引擎内容分发网络(CDN)提供了 "视频拖拽" 功能,可以处理特定场景下播放器发送的视频分片请求。参见 前提条件。
start 和 end 查询参数来指定请求的视频分片。例如,以下请求 URL 表示播放器请求的是从第 15 秒开始,第 120 秒结束的视频分片。
http://www.example.com/4K_demo.mp4?start=15.000&end=120.000
视频格式 | Metadata | start/end 参数 | 请求 URL 示例 |
|---|---|---|---|
MP4 | 在源站上,MP4 视频文件必须包含 Metadata,并且 Metadata 必须出现在文件的开头。 | 表示视频的开始和结束时间,单位是秒,精确到毫秒。 |
|
FLV | 在源站上,FLV 视频文件必须包含 Metadata。 | 表示开始和结束位置所对应视频文件中的字节。 |
|
start 和 end 参数名称区分大小写。例如,CDN 收到了一个请求 URL 是 http://www.example.com/sample.mp4?Start=15 的视频分片请求。由于 Start参数的大小写不正确,CDN 返回的是完整的 sample.mp4,而不是指定的视频分片。start 或 end 指定位置的视频帧不是关键帧,则 CDN 将从视频的早些时间中获取离 start 或 end 最近的关键帧作为实际的开始和结束时间。视频拖拽是现代视频播放器普遍支持的功能。在视频播放时,用户可以拖动播放器中的进度条改变播放时间点。当用户拖动进度条到一个时间点时,播放器会向服务器请求从该时间点开始的一个视频分片,而不是请求完整的视频。这样,在用户观看视频时,无需等待完整视频文件的下载,而是在播放器获得视频分片后就可以从相应时间点开始观看视频了,用户体验好。
说明
当您的场景满足 前提条件,并且您通过 CDN 来分发视频,CDN 会将播放器的视频分片请求处理成一个用户 Range 请求。基于缓存中的完整视频文件,CDN 可以准确返回播放器请求的视频分片。
在 CDN 收到播放器发送的视频分片请求时,如果 CDN 还未缓存完整的视频文件或者缓存的视频文件已过期,CDN 会先向源站请求完整的视频文件。因此,对于发送该视频分片请求的播放器,需要等待较长的时间才能收到 CDN 的响应。要避免这个问题,对于热门的视频,推荐您使用 CDN 提供的 预热 功能将这些视频文件提前缓存到 CDN 节点。
视频中任意一个平滑过渡是由两个关键帧定义的。这两个关键帧分别记录了该平滑过渡的开始状态和结束状态。对于 MP4 和 FLV 格式的视频文件,其元数据中指定了哪些视频帧是关键帧。
start 参数,也不包含 end 参数。start 参数,也不包含 end 参数。