react18 + ts 使用video.js 直播.m3u8格式的视频流

一、安装依赖

我使用的video.js版本是8.17.3,从 Video.js 7.x 开始,HLS 支持被内置到了 Video.js 中所以不需要安装其他依赖

复制代码
npm i video.js 

二、创建VideoPlayer组件

复制代码
import React, { useEffect, useRef } from 'react'
import videojs from 'video.js'
import 'video.js/dist/video-js.css' // 引入 Video.js 样式
import Player from 'video.js/dist/types/player'

interface Props {
  src: string // HLS 流的 URL
}

const VideoPlayer: React.FC<Props> = ({ src }) => {
  const playerRef = useRef<Player>()
  useEffect(() => {
    // 初始化 Video.js 播放器
    playerRef.current = videojs('my-player', {
      controls: true,
      preload: 'auto',
      sources: [
        {
          src: src,
          type: 'application/x-mpegURL', // HLS MIME 类型
        },
      ],
    })

    // 清理函数
    return () => {
      if (playerRef.current) {
        playerRef.current.dispose()
      }
    }
  }, [src])

  return (
    <div>
      <video id="my-player" className="video-js vjs-default-skin"></video>
    </div>
  )
}

export default VideoPlayer

三、使用VideoPlayer组件

复制代码
// App.tsx
import React from 'react';
import VideoPlayer from './VideoPlayer';

function App() {
  return (
    <div className="App">
      <VideoPlayer />
    </div>
  );
}

export default App;
相关推荐
zhiyouTech6 分钟前
从“被看见“到“被信任“:关于信源评级机制的一点观察
大数据·前端·人工智能
Hashan7 分钟前
Vibe Coding 下前后端怎么对接接口?后端不给力的兜底方案
前端·后端·vibecoding
你挚爱的强哥1 小时前
【sgKeyboard】自定义组件:虚拟键盘
前端·javascript·计算机外设
锅里游的鱼吖1 小时前
echarts自定义折线图
前端·javascript·数据库
hunteritself1 小时前
卷卷卷!GPT-6 Sol、Luna 正式发布,OpenAI 开始卷价格了
大数据·前端·人工智能·深度学习·transformer
何何____2 小时前
Vue 全局事件总线详解
前端·javascript·vue.js
涉密IT资质笔记2 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
u0111026753 小时前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画
事圆则缓3 小时前
Flutter 状态管理框架对比(五):GetX 的响应式、依赖注册与生命周期
前端·javascript·flutter
广州智造3 小时前
Radioss复合材料使用的单元属性
前端·设计·cad·建模·cae·radioss