首页 > 其他 > 详细

h5 video 播放视频, 动态更改视频源,播放内容不变问题解决

时间:2021-06-08 20:30:11      阅读:29      评论:0      收藏:0      [点我收藏+]

播放视频时,快速切换视频源,在Chrome DevTools 总是报错:

Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().

react 代码片段

<div>
    <video controls width="100%" src={videoUrl}/>
</div>

检查发现切换播放内容,videoUrl更新了, 但是播放内容没变化

原因: 调用play()的时候,视频文件还没有加载完成

所以: 要先load,然后异步去调用play

 

最终得到了这样一个版本:

import { useEffect, useRef } from "react"
const playRef = useRef()

<div>
    <video controls width="100%" ref={playRef}/>
</div>

// react hooks

useEffect(() => {
  if (playRef && playRef.current && videoUrl) {
    playRef.current.src = videoUrl 
    playRef.current.load() // 1. 先load
    const playPromise = playRef.current.play(); // 2.再play
    if (playPromise !== undefined) {
    playPromise
      .then(() => {
      	playRef.current.play()
      })
      .catch(() => {
      	playRef.current.pause()
      });
      }
    }
  }, [videoUrl])

 

参考: https://segmentfault.com/a/1190000019066679

另外: 本人用setTimeout 延时播放,控制台还是会提示错误, 因此采用了promise的回调函数处理

 

h5 video 播放视频, 动态更改视频源,播放内容不变问题解决

原文:https://www.cnblogs.com/aloehui/p/14864062.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!