美文网首页
react 使用video.js

react 使用video.js

作者: 精神病患者link常 | 来源:发表于2021-11-29 18:21 被阅读0次

yarn add @types/video.js

import videojs from "video.js";
import "video.js/dist/video-js.css";
export const VideoJS = ( props:any ) => {

  const videoRef = React.useRef(null);
  const playerRef = React.useRef<any>(null);
  const { options, onReady } = props;

  React.useEffect(() => {

    // make sure Video.js player is only initialized once
    if (!playerRef.current) {
      const videoElement = videoRef.current;
      if (!videoElement) return;

      const player = playerRef.current = videojs(videoElement, options, () => {
        console.log("player is ready");
        onReady && onReady(player);
      });
    } else {
      // you can update player here [update player through props]
      const player = playerRef.current;
      console.log('playerplayerplayer===',player);
      player.src(options.sources[0].src);      
      player.autoplay(true);

    }
  }, [options, videoRef]);



  return (
    <div data-vjs-player>
      <video style={{
        width:500,
        height:600
      }} ref={videoRef} className="video-js vjs-big-play-centered" />
    </div>
  );
}

使用

            <CenterView>
              {
                videoInfo.url && <VideoJS options={{
                  controls: true,
                     playbackRates: [0.7, 1.0, 1.5, 2.0], // 播放速度
                     autoplay: true, // 如果true,浏览器准备好时开始回放。
                     muted: false, // 默认情况下将会消除任何音频。
                     loop: true, // 导致视频一结束就重新开始。
                     preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
                     language: 'zh-CN',
                     aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
                     fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
                     sources: [
                       {
                         src: videoInfo.url,
                         type: 'video/mp4'
                       }
                     ],
                     poster: videoInfo.img, // 你的封面地址
                     width: document.documentElement.clientWidth,
                     notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
                     controlBar: {
                       timeDivider: true,
                       durationDisplay: true,
                       remainingTimeDisplay: true,
                       fullscreenToggle: true // 全屏按钮
                     }
                  
                  
                }} onReady={(play:any)=>{
                  console.log('play====',play);
                  videoRef.current = play
                  play.play()
                }}/>
              }
          </CenterView>

相关文章

网友评论

      本文标题:react 使用video.js

      本文链接:https://www.haomeiwen.com/subject/cbplxrtx.html