index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <template>
  2. <div v-drag class="drag-video-container">
  3. <video-player
  4. style="width:100%"
  5. ref="videoPlayer"
  6. class="player-video"
  7. :playsinline="false"
  8. :options="playOptions"
  9. @ready="onPlayerReady"
  10. @play="onPlayerPlay($event)"
  11. @pause="onPlayerPause($event)"
  12. @ended="onPlayerEnd($event)"
  13. @waiting="onPlayerWaiting($event)"
  14. @playing="onPlayerPlaying($event)"
  15. @loadeddata="onPlayerLoadeddata($event)"
  16. @timeupdate="onPlayerTimeupdate($event)"
  17. @statechanged="playerStateChanged($event)"
  18. />
  19. </div>
  20. </template>
  21. <script>
  22. export default {
  23. name: "video-p",
  24. props: {
  25. path: { // 传入的地址
  26. type: String,
  27. default: "",
  28. },
  29. lastTime: { // 传入的上次播放位置
  30. type: Number,
  31. default: 0,
  32. },
  33. },
  34. data() {
  35. return {
  36. playedTime: this.lastTime,
  37. currentTime: 0,
  38. maxTime: 0,
  39. playOptions: {
  40. height: "100%",
  41. width: "100%",
  42. playbackRates: [0.5], // 可选的播放速度
  43. autoplay: true, // 如果为true,浏览器准备好时开始回放
  44. muted: false, // 默认情况下静音播放
  45. loop: false, // 是否视频一结束就重新开始
  46. preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据,auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
  47. language: "zh-CN",
  48. aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值,值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
  49. fluid: true, // 当true时,Video.js player将拥有流体大小,换句话说,它将按比例缩放以适应其容器
  50. sources: [
  51. {
  52. type: "video/mp4", // 类型
  53. src: require("./output.mp4"), // url地址,在使用本地的资源时,需要用require()引入,否则控制台会报错
  54. },
  55. ],
  56. notSupportedMessage: "此视频暂无法播放,请稍后再试", // 允许覆盖Video.js无法播放媒体源时显示的默认信息
  57. controlBar: {
  58. currentTimeDisplay: false,
  59. progressControl: false, // 是否显示进度条
  60. playbackRateMenuButton: false, // 是否显示调整播放倍速按钮
  61. timeDivider: false, // 当前时间和持续时间的分隔符
  62. durationDisplay: false, // 显示持续时间
  63. remainingTimeDisplay: false, // 是否显示剩余时间功能
  64. fullscreenToggle: false, // 是否显示全屏按钮
  65. },
  66. },
  67. };
  68. },
  69. computed: {},
  70. mounted() {
  71. },
  72. methods: {
  73. update() {
  74. },
  75. // 准备好了
  76. onPlayerReady() {
  77. console.log("准备好了");
  78. },
  79. // 视频播放
  80. onPlayerPlay(player) {
  81. },
  82. // 视频暂停的
  83. onPlayerPause(player) {
  84. },
  85. // 视频播放完
  86. onPlayerEnd(player) {
  87. },
  88. // DOM元素上的readyState更改导致播放停止
  89. onPlayerWaiting(player) {
  90. },
  91. // 视频已开始播放
  92. onPlayerPlaying(player) {
  93. },
  94. // 当播放器在当前播放位置下载数据时触发
  95. onPlayerLoadeddata(player) {
  96. },
  97. // 当前播放位置发生变化时触发
  98. onPlayerTimeupdate(player) {
  99. },
  100. //播放状态改变
  101. playerStateChanged(playerCurrentState) {
  102. },
  103. // 手动暂停视频的播放
  104. pause() {
  105. // 视频播放器的方法调用,要使用this.$refs.videoPlayer.player这个对象去调用
  106. this.$refs.videoPlayer.player.pause()
  107. }
  108. },
  109. };
  110. </script>
  111. <style lang="scss" src="./index.scss"/>