我在 Google Cloud Storage 的私人存储桶存储中托管一些视频。 这些视频的持续时间相当长(每个大约一个小时),但我只想循环显示这些视频的 3 到 4 秒(例如时间 1120 秒到 1123 秒之间)。 问题是,即使我给
<video>
标签提供了正确的 URL(类似于 https://mybucket.storage.googleapis.com/path-to-my-video.mp4?access_token=...t=1120 ,1123),浏览器(Chrome 或 Firefox)仍然下载大约。 10Mb的数据,对于3秒的播放来说有点长。
浏览器下载的数据似乎比播放我想要的范围所需的数据要多,因此我正在寻找一种方法来加载最少量的数据来播放我的范围。
我已经尝试过
preload="metadata"
并添加了这些事件监听器以确保视频永远不会超出边界播放:
<video controls preload="metadata"
src={`${videosRootUrl}/${videoMetadata.name}/${videoMetadata.name}.mp4?access_token=${accessToken}#t=${from},${to}`}
onError={err => handleVideoError(err)}
onTimeUpdate={e => handleTimeUpdate(e, from, to)}
onLoadedMetadata={e => onloadedmetadata(e.currentTarget, from)}
>
function handleTimeUpdate(event, from, to) {
const videoElt = event.currentTarget
const currentTime = videoElt.currentTime
if(currentTime < from || currentTim
}
}
function onloadedmetadata(video, from) {
video.currentTime = from;
}
Google Cloud Storage 无法像您期望的视频流服务那样处理特定视频。您无法清理到特定时间点或重新采样质量。 GCS 所能做的就是传递对象的全部内容,它并不真正关心对象包含什么。因此,应该预期浏览器将从头开始下载,并在播放内容时继续下载。
另请参阅: