You need to enable JavaScript to run this app.
导航

视频拖拽

最近更新时间2024.04.23 16:42:35

首次发布时间2022.05.18 20:43:37

视频拖拽概述

视频拖拽是大多数视频播放器支持的功能。在视频播放时,用户可以拖动播放器中的进度条改变播放时间点。

在视频点播等在线视频场景中,播放器一般不会先下载完整的视频文件到播放器的本地缓存再开始播放,而是在视频首次加载以及用户拖动进度条时向服务器请求视频分片。这样,用户不再需要等待完整视频的下载,而是在播放器获取到视频分片后就可以开始观看视频,用户体验较好,还可以节省带宽。

播放器获取到的视频分片会缓存在本地。当用户拖动进度条时到某个时间点时,如果播放器本地缓存的所有视频分片都没有覆盖该时间点,视频播放器会向服务端请求从该时间点开始的一个视频分片。在请求中,请求 URL 会包含 startend 参数,用于指定请求的视频分片。

比如以下请求 URL 表示请求的视频分片是从第 15 秒开始,第 120 秒结束。

  • http://www.example.com/4K_demo.mp4?start=15.000&end=120.000

如果请求 URL 中只有 start,但是没有 end 参数,表示请求的这个分片是从 start 参数指定的位置开始,直到视频的末尾。

只有服务器支持视频分片请求,服务器才能返回请求的视频分片。如果服务器不支持,在收到这类请求时,服务器返回的是完整的视频文件。

火山引擎内容分发网络中的视频拖拽功能

在内容分发网络中,如果视频拖拽功能未启用,当收到视频分片的请求时,内容分发网络返回的是完整的视频文件,用户体验较差。在您启用该功能后,即使源站不支持处理分片请求,内容分发网络也能返回播放器请求的视频分片。

视频拖拽功能仅对格式是 MP4 或 FLV 的视频文件生效。需要留意的是,除了 startend 参数之外,内容分发网络实际返回的分片还受到关键帧的影响。参见 参数说明和 Metadata 要求

缓存键

当收到一个视频分片的请求时,如果内容分发网络的缓存中没有该分片文件所在的完整视频文件,内容分发网络会先向源站请求完整的视频文件,然后返回请求的视频分片。在缓存完整的视频文件时,内容分发网络不会在该文件的缓存键中包含 startend 参数。此后,该视频文件的任何分片请求都将命中内容分发网络的缓存。

关于缓存键的更多信息,参见 缓存键值

操作步骤

  1. 登录 火山引擎内容分发网络控制台

  2. 在左侧导航栏,点击 域名管理

  3. 域名管理 页面,找到需要配置的域名。

  4. 操作 列,点击 管理

  5. 在域名页面上,点击 内容优化 标签页。

  6. 在页面右上方,点击 编辑配置

  7. 视频拖拽 下方,设置 状态开启

  8. 在页面右上方,点击 提交编辑

参数说明和 Metadata 要求

文件格式Metadatastart/end 参数请求 URL 示例
MP4在源站上,MP4 视频文件必须包含 Metadata,并且 Metadata 必须出现在文件的开头。表示视频的开始和结束时间,单位是秒,精确到毫秒。http://www.example.com/volcano.mp4?start=5.013&end=12.123
FLV在源站上,FLV 视频文件必须包含 Metadata。表示开始和结束位置所对应视频文件中的字节。http://www.example.com/volcano.flv?start=5&end=145
  • 对于 startend 参数,内容分发网络区分参数名中字符的大小写。例如,内容分发网络收到了一个请求 URL 是 http://www.example.com/sample.mp4?Start=15 的请求。由于 Start参数的大小写不正确,内容分发网络返回的是完整的 sample.mp4,而不是指定的视频分片。

  • 如果 startend 指定位置的视频帧不是关键帧,则内容分发网络将从视频的早些时间中获取离 startend 最近的关键帧作为实际的开始和结束位置。

什么是关键帧

视频中任意一个平滑过渡是由两个关键帧定义的。这两个关键帧分别记录了该平滑过渡的开始状态和结束状态。