视频融合 hls流如何对接
Posted David凉宸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频融合 hls流如何对接相关的知识,希望对你有一定的参考价值。
很多人第一次听到视频融合这个词语吧,尤其是前端开发工程师。
很多IT公司项目都很少做视频融合的功能,那到底如何去对接呢?让我们带着这个疑问去看下面的讲解吧!!!!
接下来我会在V3项目中去讲解如何对接(V2一样的 只是使用方法不同)
问:hls流是什么呢?
答:HLS,英文全称为:HTTP Live Streaming,由苹果公司提出,它是基于Http的流媒体网络传输协议,主要传输TS格式流,最大的特点是安卓、苹果都能兼容,通用性强,而且码流切换流畅,满足不同网络、不同画质的用户播放需要,但是因为该种视频流协议也存在较为致命的缺陷,那就是网络延时太高。主要用于PC和Apple终端的音视频服务。包括一个m3u8的索引文件,TS媒体分片文件和key加密串文件。
问:那我们如何去拉去这个流进行播放呢?
答:看完下面的使用方法就了解了。
接下来我们进入对接吧!
我们首先需要先创建一个video标签来做视频播放窗口载体
<template>
<div class="home">
<video ref="videoElementRef" id="videoElement" controls muted style="width: 500px; height: 500px; object-fit: fill"></video>
</div>
</template>
页面出现video载体了
我们使用的是hls.js
npm 包
所以我们先下载npm包(下面两种都可)
npm install hls.js
yarn add hls.js
等待安装中…
安装完后我们需要引入注册
import ref, onBeforeUnmount, onMounted from 'vue'
import hlsJs from 'hls.js'
const videoUrl = ref('http://kbs-dokdo.gscdn.com/dokdo_300/_definst_/dokdo_300.stream/playlist.m3u8') // 视频流
const videoElementRef = ref() // 载体
const hlsjs = ref() // 存储体
const hlsshow = () =>
console.log(videoElementRef.value)
if (hlsJs.isSupported())
hlsjs.value = new hlsJs() // new一个hls 解析
hlsjs.value.loadSource(videoUrl.value) //设置播放路径
hlsjs.value.attachMedia(videoElementRef.value) //解析到video标签上
hlsjs.value.on(hlsJs.Events.MANIFEST_PARSED, () =>
videoElementRef.value.play()
console.log('加载成功')
)
hlsjs.value.on(hlsJs.Events.ERROR, (event, data) =>
// 监听出错事件
console.log('加载失败')
)
else
return
const closeVideo = () =>
if (hlsjs.value && videoElementRef.value)
// 销毁 注意 组件销毁时 一定要将流销毁掉
videoElementRef.value.pause()
hlsjs.value.destroy()
hlsjs.value = null
onBeforeUnmount(() =>
closeVideo()
)
onMounted(()=>
hlsshow()
)
这样我们的视频就可以正常拉流播放了
以上是关于视频融合 hls流如何对接的主要内容,如果未能解决你的问题,请参考以下文章
LiveGBS国标视频平台如何获取接入视频通道的直播流地址HLS/HTTP-FLV/WS-FLV/WebRTC/RTMP/RTSP