使用video.js完成hls/m3u8格式的视频播放

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

近期项目中,需要播放视频,最开始给了个测试接口是hls格式的,查了一下,使用了video.js插件来进行播放。后期又改成了flv视频,这里简单记录一下。

1. 下载video.js插件,以及contrib-hls播放插件,页面引入,这两个插件,以及样式

    这里好像涉及到版本问题,高版本的video.js不用下载另一个插件,但是好像会有其他冲突。

import Videojs from "video.js"
import 'video.js/dist/video-js.css';
import 'videojs-contrib-hls.js'

2. 页面相关配置

 return(
  <video ref={videoRef} width="100%" height="80%" id='video' className="video-js"></video> 
 )

3. 方法

const videoRef = React.useRef(null);
//1.必须要声明一个播放器的容器  playerRef 就相当于播放器的容器
const playerRef = React.useRef<any>(null);

// -- 点击时去调接口,播放视频 --方法
const getInfo = async () => {

  // 当前有视频时,先关闭视频,再重新创建、获取
  if (playerRef.current) {
    playerRef.current.dispose();
    playerRef.current = null;
  }

  // playerRef没有值时,去进行下一步
  if (!playerRef.current) {
    console.log('进入重新创建')

    // videoRef,video实例 -- current: video#video.video-js
    const videoElement = videoRef.current;
    // if (!videoElement) return;

    // 这些options属性也可直接设置在video标签上
    const options = {
      autoplay: true, // 设置自动播放
      controls: true, // 显示播放的控件,控制条
      preload: 'auto', // 自动加载
      muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,禁止音视频的自动播放)
      language: 'zh-CN',
      fluid: true, //类型: boolean 何时true,Video.js播放器将具有流畅的大小。换句话说,它将扩展以适应其容器
      responsive: true, // 响应性:为true时,播放视频进度条会自动移动
      // sources: [
      //   // 注意,如果是以option方式设置的src,是不能实现 换台的 (即使监听了hlsUrl也没实现)
      //   {
      //     src: 'http://39.173.75.10:10019/hls2/D17AC57A16F173E5BA55C0B106D10CC9.m3u8',
      //     type: 'application/x-mpegURL' // 告诉videojs,这是一个hls流
      //   },
      // {
      //     src: `${Video_Api}/test/jishi.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20230323%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230323T034640Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=4a17446110e1201c1c56bd9c4133ac98255f9ac4d54f708f6e24c42091a2e6a6`,
      //      type: 'video/mp4'
      //         }
      // ]
    }
   // handlePlayerReady所在的函数,就是播放器初始化完成时会执行的回调函数
    const handlePlayerReady = (player) => {
      playerRef.current = player;
      // you can handle player events here
      player.on('waiting', () => {
        console.log('player is waiting');
      });
      player.on('dispose', () => {
        console.log('player will dispose');
      });
    };
 
    const player = playerRef.current = Videojs(videoElement, options, () => {
      console.log("player is ready");
    // src地址设为了变量
      player.src({ src: address, type: "application/x-mpegURL" })
      player.play();
      handlePlayerReady(player);
    });
  }
}
  

4. 每次页面退出时,关闭播放器文章来源地址https://www.toymoban.com/news/detail-625341.html

 React.useEffect(() => {
    const player = playerRef.current;
    return () => {
       console.log("player会为null,可能跟监听不到playerRef变化有关,旨在初始化的时候赋值player",player)
       console.log("playerRef",playerRef)
    
    };
  }, [playerRef]);

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

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

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

相关文章

  • video插件播放m3u8格式视频(存原生)

    这里使用原生的javascript实现m3u8格式视频播放。 使用了包括video.min.js库和HLS插件。 在上面代码中,首先引入了video.min.js库和对应的播放器样式video-js.css,还引入了videojs-contrib-hls.min.js库(引入顺序考虑优先放到页面加载之前)。 之后,创建一个video标签,并指定source的src属性为

    2024年02月13日
    浏览(38)
  • uniapp 使用 mui-player 插件播放 m3u8/flv 视频流

    背景 :uniapp 开发的h5项目,需要播放m3u8/flv后缀的视频,网上有很多视频插件,但是样式和效果不尽如人意,博主最后选择mui-player插件,定制化稍微强一点以及有官方文档可以阅读,官网文档https://muiplayer.js.org/zh/guide/ tips :建议先阅读官方文档,再在页面进行引入 博主最后

    2023年04月19日
    浏览(36)
  • .m3u8、HLS 协议

    常见的视频传输协议: HTTP 浏览器一次性把视频请求下来,一般来说用户可以点击鼠标右键或者通过抓包的方式直接把视频下载到本地 HLS (HTTP Live Streaming)Apple 开发的一种视频传输格式,其核心思想是将视频分为多个 .ts 文件,用户播放视频的时候只请求一部分 .ts 文件,无

    2024年02月16日
    浏览(21)
  • FFmpeg解决视频播放加载卡顿问题(FFmpeg+M3U8分片)

    在这静谧的时光里,我们能够更清晰地审视自己,思考未来的方向。每一步的坚实,都是对勇气的拥抱,每一个夜晚的努力,都是对未来的信仰。不要害怕独行,因为正是在寂静中,我们更能听见内心深处的声音,更能感受到梦想的脉动。 为什么会讨论这个问题呢,原因是我

    2024年01月18日
    浏览(29)
  • 使用ffmpeg将视频转成HLS(m3u8)格式

      HLS (HTTP Live Streaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。 因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传

    2024年02月13日
    浏览(35)
  • 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)
  • hls.js如何播放m3u8文件(实例)?

     HLS(HTTP Live Streaming)是一种视频流传输协议,是苹果推出的适用于iOS与macOS平台的流媒体传输协议。它将视频分割成若干个小段,每个小段大小一般为2~10秒不等,并通过HTTP协议进行传输。通过在每个小段之间插入若干秒的间隔,可以提高视频的传输稳定性和用户的观看体验

    2023年04月23日
    浏览(28)
  • vue2 使用 vue-video-player 播放m3u8 流地址视频

    安装插件  : 注意需要引入  videojs-contrib-hls ,否则无法播放hls流文件  main.js 引入 代码内引入: 注意点:    1.type: \\\'application/x-mpegURL\\\' ,否则无法播放流文件  2.aspectRatio: \\\'16:9\\\',  宽高比需要进行设置, 若没有进行设置,会出现黑边过高或者过宽的问题 常用API方法:

    2024年02月07日
    浏览(33)
  • vue项目中使用m3u8格式播放大视频

    网站中播放大视频时经常卡顿,无法顺利播放,在查找解决方案时发现很多文章建议使用m3u8流媒体播放代替MP4播放,做了下测试,现总结记录下测试过程中遇到的问题与解决办法。 1.使用ffmpeg做视频转换 1)下载ffmpeg  FFmpeg github 2)在环境变量path中加入配置,以便在控制台使

    2024年02月09日
    浏览(41)
  • UE5接入在线直播视频源,如hls(m3u8)格式

    通过重编译VlcMedia插件,以支持在线直播视频在UE5中的播放,GIF动图如下: 本文主要包括插件的重编译、在线直播视频的接入,以及材质的创建三个部分。 2.1 VlcMedia插件重编译 GitHub上有 Ue4VlcMedia 插件,但最新的版本只支持到UE4.19,因此需要重编译源码以支持UE5。VlcMedia插件

    2024年02月12日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包