当前位置:   article > 正文

vue2项目实现多个视频列表自动循环播放 每个视频都播放完_vue 循环videoplayer

vue 循环videoplayer

实例代码:

  1. <template>
  2. <div>
  3. <video ref="videoPlayer" :src="currentVideo" autoplay controls @ended="playNextVideo"></video>
  4. </div>
  5. </template>
  1. data() {
  2. return {
  3. videoList: [
  4. "视频地址1",
  5. "视频地址2",
  6. "视频地址3"
  7. ],
  8. // 视频下标的索引
  9. currentIndex: 0,
  10. // 定时器
  11. timer: null
  12. };
  13. },
  14. computed: {
  15. // 返回当前视频的信息。
  16. //访问videoList数组和currentIndex变量来获取当前视频的信息
  17. currentVideo() {
  18. // 视频的下标
  19. return this.videoList[this.currentIndex];
  20. }
  21. },
  22. mounted() {
  23. this.startPlayback();
  24. },
  25. destroyed() {
  26. clearTimeout(this.timer);
  27. },
  28. methods: {
  29. // 用于播放下一个视频
  30. playNextVideo() {
  31. // 当前视频的索引。它会递增1,表示要播放下一个视频。
  32. this.currentIndex++;
  33. /*
  34. ,如果currentIndex超过了videoList中视频的数量,即currentIndex >= videoList.length,
  35. 说明已经播放到了最后一个视频,此时将currentIndex置为0,表示重新从第一个视频开始播放。
  36. */
  37. if (this.currentIndex >= this.videoList.length) {
  38. this.currentIndex = 0;
  39. }
  40. // 获取视频标签
  41. const videoElement = this.$refs.videoPlayer
  42. // 把视频标签 里的 视频地址清空
  43. videoElement.src = ''
  44. // 添加事件监听器
  45. // ended 事件是 HTML5 视频元素(<video>)的一个事件,它在视频播放结束时触发。 可以实现 移动端自动循环播放
  46. videoElement.addEventListener('ended', () => {
  47. this.startPlayback()
  48. })
  49. },
  50. startPlayback() {
  51. // 取消定时器
  52. clearTimeout(this.timer)
  53. // 获取当前视频元素
  54. const videoElement = this.$refs.videoPlayer
  55. // 添加判断 如果里边没数据则重新加载
  56. if (videoElement !== undefined) {
  57. videoElement.addEventListener('canplay', () => {
  58. this.timer = setTimeout(() => {
  59. this.playNextVideo()
  60. }, videoElement.duration * 1000)
  61. console.log('视频已加载完成')
  62. })
  63. // 清除原始源
  64. videoElement.src = ''
  65. // 在清除原始源后重新加载视频
  66. videoElement.load()
  67. // 在加载完成后播放视频
  68. videoElement.addEventListener('loadeddata', () => {
  69. videoElement.play()
  70. })
  71. } else {
  72. console.log('未找到视频元素')
  73. }
  74. }
  75. };

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号