首页 > 编程语言 >直播平台源码实现播放视频的方法

直播平台源码实现播放视频的方法

时间:2023-08-16 16:59:37浏览次数:61  
标签:视频 js player flv 直播 video 播放 源码

我们在直播平台中上传视频的时候往往会不知道自己上传的是什么格式的视频,在APP软件播放的时候有时可能会播放不出来,这时候我们就会专门按照该视频的格式进行播放,顺利的将视频展示出来,下面就给大家讲解下直播平台源码实现m3u8、flv、mp4视频播放的方法。

一、直播平台源码中播放m3u8格式视频

1、安装依赖

npm install video.js --save // 视频播放器插件
npm install videojs-contrib-hls --save // 播放hls流插件

2、页面引入插件

import videojs from "video.js";
import "video.js/dist/video-js.css";

3、页面中的使用

<template>
  <div>
    <video id="videoPlayer" class="video-js vjs-default-skin" controls playsinline autoplay="autoplay" width="500px">
      <source :src="attachmentLink" type="application/x-mpegURL" />
    </video>
  </div>
</template>
<script>
import videojs from "video.js";
import "video.js/dist/video-js.css";
export default {
  data() {
    return {
      dp: null,
      options: {
       playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
        aspectRatio:'16:9',
        notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
        autoplay: false, // 设置自动播放
        muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音(Chrome66及以上版本,禁止音视频的自动播放)
        preload: "auto", // 预加载
        controls: true, // 显示播放的控件
      },
      attachmentLink: "https://e-sign.dms.t.cn-np.com/files/m3u8_file/c4b94118-3c8d-4410-9987-985c2b44c278/c4b94118-3c8d-4410-9987-985c2b44c278.m3u8",
    };
  },
  mounted() {
   // 使用 $nextTick 解决vedio报错  The element or ID supplied is not valid. (videojs)
    this.$nextTick(() => {
      this.loadVideo();
    });
  },
  methods: {
    loadVideo() {
      this.dp = videojs("videoPlayer", this.options);
      // 也可以使用以下方式给vedio设置 src
      // this.db.src([
      //   {
      //     src: "https://e-sign.dms.t.cn-np.com/files/m3u8_file/c4b94118-3c8d-4410-9987-985c2b44c278/c4b94118-3c8d-4410-9987-985c2b44c278.m3u8", // 地址
      //     type: "application/x-mpegURL", // 告诉videojs,这是一个hls流
      //   },
      // ]);
    },
    // 销毁
    beforeDestroy() {
      if (this.dp) {
        this.dp.dispose(); // dispose()会直接删除Dom元素
      }
    },
  },
};
</script>
<style scoped>
.video-box {
  width: 100%;
  max-width: 500px;
  max-height: 500px;
}
// 暂停播放按钮居中
::v-deep .video-js .vjs-big-play-button {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</style>

二、直播平台源码中flv格式的方案来播放视频

简介:flv.js是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。

开源地址: https://github.com/Bilibili/flv.js/

1、安装依赖

npm install --save flv.js

2、页面引入插件

import flvjs from 'flv.js'

3、页面中的使用

<template>
  <div>
    <div>
      <video id="videoElement" crossOrigin="anonymous" controls autoplay muted width="100%" height="800px"></video>
    </div>
  </div>
</template>
<script>
  import flvjs from 'flv.js'
  export default {
    data() {
      return {
        isPlay: false,
        player: null,
      };
    },
    methods: {
       // 设置视频配置(注意:createVideo应放在异步函数里或mounted之后,不可在created里直接加载,否则不生效)
       createVideo() {
        if (flvjs.isSupported()) {
          var videoElement = document.getElementById('videoElement');
          this.player= flvjs.createPlayer({
            type: 'flv',
            isLive: true,
            hasAudio: false,
            url: 'https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv' // 自己的flv视频流
          },{
            cors: true, // 是否跨域
            // enableWorker: true, // 是否多线程工作
            enableStashBuffer: false, // 是否启用缓存
            stashInitialSize: 128, // 缓存大小(kb)  默认384kb
            autoCleanupSourceBuffer: true // 是否自动清理缓存
          });
          this.player.attachMediaElement(videoElement);//挂载元素
          this.player.load();//加载流
          this.player.play();//播放流
        }
        // 报错重连
         this.player.on(flvjs.Events.ERROR, (err, errdet) => {
          // 参数 err 是一级异常,errdet 是二级异常
          if (err == flvjs.ErrorTypes.MEDIA_ERROR) {
            console.log('媒体错误')
            if(errdet == flvjs.ErrorDetails.MEDIA_FORMAT_UNSUPPORTED) {
              console.log('媒体格式不支持')
            }
          }
          if (err == flvjs.ErrorTypes.NETWORK_ERROR) {
            console.log('网络错误')
            if(errdet == flvjs.ErrorDetails.NETWORK_STATUS_CODE_INVALID) {
              console.log('http状态码异常')
            }
          }
          if(err == flvjs.ErrorTypes.OTHER_ERROR) {
            console.log('其他异常:', errdet)
          }
           if (this.player) {
             this.destoryVideo()
             this.createVideo()
           }
         })
      },
      destoryVideo(){
        if (this.player) {
          this.player.pause();// 暂停播放数据流
          this.player.unload();// 取消数据流加载
          this.player.detachMediaElement();// 将播放实例从节点中取出
          this.player.destroy(); // 销毁播放实例
          this.player= null;
        }
      }
    },
    mounted() {
      this.$nextTick(() => {
        this.createVideo()
      })
    },
    beforeDestroy() {
      this.destoryVideo()
  },
  };
</script>
<style scoped>
 
</style>

三、直播平台源码中mp4格式的方案来播放视频

<html>
  <head>
    <title>camera</title>
    <script type="text/javascript">
      function play() {
        var video = document.getElementById("video");
        video.play();
      }  
    </script>
  </head>
  <body>
    <video 
     id="video" 
     width="640" 
     height="360"  
     poster="/video/cover.png"// 视频封面
     controls //显示标准的 HTML5 视频/音频播放器控制条、控制按钮。
     autoplay //让文件自动播放。
     loop //让文件循环播放。
     preload="auto" //属性是用来缓存大体积文件的。它有三个可选值:"none" 不缓存、"auto" 缓存、"metadata" 只缓存文件元信息
     playsinline="true" // IOS微信浏览器支持小窗内播放
     webkit-playsinline="true" // 这个属性是ios 10中设置可以让视频在小窗内播放,也就是不是全屏播放*/ 
     x5-video-player-type="h5" // 启用H5播放器,是wechat安卓版特性
     x5-video-player-fullscreen="true" // 全屏设置,设置为 true 是防止横屏
     x5-video-orientation="portraint" // 播放器屏幕的方向,landscape横屏,portraint竖屏,默认值为竖屏。、、
     οnclick="play()" > 
      <!-- 标签是为了能够兼容各种浏览器对不同媒体类型的支持,我们可以用多个<source></source>元素来提供多个不同的媒体类型。支持mp4格式视频流的浏览器可以播放mp4文件,如果不支持,可以播放Ogg文件。 -->
      <!-- codecs=dirac, speex - 是用来指定播放使用的解码器(codecs); 这样就可以更精确的让浏览器如何播放提供的视频。 -->
     <source src="/video/text.mp4" type="video/mp4">
     <source src="/video/text.ogg" type="video/ogg; codecs=dirac, speex">
      <div> <p>You must have an HTML5 capable browser.</p> </div> 
    </video>
    
  </body>
</html>

在直播平台源码开发中使用上面的方式就可以对m3u8、flv、mp4这三种格式的视频进行播放了。

以上就是 直播平台源码实现播放视频的方法,更多内容欢迎关注之后的文章。

 

标签:视频,js,player,flv,直播,video,播放,源码
From: https://www.cnblogs.com/yunbaomengnan/p/17635517.html

相关文章

  • 0基础微信小程序搭建教程之禾匠商城源码搭建教程
    2022年版禾匠商城V4搭建教程(重新更新一份禾匠商城V4独立版搭建教程,因为之前的版本搭建跟现在有点不一样,现在一键安装比之前简单多了,废话不多现在开始!)准备工作:1、服务器一个,要好2核4G,安装系统CentOS7.5和宝塔面板。2、Nginx1.20,插件:PHP72、数据库5.6、Redis6.2.6,其它......
  • tonardo做web服务器播放大视频内存泄露问题的解决
    之前为了实现websocket来完成网页的推送,所以使用了tonardo作为web服务器。但是如果网页中含有视频插件的话,特别是经常要播放大视频的话,在linux环境下,经常发现python进程会莫名其妙的死掉。通过内存检测命令动态查看,发现python进程的内存占用一直居高不下,并且需要启用缓存才行。直到......
  • windows下各个浏览器用html5进行h.264大视频播放的性能对比说明
    最近在调查windows下哪种浏览器进行大视频播放时候稳定性比较高。举h.264的4g的视频为例。选用的浏览器有ie10,firefox,chrome。(因为opera不支持h.264所以没有考虑。safali在windows上的用户不是很多,也暂不考虑)先说明一下,机器的内存是2G。使用的都是最新版本的各个浏览器。采用的是h......
  • 直播系统源码开发中圆角效果的实现
    现在直播平台越来越多,登录后发现每个直播平台的页面效果都非常的吸引人,界面都非常的美观,很多按钮都采用了圆角的设计方法,显得更加的柔和,我们就来看看直播系统源码怎么实现吧!在直播系统源码开发中,可以通过创建一个自定义的DrawableXML文件来实现给Button设置圆角的效果。以下是创......
  • 手把手教你使用LabVIEW TensorRT实现图像分类实战(含源码)
    ‍‍......
  • H265格式兼容各个浏览器web端播放方案
    可能有很多朋友会遇到H265格式的视频流无法播放,毕竟现在很多相机都支持h265了,确实有很多优点,但是它最大的问题就是很多浏览器无法播放,也有部分浏览器能够兼容h265,但是总不能让用户指定浏览器使用吧,下面来说说怎么兼容各个浏览器播放。无非两种方案,第一种就是使用ffmpeg进行转码,这种......
  • 大学生心理健康信息采集系统的设计与实现-计算机毕业设计源码+LW文档
    摘 要 随着计算机信息技术的发展,各种管理系统逐渐用在社会生产生活中,通过系统化管理提高办事流程,节约时间。越来越多的人习惯并依赖于通过信息技术和智能化的形式来处理日常各类事物。为了满足健康求助者的需要,以及适应现代化健康信管理的需求,决定开发基于微信小程序的大学生......
  • 互联网+AI+智慧工地管理平台源码实现
    基于微服务+Java+SpringCloud+Vue+UniApp+MySql开发的智慧工地云平台源码一、智慧工地概念智慧工地就是互联网+建筑工地,是将互联网+的理念和技术引入建筑工地,然后以物联网、移动互联网技术为基础,充分应用BIM、大数据、人工智能、移动通讯、云计算、物联网等信息技术,通过人机交......
  • 干货满满:多人语音聊天室源码开发解析
    目前,一对一直播源码平台已经不能满足广大社交场景和人群了,而多人语音聊天室源码的开发属性,正好满足此需求,也让社交更加多样化、娱乐化,那么在技术上如何开发多人语音聊天室源码呢?开发语音聊天室的技术关键点如下:1.多人语音频繁麦位切换:抢麦、跳麦、麦位排序、抱麦、上麦、下麦等是典......
  • 网页安防视频流媒体播放器,实现在web浏览器播放H.265编码视频
    目前安防监控行业,基本所有的摄像头都支持H264编码,但是已经有部分摄像头开始支持H265,并且支持H265的摄像机已经越来越多。H265相比H264有着很多优势,压缩更高,网络传输消耗的带宽更小,相同码率下H265视频更清晰。H264目前已经可以在各种web浏览器、客户端等进行解码播放,但是目前H.265编......