当前位置:   article > 正文

vediojs 使用方法及使用中遇到的问题_the element or id supplied is not valid. (videojs)

the element or id supplied is not valid. (videojs)

1、使用步骤

使用npm命令,安装 npm install video.js

首先,在main.js中引入

  1. import Video from 'video.js'
  2. import 'video.js/dist/video-js.css'
  3. Vue.prototype.$video = Video

 两种使用方法:

第一种,使用ref

  1. <!-- 视频使用vediojs vue-video-player是vediojs封装的vue的, -->
  2. <video ref="videoPlayer" class="video-js" poster="">
  3. <source src="./cam-01_1_9_2022_10_13_13_55_26_1665640526003203 copy.mp4" />
  4. </video>

下面是初始化的方法,不是很理解为什么要初始化,貌似是因为一般情况下视频会自动播放,用来解决不想让视频一上来就加载,而是在特定情况下执行时使用 ,(要在元素渲染后初始化)

  1. mounted() {
  2. // 播放参数
  3. let options = {
  4. controls: false, // 是否显示底部控制栏
  5. preload: 'auto', // 加载<video>标签后是否加载视频
  6. autoplay: 'muted', // 静音播放
  7. // playbackRates: [0.5, 1, 1.5, 2],// 倍速播放
  8. // width: "100%",
  9. height: '500',
  10. // loop: "loop",
  11. controlBar: {
  12. // 自定义按钮的位置
  13. children: [
  14. {
  15. name: 'playToggle'
  16. },
  17. {
  18. name: 'progressControl'
  19. },
  20. {
  21. name: 'currentTimeDisplay'
  22. },
  23. {
  24. name: 'timeDivider'
  25. },
  26. {
  27. name: 'durationDisplay'
  28. },
  29. {
  30. name: 'volumePanel', // 音量调整方式横线条变为竖线条
  31. inline: false
  32. },
  33. {
  34. name: 'pictureInPictureToggle' //画中画播放模式
  35. },
  36. {
  37. name: 'fullscreenToggle'
  38. }
  39. ]
  40. }
  41. }
  42. this.player = this.$video(this.$refs.videoPlayer, options, function onPlayerReady() {
  43. console.log('onPlayerReady', this)
  44. })
  45. },

 第二种,使用id

  1. <template>
  2. <div>
  3. <div v-for="(item,index) in videoList" :key="index" class="test_two_box">
  4. <video :id="'myVideo' + item.id" class="video-js">
  5. <source :src="item.src" type="video/mp4" />
  6. </video>
  7. </div>
  8. </div>
  9. </template>

 初始化方法

  1. export default {
  2. data() {
  3. return {
  4. videoList: [
  5. {
  6. id: 0,
  7. src: 'http://192.168.234.116:8110/Video/小白菜.mp4',
  8. cover: 'http://192.168.234.116:8110//Picture/position/banner.jpg'
  9. },
  10. {
  11. id: 1,
  12. src: 'http://192.168.234.116:8110/Video/小白菜.mp4',
  13. cover: 'http://192.168.234.116:8110//Picture/position/banner.jpg'
  14. }
  15. ]
  16. }
  17. },
  18. mounted() {
  19. this.videoList.map((item, index) => {
  20. let myPlayer = this.$video('myVideo' + item.id, {
  21. //确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。
  22. controls: true,
  23. poster: item.cover,
  24. //自动播放属性,muted:静音播放
  25. // autoplay: "muted",
  26. //建议浏览器是否应在<video>加载元素后立即开始下载视频数据。
  27. preload: "auto",
  28. //设置视频播放器的显示宽度(以像素为单位)
  29. width: "300px",
  30. //设置视频播放器的显示高度(以像素为单位)
  31. height: "150px"
  32. });
  33. })
  34. }
  35. }

不过我使用初始化时,如果是一个视频,就如上两种方法,都没有问题,但一循环数组,就出问题了,两种方法都拿不到元素,报错:The element or ID supplied is not valid. (videojs)

于是,最终我使用的是没有初始化的,直接使用vedio标签,如下:

其中:loop循环播放、autoplay自动播放、muted静音播放、controls控制条、poster显示缩略图

  1. <div class="contentListItem" v-for="(item, index) in eventsearchs" :key="index">
  2. <video
  3. :id="'myVideo' + index"
  4. data-setup="{}"
  5. loop="loop"
  6. autoplay
  7. muted
  8. controls
  9. poster=""
  10. style="width: 100%;"
  11. >
  12. <source :src="item.video" />
  13. </video>
  14. </div>

2、多个视频使用方法

(5条消息) vue页面引入多个视频(video.js)_weixin_43503080的博客-CSDN博客

 

3、遇到问题 The element or ID supplied is not valid. (videojs)

说的是用来绑定vediojs的元素,找不到,我使用单个vedio就没问题,已使用v-for来循环就不行了,很奇怪,不知道是不是我的问题,你们也可以试一下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/675417
推荐阅读
相关标签
  

闽ICP备14008679号