使用视频标签从 HTML 中的特定时间戳开始视频(对于大型视频)

Posted

技术标签:

【中文标题】使用视频标签从 HTML 中的特定时间戳开始视频(对于大型视频)【英文标题】:Start the video from specific timestamp in HTML using video tag (for large videos) 【发布时间】:2021-10-20 13:03:10 【问题描述】:

我想从特定位置或特定时间戳开始和结束视频(例如 15 秒开始和 20 秒结束)。下面是我的代码,它适用于小视频,但不适用于大视频。谁能知道它是如何处理大视频的?

<video id="myVideo"  ></video>

<script>

var myVideo = document.getElementById('myVideo');
myVideo.setAttribute('src', '../../static/videos/abc.mp4#t=15,20');

</script>
      

【问题讨论】:

您的“大”视频是否针对流媒体进行了优化(MOOV atom 移到开头)?如果没有,他们必须加载整个视频以获取允许搜索按预期工作的元数据。对于一个小视频,它可以发生得足够快,你不会注意到。 【参考方案1】:

这就是你要找的吗?

const video = document.querySelector("video")

const bounds = 
 min: duration => 20,
 max: duration => duration - 20


let intervalId

function clamp() 
  const min = bounds.min(video.duration)
  const max = bounds.max(video.duration)
  
  if (video.currentTime < min) 
    video.currentTime = min
  

  if (video.currentTime > max) 
    video.currentTime = max
    video.pause()
  


video.addEventListener("play", event => 
  clearInterval(intervalId)
  intervalId = setInterval(clamp, 100)
)

video.addEventListener("pause", event => 
  clearInterval(intervalId)
)
video 
  width: 100%;
<video controls preload="metadata">
    <source src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4"/>
    Video not supported.
</video>

【讨论】:

是的,但这适用于大型视频吗?我的代码适用于小视频,但不适用于大视频。 你能想到为什么它不适用于大型视频吗?

以上是关于使用视频标签从 HTML 中的特定时间戳开始视频(对于大型视频)的主要内容,如果未能解决你的问题,请参考以下文章

Html 视频结束事件不适用于元素中的开始和结束时间声明

在视频播放期间以特定时间戳触发事件

控制 HTML5 视频中播放的开始位置和持续时间,然后下载该视频的特定持续时间

从html5中的视频标签中读取音频频谱

获取视频中每一帧的时间戳

从 HTML5 视频中获取 MP4 创建时间