Blame view

src/components/flvCom/flvCom.js 2.05 KB
f248ca05   Zhang Zhuo   初始化版本 -张卓
1
2
3
4
5
6
7
  import React, { Component } from "react"
  import flvjs from "flv.js";
  import "./flvCom.css"
  export default class FlvCom extends Component {
      constructor(props){
          super(props);
          this.state = {
f248ca05   Zhang Zhuo   初始化版本 -张卓
8
9
10
              id:new Date().getTime()+Math.floor(Math.random() * (10000 - 1)) + 1,
          }
      }
a031df93   Zhang Zhuo   更新视频稳定版本 -张卓
11
12
13
14
      shouldComponentUpdate(nextProps){
          if(nextProps.videoUrl!==this.props.videoUrl){
              if(this.flvPlayer){
                  this.destroyFlv()
f248ca05   Zhang Zhuo   初始化版本 -张卓
15
              }
a031df93   Zhang Zhuo   更新视频稳定版本 -张卓
16
17
              this.startFlv(nextProps.videoUrl)
              return true
f248ca05   Zhang Zhuo   初始化版本 -张卓
18
          }
a031df93   Zhang Zhuo   更新视频稳定版本 -张卓
19
          return false
f248ca05   Zhang Zhuo   初始化版本 -张卓
20
21
      }
      componentDidMount(){
a031df93   Zhang Zhuo   更新视频稳定版本 -张卓
22
23
          if(this.props.videoUrl){
              this.startFlv(this.props.videoUrl)
f248ca05   Zhang Zhuo   初始化版本 -张卓
24
25
          }
      }
a031df93   Zhang Zhuo   更新视频稳定版本 -张卓
26
27
      startFlv(videoUrl){
          let {id} = this.state
f248ca05   Zhang Zhuo   初始化版本 -张卓
28
29
30
31
32
33
34
35
36
          if (flvjs.isSupported()) {
              const videoElement = document.getElementById(id);
              if(this.flvPlayer) this.destroyFlv()
              this.flvPlayer = flvjs.createPlayer(
                {
                  type: "flv",
                  isLive: true,
                  hasAudio: false,
                  //必须与node搭建的流媒体服务器中的http的端口和推流的参数吻合
a031df93   Zhang Zhuo   更新视频稳定版本 -张卓
37
                  url: videoUrl,
f248ca05   Zhang Zhuo   初始化版本 -张卓
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
                },
                {
                  enableStashBuffer: true,
                  stashInitialSize: 128,
                }
              );
              this.flvPlayer.attachMediaElement(videoElement);
              this.flvPlayer.load();
              this.flvPlayer.play();
            } else {
                alert("请更换浏览器,该浏览器暂不支持。")
            }
      }
      destroyFlv(){
          this.flvPlayer.pause();
          this.flvPlayer.unload();
          this.flvPlayer.detachMediaElement();
          this.flvPlayer.destroy();
          this.flvPlayer = null;
      }
      render() {
          return (
              <div className="flvWai">
                  <video
                      id={this.state.id}
                      className="videoFlv"
                      autoPlay
                      controls
                      muted
                  ></video>
              </div>
          )
      }
  }