• Vue中使用vuevideoplayer和videojsflash插件实现播放rtmp视频文件流


    场景

    Vue+Video.js播放m3u8视频流(海康威视摄像头+RTMP服务+FFmpeg):

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/121207504

    上面实现的使用Video.js播放m3u8格式的视频流文件。

    如果要在vue中直接播放rtmp视频流文件怎么办。

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    1、安装插件

    npm install vue-video-player --save

    npm install --save videojs-flash

    这里要注意网络上有说如下安装方式的

    npm install video-flash --save

    这种方式会报错找不到,完整应该是videojs-flash

    2、在页面中引用

    //videojs-flash必须要放在vue-video-player的后面
    import 'video.js/dist/video-js.css'
    import { videoPlayer } from 'vue-video-player'
    import 'videojs-flash'

    这里特别注意:

    引用时必须注意videojs-flash必须要放在vue-video-player的后面

    3、页面中引入videoPlayer组件

    export default {
      name: "rtmpPlay",
      components: {
           videoPlayer
          },

    4、页面上添加videoPlay组件

        <videoPlayer class="vjs-custom-skin videoPlayer" ref="videoplayer"
            :playsinline="true" width="90%" :options="playerOptions"
        customEventName="changed" >
       </videoPlayer>

    5、设置组件的设置属性

     data() {
        return {
          playerOptions: {
                      "800",
                     height: "400",
                     language: 'zh-CN',
                     techOrder: ['flash'],
                     muted: true,
                     autoplay: true,
                     controls: false,//不显示暂停、声音、进度条组件
                     loop: true,
                     sources: [{
                      type: 'rtmp/mp4',
                      src: 'rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp' //网络rtmp流地址
                      //src: 'rtmp://127.0.0.1:8822/live/badao' //本地rtmp流地址
                     }],
                  }
        };
      },

    这里通过controls: false,//不显示暂停、声音、进度条组件

    6、完整页面代码

    <template>
        <videoPlayer class="vjs-custom-skin videoPlayer" ref="videoplayer"
            :playsinline="true" width="90%" :options="playerOptions"
        customEventName="changed" >
       </videoPlayer>
    </template>
    
    <script>
    //videojs-flash必须要放在vue-video-player的后面
    import 'video.js/dist/video-js.css'
    import { videoPlayer } from 'vue-video-player'
    import 'videojs-flash'
    export default {
      name: "rtmpPlay",
      components: {
           videoPlayer
          },
      data() {
        return {
          playerOptions: {
                      "800",
                     height: "400",
                     language: 'zh-CN',
                     techOrder: ['flash'],
                     muted: true,
                     autoplay: true,
                     controls: false,//不显示暂停、声音、进度条组件
                     loop: true,
                     sources: [{
                      type: 'rtmp/mp4',
                      src: 'rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp' //网络rtmp流地址
                      //src: 'rtmp://127.0.0.1:8822/live/badao' //本地rtmp流地址
                     }],
                  }
        };
      },
      mounted() {
    
      },
      methods: {
       
      },
    };
    </script>

    7、注意这里的rtmp视频流地址

     src: 'rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp' //网络rtmp流地址

    该地址是网络地址,运行效果

    src: 'rtmp://127.0.0.1:8822/live/badao' //本地rtmp流地址

    这个是本地搭建的视频推流的实现,可以参考如下

    Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/120868728

    本地src的效果

    8、注意这里只有支持并且下载了flash才能播放视频,这里使用的360极速浏览器并安装flash,重启浏览器之后就可以播放了。但是如果是Chrome浏览器则会提示

    9、还要注意网络上有说vue-video-player同时安装时也会不播放的问题,所以如果之前已经安装了Video.js需要先将其删除卸载掉。

  • 相关阅读:
    centos下安装mycat
    centos下安装MySQL5.7
    centos下yum安装wget失败
    开心消消乐刷金币
    myBatis获取批量插入数据的主键id
    nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
    Mac下安装JDK 6
    VI下删除所有内容
    Mac下lombok无法安装到eclipse mars
    WEB-INF目录下的文件访问权限
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/15975913.html
Copyright © 2020-2023  润新知