前端vue播放m3u8、flv、mp4视频的方法

这篇具有很好参考价值的文章主要介绍了前端vue播放m3u8、flv、mp4视频的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、播放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";
  1. 页面中的使用
<template>
  <div class="myVideo">
    <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 lang="less" 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>

2、flv格式的方案来播放视频

简介:flv.js是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。
开源地址: https://github.com/Bilibili/flv.js/文章来源地址https://www.toymoban.com/news/detail-547425.html

  1. 安装依赖
    npm install --save flv.js
  2. 页面引入插件
import flvjs from 'flv.js'
  1. 页面中的使用
<template>
  <div class="preview">
    <div class="videoArea">
      <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 lang="scss" scoped>
 
</style>

3、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 class="fallback"> <p>You must have an HTML5 capable browser.</p> </div> 
    </video>
    
  </body>
</html>

到了这里,关于前端vue播放m3u8、flv、mp4视频的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • video.js 播放m3u8、flv、rtmp、RTS格式视频

     第一种方案(只适用m3u8格式): 属性 说明    options: {                     autoplay: true, // 设置自动播放                     muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,禁止音视频的自动播放)                     prelo

    2024年02月12日
    浏览(49)
  • 【vue】前端页面点击按钮弹窗播放m3u8格式视频

    最终效果: 1.表格操作列 2.initVideo方法 3.弹出层代码 4.showAll_dialog样式 5.第2步跳转的video.html页面代码,用dplayer播放的,放在项目根目录的public文件夹即可

    2024年02月04日
    浏览(37)
  • linux离线状态下将视频mp4格式转换m3u8

    因为业务需求,python文件生成的视频为MP4格式,无法在前端浏览器正常播放,需切换m3u8格式,但因为服务器是没有网络的,因袭需要在离线状态下进行完成。 看网上许多教程,ffmpeg可完成视频格式的转换,首先进行离线安装。 参考博文:https://blog.csdn.net/weixin_45181398/article

    2023年04月08日
    浏览(30)
  • Ueditor 富文本编辑器 插入 m3u8 和 mp4 视频(PHP)

    当前环境:PHP、Ueditor的版本是1.4.3 新的需求是,需要在Ueditor 富文本编辑器中,插入视频播放,并且视频格式有MP4,也有M3U8。 百度编辑器默认的是embed,需要修改下配置。 ueditor.all.js 和 ueditor.config.js 这两个文件要改一些东西,具体我这里就不展示了,网上有很多文章都有写

    2024年02月11日
    浏览(44)
  • videojs-flvjs:video.js + flv.js播放m3u8和flv视频

    videojs-flvjs是video.js的扩展,让video.js支持flv.js播放器,可以在video.js的techOrder里配置flvjs播放器。 下面做了一个切换m3u8和flv直播流的简易工具: https://mister-ben.github.io/videojs-flvjs/ https://blog.csdn.net/little__SuperMan/article/details/89203270/

    2023年04月16日
    浏览(37)
  • windows使用ffmpeg将MP4转m3u8使用参数详解,视频添加水印和压缩

    目录 背景: 一、什么是m3u8: 二、为什么使用m3u8: 三、安装ffmpeg: 1、下载后直接解压: 2、配置环境变量: 四、开始转换m3u8: 五、视频添加水印和压缩: 1. 给视频加上水印图片 2.输出视频的尺寸 3.输出文件的起始文件 4.输出文件的最小大小 和 最大的大小(会影响视频质量

    2024年02月07日
    浏览(42)
  • 关于FFmpeg将m3u8合并成mp4之后时长不对的解决方法

    导致时长不对的合并方法 concat方法会导致合并的视频时长有问题 时长正确的合并方法 使用读取m3u8文件的方式合并,合并出的视频时长是正确的。(注意:生成本地m3u8文件的时候要注意ts文件是否在下载时已经解密。如果已经解密,则生成的m3u8文件中不需要#EXT-X-KEY。) 参考

    2024年02月11日
    浏览(41)
  • m3u8文件转换mp4

    今天在做项目的时候遇到下载的视频文件格式是m3u8,且播放器不能播放。产品经理提出需要下载可播放的视频格式。便研究起来如何m3u8转mp4并下载。 后端所给的是一个对应的加密链接,将加密链接放入 a 标签内即可实现下载功能。但下载的是m3u8文件。 在码云上查到一篇关

    2024年02月12日
    浏览(24)
  • M3U8在线MP4格式

    MP4 格式是目前来说较为通用的格式一般的播放器都支持播放,兼容性十分友好。 不过可能会在网站在线播放的时候接触到 m3u8 文件,这种文件格式无法直接下载播放,如果想要在电脑上播放这种视频,则需要把 m3u8 文件转换成mp4格式。 介绍一个支持在线转换的网站: 在线转

    2024年02月16日
    浏览(30)
  • 「Python|音视频处理|场景案例」如何使用ffmpeg下载m3u8视频到本地并保存成mp4

    本文主要介绍如何使用ffmpeg批量下载视频到本地并保存成指定格式。 当我们希望将网页上的视频下载到本地的时候,我们可能获取到的视频地址是指向 .m3u8 格式的,当视频多的时候,手动下载并使用工具转换格式就显得工作量过大。 ffmpeg 是一个强大的音视频处理工具,具体

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包