videoInfo.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2.  
  3. <div>
  4. <video-player
  5. class="vjs-custom-skin"
  6. ref="videoPlayer"
  7. :options="playerOptions"
  8. @ready="onPlayerReadied"
  9. @timeupdate="onTimeupdate"
  10. :playsinline="playsinline"
  11. >
  12. </video-player>
  13. </div>
  14. </template>
  15. <script>
  16. import 'video.js/dist/video-js.css'
  17. import 'vue-video-player/src/custom-theme.css'
  18. require('videojs-contrib-hls/dist/videojs-contrib-hls.js')
  19. import 'video.js/dist/video-js.css'
  20. import { videoPlayer } from 'vue-video-player'
  21. export default {
  22. components: {
  23. videoPlayer,
  24. },
  25. name: '',
  26. data() {
  27. return {
  28. initialized: false,
  29. currentTech: '',
  30. streams: {
  31. rtmp: '',
  32. hls: '',
  33. },
  34. playerOptions: {
  35. fluid: true,
  36. muted: false,
  37. sources: [
  38. {
  39. type: 'application/x-mpegURL',
  40. src: 'https://pili-live-hls.nengapp.com/nenglive/formal_02.m3u8',
  41. },
  42. ],
  43. notSupportedMessage: '此视频暂无法播放,请稍后再试',
  44. hls: true,
  45. },
  46. }
  47. },
  48. mounted() {},
  49. computed: {
  50. player() {
  51. return this.$refs.videoPlayer.player
  52. },
  53. currentStream() {
  54. return this.currentTech === 'Flash' ? 'RTMP' : 'HLS'
  55. },
  56. playsinline() {
  57. let ua = navigator.userAgent.toLocaleLowerCase()
  58. // x5内核
  59. if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
  60. return false
  61. } else {
  62. // ios端
  63. return true
  64. }
  65. },
  66. },
  67. methods: {
  68. onPlayerReadied() {
  69. if (!this.initialized) {
  70. this.initialized = true
  71. this.currentTech = this.player.techName_
  72. }
  73. },
  74. onTimeupdate(e) {
  75. console.log('currentTime', e.cache_.currentTime)
  76. },
  77. },
  78. }
  79. </script>
  80. <style scoped></style>