首页 > 其他分享 >直播流播放组件

直播流播放组件

时间:2023-03-31 13:33:39浏览次数:45  
标签:webkit media controls player 直播 video 组件 播放 display

01 使用

 <Player id="mycamera" url="xxx.flv"/>

02 封装

  1. 第三方库:flv.js
  2. 播放组件
import React, { useRef, useEffect } from 'react';

// 传入id和链接
const Player = ({ id, url }) => {
   let { current: player } = useRef(null); // 实例
   
   // 创建播放器
   const handleCreatePlayer = () => {
      // 创建DOM
      let videoElement = document.getElementById(id);
      if (_.isNull(videoElement)) {
         return;
      }
      
     // 设置音量
      videoElement.volume = 10; 

     // 创建实例
      player = flvjs.createPlayer({
         type: 'flv',
         url: url    // flv的链接
      });
      player.attachMediaElement(videoElement);
      player.load();

     // 播放
      let playPromise = player.play();
      if (playPromise !== undefined) {
         playPromise
            .then(() => {
               player.play();
            })
            .catch(() => {});
      }
   };

   //  摧毁播放器
   const handleDestroyPlayer = () => {
      if (player) {
         player.pause();
         player.unload();
         player.detachMediaElement();
         player.destroy();
         player = null;
      }
   };


   // 如果url变换 把之前的播放器摧毁,再创建新的
   useEffect(() => {
      handleDestroyPlayer();
      handleCreatePlayer();
   }, [url]);


   // 组件销毁时摧毁播放器
   useEffect(() => {
      return () => {
         handleDestroyPlayer();
      };
   }, []);

   return (
       {/* 隐藏video默认控件 */}
       <div>
            <video id={id} muted autoplay controls="controls" controlslist="nodownload noplaybackrate" disablePictureInPicture/>
       </div>
   );
};
export default Player;
  1. CSS隐藏video默认控件
  //全屏按钮
   video::-webkit-media-controls-fullscreen-button {
      display: none;
   }
   //播放按钮
   video::-webkit-media-controls-play-button {
      display: none;
   }
   //进度条
   video::-webkit-media-controls-timeline {
      display: none;
   }
   //观看的当前时间
   video::-webkit-media-controls-current-time-display {
      display: none;
   }
   //剩余时间
   video::-webkit-media-controls-time-remaining-display {
      display: none;
   }

   //音量按钮
   video::-webkit-media-controls-mute-button {
      display: none;
   }

标签:webkit,media,controls,player,直播,video,组件,播放,display
From: https://www.cnblogs.com/sanhuamao/p/17275999.html

相关文章

  • RestSharp组件Get请求带body的时候返回数据丢失问题
    postman的复制代码默认就是RestSharp。方便也好用,但是使用get请求并且带Body的时候要注意,返回的数据竟然会有丢失解决办法:stringRequestByGet(stringindex,stringaction,objectparamter){varapi=$"{ElasticsearchUrl}/{index}/{action}";HttpWebRequestre......
  • 组件传值的几种方式
    转载链接:https://mp.weixin.qq.com/s?__biz=MjM5MDA2MTI1MA==&mid=2649100705&idx=1&sn=e0891e222bac865bd8abe8158948bd90&chksm=be58360c892fbf1af9ca0db974ae4e85e6a58aaa6b4b413941f5ccccf2c223b47b50e075a8ba&scene=27......
  • DTALK直播预约 | 数据资产管理:金融机构数据价值释放的必经之路
    当前,数据对金融机构业务和发展的重要性日益凸显,释放数据生产力已经成为金融机构进行全面数字化转型的核心,这就要求金融机构以数据资产为纲不断提升自身数据资产管理能力。本期DTALK我们邀请到雅拓信息解决方案专家尹晓中,为大家带来《数据资产管理——金融机构数据价值释放的必经......
  • 界面组件Telerik ASP.NET MVC使用指南 - 如何自定义网格过滤(一)
    TelerikUIforASP.NETMVC拥有使用JavaScript和HTML5构建网站和移动应用所需的70+UI部件,来满足开发者的各种需求,提供无语伦比的开发性能和用户体验。它主要是针对专业级的ASP.NET开发,通过该产品的强大功能,开发者可以开发出功能丰富、适应标准广泛的响应式应用程序。对于任何......
  • 界面组件DevExpress WPF v22.2 - 工具栏、日程组件全新升级
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 直播回顾 | 点击率提升400%,Ta是怎么做到的?
    Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解。一起来回顾本期精彩内容吧!【精彩对话】Q1:天眼查为什么选择华为Push用户增长服务实现拉新、促活和转......
  • 第十九篇 vue - 深入组件 - 透传 Attributes - $attrs
    Attributes继承“透传attribute”指的是传递给一个组件,却没有被该组件声明为props或emits的attribute或者v-on事件监听器。最常见的例子就是class、style和id当一个组件以单个元素为根作渲染时,透传的attribute会自动被添加到根元素上。举例来说,假如我们有一个<......
  • 第二十篇 vue - 深入组件 - 插槽 - Slots
    插槽内容与出口我们已经了解到组件能够接收任意类型的JavaScript值作为props,但组件要如何接收模板内容呢?在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段可以像这样使用<FancyButton>Clickme!<!--插槽内容--></FancyButton>......
  • pcm音频的录制、播放及转换
    操作系统:Windows10_x64pcm格式为原始音频数据,有时候会遇到需要录制、播放及转换的情况,这里记录下。一、录制pcm音频这里演示下使用Audacity进行pcm音频录音的过程。Audacity的使用可参考这篇文章:Audacity开源音频处理软件使用入门1)打开Audacity软件;采样率使用16000HZ,使......
  • 视频融合平台EasyCVR设备录像因时间导致播放异常问题的排查与解决
    EasyCVR视频融合平台可提供丰富的视频能力,支持视频直播、录像、回放、检索、云存储、告警上报、语音对讲、集群、电子地图、智能分析以及平台级联等。平台可支持多协议、多类型设备接入,包括国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK、海康Ehome等,近期我们又拓展了更多SDK......