Vue播放rtmp/Hls實時視頻踩坑日記

1 rtmp

  • 使用vue-video-play播放(支持rtmp和hls)
//安裝
npm install vue-video-player --save

//代碼
<template>
  <videoPlayer class="vjs-custom-skin videoPlayer" :options="playerOptions"></videoPlayer>
</template>

 import videojs from 'video.js'
import 'video.js/dist/video-js.css'
import 'vue-video-player/src/custom-theme.css'
import { videoPlayer } from 'vue-video-player'
import 'videojs-flash'

export default {
  components: {
    // videoPlayer
  },
  data() {
    return {
//rtmp設置
       playerOptions: {
      height: '300',
      sources: [{
      type: "rtmp/mp4",
      src: "XXX" //需要播放的rtmp地址
       }],
      techOrder: ['flash'],
      autoplay: false,
      controls: true
      },
//hls設置
      playerOptions: {
        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
        autoplay: false, //如果true,瀏覽器準備好時開始回放。
        controls: true, //控制條
        preload: "auto", //視頻預加載
        muted: false, //默認情況下將會消除任何音頻。
        loop: false, //導致視頻一結束就重新開始。
        language: "zh-CN",
        aspectRatio: "16:9", // 將播放器置于流暢模式,并在計算播放器的動態(tài)大小時使用該值。值應該代表一個比例 - 用冒號分隔的兩個數(shù)字(例如"16:9"或"4:3")
        fluid: true, // 當true時,Video.js player將擁有流體大小。換句話說,它將按比例縮放以適應其容器。
        sources: [
          {
            type: "application/x-mpegURL",
            //   src: 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8'
            src: "http://32.92.129.52:83/openUrl/uDaH1JK/live.m3u8"
          }
        ],
        width: document.documentElement.clientWidth,
        notSupportedMessage: "此視頻暫無法播放,請稍后再試" //允許覆蓋Video.js無法播放媒體源時顯示的默認信息。
      }
    };
  },

備注:上述能夠正常播放芒果臺實時視頻,但是公司的實時視頻播放不了,還未發(fā)現(xiàn)根本原因

2 Hls實時視頻播放

  • 使用video.js進行播放(實測可行)
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>hls.js</title>
    <script type='text/javascript' src='../../lib/video.js'></script>
    <style>
        /* #video{
            width:100%;
        } */
    </style>
  </head>
  <body>
    <video id="video" ></video>
    <video id="video2" ></video>
  </body>
  <script>
 var Hls = window.Hls
function initVideo() {
    var url = "http://32.92.129.52:83/openUrl/NY0ikco/live.m3u8"
    let video = document.getElementById('video')
    if (Hls.isSupported()) {
      var hls = new Hls()
      hls.loadSource(url)
      hls.attachMedia(video)
      hls.on(Hls.Events.MANIFEST_PARSED, function () {
        video.play()
      })
    } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
      video.src = url
      video.addEventListener('canplay', function () {
        // video.play()
      })
    }
}
initVideo()
  </script>
</html>
  • 使用Hls.js(Vue項目中實測可行)
//安裝
npm install --save hls.js
文檔鏈接:https://www.helloweba.net/javascript/571.html

<template>
  <div>
    <video ref="videoRef" width="400" controls></video>
  </div>
</template>
<script>
import "../assets/js/video.js";
// import "../assets/js/hls";
// var Hls = window.Hls
import Hls from "hls.js";
export default {
  mounted() {
    var hls = new Hls();
    hls.loadSource("XXXX");//需要播放的視頻地址
    hls.attachMedia(this.$refs.videoRef);
    hls.on(Hls.Events.MANIFEST_PARSED, function() {
      this.$refs.videoRef.play();
    });
  }
};
</script>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容