vue+hls.js播放hls视频,踩坑记录

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

1.需求概览

  1. 需要在管理后台查看直播历史视频,历史视频为hls流视频,格式为http://xxxxxxxx.m3u8

2.界面展示原型

hls.js,前端,javascript,vue.js,Powered by 金山文档

2.封装hls组件

<template>
    <video :id="hlsVideoId" :width="dpi[0]" :height="dpi[1]" :autoplay="autoplay" controls></video>
</template>
<script>
export default {
    name: "HlsVideo",
    props: {
        url: {
            type: String,
            src: ""
        },
        dpi: {
            type: Array,
            default: [400, 300]
        },
        autoplay: {
            type: Boolean,
            default: false
        }
    },
    data() {
        return {
            hlsVideo: '',
            hlsVideoId: null
        };
    },
    methods: {
        // 随机ID
        generateRandomString() {
            let result = '';
            let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
            let charactersLength = characters.length;
            for (let i = 0; i < 8; ++i) {
                result += characters.charAt(Math.floor(Math.random() * charactersLength));
            }
            return result + Date.now();
        },

        // 初始化
        initHlsVideo() {
            // 采用cdn index.html引入 https://cdn.jsdelivr.net/npm/hls.js@latest"
            if (Hls.isSupported()) {
                let hlsVideoDom = document.getElementById(this.hlsVideoId);
                this.hlsVideo = new Hls()
                this.hlsVideo.attachMedia(hlsVideoDom)
                this.hlsVideo.on(Hls.Events.MEDIA_ATTACHED, () => {
                    // 每次调用接口列表都要重新创建实例每个视频源不同的实例,所以在父组件使子组件强制刷新渲染(更改组件key)
                    console.log('创建成功',);
                    this.hlsVideo.loadSource(this.url);
                    // 链接错误恢复
                    if (data.fatal) {
                        switch (data.type) {
                            case Hls.ErrorTypes.NETWORK_ERROR:
                                // try to recover network error
                                console.log('fatal network error encountered, try to recover');
                                hls.startLoad();
                                break;
                            case Hls.ErrorTypes.MEDIA_ERROR:
                                console.log('fatal media error encountered, try to recover');
                                hls.recoverMediaError();
                                break;
                            default:
                                // cannot recover
                                hls.destroy();
                                break;
                        }
                    }

                })
            }
        }
    },
    created() {
        // 生成domId
        this.hlsVideoId = this.generateRandomString()
    },
    beforeDestroy() {
               //销毁组件实例
            this.hlsVideo.destroy()

    },
    mounted() {
        this.initHlsVideo();
    }
};
</script>

<style scoped lang="scss"></style>

3.父组件引用table表格

import HlsVideo from '@/views/public/HlsVideo.vue'
  
<el-table-column label="通话视频" width="220">
          <template slot-scope="scope">
            <!-- 更改key强制渲染 -->
            <HlsVideo :url="scope.row.url" :dpi="[200, 150]" :key="scope.row.url"></HlsVideo>
          </template>
        </el-table-column>

4.踩坑汇总

1.查询调取改变接口列表数据,导致播放的视频未变化?

检查发现不同页面还是重复的hls组件实例,使每个页面的hls组件实例唯一性,不复用,给组件绑定key解决文章来源地址https://www.toymoban.com/news/detail-763650.html

到了这里,关于vue+hls.js播放hls视频,踩坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 浏览器不需要安装插件,前端播放在线视频方案,几款播放器介绍,hls协议下的h.265视频播放方案推荐

    一般我们播放本地视频都是使用 video标签,但是 video 元素只支持三种视频格式:MP4、WebM、Ogg ,对于在线视频直接使用video是没法播放的,这里介绍几款这两天我在做播放在线监控视频功能时使用过的几款播放器,初次接触流媒体踩了一堆坑,到目前为止对这部分内容都还了

    2024年02月08日
    浏览(44)
  • 【记录处理Vue项目中Video.js播放不了MP4视频Bug】

    在Vue项目中使用Video.js播放MP4视频。 在项目中使用Video.js播放MP4视频。视频采集上来存在数据库,前端使用Video.js对视频进行播放。突然有一天,MP4视频播放不了,并且报错: VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media. 并发现前一时间段采集到

    2024年04月14日
    浏览(40)
  • vue2 组件vue-video-player播放视频,支持hls格式

    参考教程:https://juejin.cn/post/6939898078526881823 官方:https://github.com/surmon-china/videojs-player 安装指令 安装指令要注意带上版本号,如果没有会默认使用最新版,最新版仅支持vue3,因此会出问题。 HLSPlay.vue 自定义组件代码 直接引用,如果组件配置了自动播放,则会自动播放。 更

    2024年02月11日
    浏览(39)
  • vue中使用EasyPlayer播放监控视频HLS,H265、H264

    1.使用npm下载依赖 2.将EasyPlayer-lib.min.js文件、EasyPlayer.wasm文件、libDecoder.wasm文件放置到public下 3.创建components,html代码如下 4.使用props接收数据 5.在父组件中引入,传递props中的数据即可运行即可

    2024年02月03日
    浏览(34)
  • Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流

    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_霸道流氓气质的博客-CSDN博客 上面讲了Nginx-http-flv-module+flv.js进行流媒体服务器搭建和前端播放视频流的过

    2024年02月01日
    浏览(48)
  • 在vue中使用dplayer播放hls m3u8格式视频

    Dplayer 官方文档地址 Dplayer官方地址 虽然在vue中有vue-dplayer但却没有对hls进行很好的支持 所以建议还是使用Dplayer 在组件中引入 播放m3u8格式的视频需要框选部分 – 建议查看官方文档MSE支持 切换视频 切换视频需要用到 switchVideo() api 方便大家复制 部分片段

    2024年02月13日
    浏览(26)
  • VideoJS+HLS视频加密播放

            前段时间遇到一个播放视频的项目,为了防止登录的用户下载项目的视频,所以需要对视频加密,即使用户下载也不能播放;因为前端采用videojs,最后确认方案是将mp4转m3u8文件格式,来实现视频文件加密播放。下面做一下总结。         HLS(HTTP Live Streaming的缩

    2024年02月02日
    浏览(32)
  • Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流

    Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流: Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客 Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流: Vue中使用vue-video-player和videojs-flash插件实现播放

    2024年02月03日
    浏览(42)
  • 【Vue】播放flv格式视频(flv.js视频播放器)

     图片来源:HTTP-FLV直播初探   github地址:GitHub - bilibili/flv.js: HTML5 FLV Player npm install flv.js --save 封装一个组件flvVideo hasAudio设置为true就不展示。。。不知道为啥~ home.vue 参考:Vue 中使用flv.js视频播放器

    2024年02月14日
    浏览(66)
  • vue+flv.js实现视频播放

    代码如下(示例): npm install --save flv.js  下载flv依赖 1.获取视频流地址并使用 2.有一个问题就是同时只能播放6个视频,超出6个视频会加载不出来,需要摧毁上一个视频,关闭视频的时候调用这个方法就好 3.还有一个就是,flv视频在谷歌浏览器播放,如果你离开页面他会暂

    2024年02月14日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包