当前位置:   article > 正文

Vue 实现两个视频同步播放、暂停,进度条、倍速保持一致_vue window.player播放两个视频

vue window.player播放两个视频

1、安装 vue-video-player:

npm install vue-video-player --save

2、在 main.js 中引入:

  1. import VideoPlayer from 'vue-video-player'
  2. require('video.js/dist/video-js.css')
  3. require('vue-video-player/src/custom-theme.css')
  4. Vue.use(VideoPlayer)

3、在 vue 中使用:

  1. <template>
  2. ...
  3. <!-- 视频 1 -->
  4. <video-player class="video-player vjs-custom-skin" ref="videoPlayer1" :options="playerOption" :playsinline="true" @play="onPlayerPlay()" @pause="onPlayerPause()" @timeupdate="onPlayerChange($event)"></video-player>
  5. <!-- 视频 2 -->
  6. <video-player class="video-player vjs-custom-skin" ref="videoPlayer2" :options="playerOption2" :playsinline="true" @play="onPlayerPlay()" @pause="onPlayerPause()" @timeupdate="onPlayerChange($event)"></video-player>
  7. ...
  8. </template>
  9. <script>
  10. import { videoPlayer } from "vue-video-player";
  11. import "videojs-flash";
  12. export default {
  13. data() {
  14. currentTime: 0,
  15. lastPlaybackRate: "",
  16. videoUrl: "",
  17. playerOption: {
  18. sources: [
  19. {
  20. type: "video/mp4",
  21. src: "",
  22. },
  23. ],
  24. autoplay: true, // 如果true,浏览器准备好时开始回放
  25. muted: true, // 默认情况下将会消除任何音频
  26. loop: true, // 是否一结束就重新开始播放
  27. language: "zh-CN",
  28. playbackRates: [0.7, 1.0, 1.5, 2.0], // 播放速度
  29. controls: true,
  30. notSupportedMessage: "此视频暂无法播放,请稍后再试", // 允许覆盖Video.js无法播放媒体源时显示的默认信息
  31. controlBar: {
  32. timeDivider: true,
  33. durationDisplay: true,
  34. remainingTimeDisplay: false,
  35. fullscreenToggle: true, // 全屏按钮
  36. },
  37. },
  38. playerOption2: {
  39. sources: [
  40. {
  41. type: "video/mp4",
  42. src: "",
  43. },
  44. ],
  45. autoplay: true, // 如果true,浏览器准备好时开始回放
  46. muted: true, // 默认情况下将会消除任何音频
  47. loop: true, // 是否一结束就重新开始播放
  48. language: "zh-CN",
  49. playbackRates: [0.7, 1.0, 1.5, 2.0], // 播放速度
  50. controls: true,
  51. notSupportedMessage: "此视频暂无法播放,请稍后再试", // 允许覆盖Video.js无法播放媒体源时显示的默认信息
  52. controlBar: {
  53. timeDivider: true,
  54. durationDisplay: true,
  55. remainingTimeDisplay: false,
  56. fullscreenToggle: true, // 全屏按钮
  57. },
  58. }
  59. },
  60. components: {
  61. videoPlayer
  62. },
  63. methods: {
  64. // 点击播放
  65. onPlayerPlay() {
  66. var that1 = this.$refs.videoPlayer1;
  67. var that2 = this.$refs.videoPlayer2;
  68. that1.player.play();
  69. that2.player.play();
  70. // 调整进度条
  71. that1.player.currentTime(this.currentTime);
  72. that2.player.currentTime(this.currentTime);
  73. },
  74. // 点击暂停
  75. onPlayerPause() {
  76. var that1 = this.$refs.videoPlayer1;
  77. var that2 = this.$refs.videoPlayer2;
  78. that1.player.pause();
  79. that2.player.pause();
  80. },
  81. // 当前播放位置发生变化时触发
  82. onPlayerChange(player) {
  83. if (this.videoUrl != this.playerOption.sources[0].src) {
  84. let that1 = this.$refs.videoPlayer1;
  85. let that2 = this.$refs.videoPlayer2;
  86. that1.player.currentTime(0);
  87. that2.player.currentTime(0);
  88. that1.player.playbackRate(1.0);
  89. that2.player.playbackRate(1.0);
  90. this.videoUrl = this.playerOption.sources[0].src;
  91. } else {
  92. this.currentTime = player.cache_.currentTime;
  93. // 调整播放速率
  94. if (this.lastPlaybackRate != player.cache_.lastPlaybackRate) {
  95. let that1 = this.$refs.videoPlayer1;
  96. let that2 = this.$refs.videoPlayer2;
  97. that1.player.playbackRate(player.cache_.lastPlaybackRate);
  98. that2.player.playbackRate(player.cache_.lastPlaybackRate);
  99. this.lastPlaybackRate = player.cache_.lastPlaybackRate;
  100. }
  101. }
  102. }
  103. }
  104. }
  105. </script>
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/468866
推荐阅读
相关标签
  

闽ICP备14008679号