nicecode-v2/packages/meta/es/VideoPlayer/components/FlvPlayer/index.js

152 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var _excluded = ["className", "autoPlay", "config", "onCreat", "playId"];
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import React, { Component } from 'react';
import flvjs from 'flv.js';
import { isEqual } from '@zhst/func';
export var FLV_EVENT = flvjs.Events;
var VideoPlayer = /*#__PURE__*/function (_Component) {
_inherits(VideoPlayer, _Component);
var _super = _createSuper(VideoPlayer);
function VideoPlayer() {
var _this;
_classCallCheck(this, VideoPlayer);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_defineProperty(_assertThisInitialized(_this), "state", {
curPlayUrl: '',
shouldReinit: false
});
_defineProperty(_assertThisInitialized(_this), "flvPlayer", null);
_defineProperty(_assertThisInitialized(_this), "videoElement", null);
_defineProperty(_assertThisInitialized(_this), "initFlv", function ($video) {
_this.videoElement = $video;
var _this$props = _this.props,
className = _this$props.className,
_this$props$autoPlay = _this$props.autoPlay,
autoPlay = _this$props$autoPlay === void 0 ? true : _this$props$autoPlay,
_this$props$config = _this$props.config,
config = _this$props$config === void 0 ? {} : _this$props$config,
onCreat = _this$props.onCreat,
playId = _this$props.playId,
others = _objectWithoutProperties(_this$props, _excluded);
if ($video) {
if (flvjs.isSupported() && _this.props.url && _this.props.url) {
var reload = function reload() {
if (_this.flvPlayer && _this.flvPlayer.destroy) {
try {
_this.flvPlayer.destroy();
} catch (error) {
console.error(error);
}
}
var flvPlayer = flvjs.createPlayer(_objectSpread({}, others), _objectSpread({
deferLoadAfterSourceOpen: false
}, config));
flvPlayer.attachMediaElement($video);
flvPlayer.load();
_this.flvPlayer = flvPlayer;
// @ts-ignore
var controller = _this.flvPlayer._transmuxer._controller;
var wsLoader = controller._ioctl._loader;
var oldWsOnCompleteFunc = wsLoader._onComplete;
wsLoader._onComplete = function () {
if (!controller._remuxer) {
controller._remuxer = {
destroy: function destroy() {
console.log('组件销毁');
},
flushStashedSamples: function flushStashedSamples() {
console.log("flushStashedSamples");
}
};
}
oldWsOnCompleteFunc();
};
_this.flvPlayer.reload = reload;
onCreat && onCreat(_this.flvPlayer, $video);
};
reload();
onCreat && onCreat(_this.flvPlayer, $video);
}
}
});
return _this;
}
_createClass(VideoPlayer, [{
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.flvPlayer) {
var _this$flvPlayer, _this$flvPlayer2;
(_this$flvPlayer = this.flvPlayer) === null || _this$flvPlayer === void 0 || _this$flvPlayer.unload();
(_this$flvPlayer2 = this.flvPlayer) === null || _this$flvPlayer2 === void 0 || _this$flvPlayer2.detachMediaElement();
}
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
if (this.state.shouldReinit) {
this.setState({
shouldReinit: false
});
this.initFlv(this.videoElement);
}
}
}, {
key: "render",
value: function render() {
var _this$props2 = this.props,
className = _this$props2.className,
style = _this$props2.style;
return /*#__PURE__*/React.createElement("video", {
muted: true,
preload: "metadata",
className: className
// controls={true}
,
style: Object.assign({
width: '100%',
height: '100%'
}, style ? style : {}),
ref: this.initFlv
});
}
}]);
return VideoPlayer;
}(Component);
_defineProperty(VideoPlayer, "getDerivedStateFromProps", function (nextProps, prevState) {
var _nextProps$playId = nextProps.playId,
playId = _nextProps$playId === void 0 ? 0 : _nextProps$playId;
var _prevState$playId = prevState.playId,
prePlayId = _prevState$playId === void 0 ? 0 : _prevState$playId;
if (nextProps.url !== undefined) {
if (!isEqual(nextProps.url, prevState.curPlayUrl) || !isEqual(playId, prePlayId)) {
return {
playId: playId,
curPlayUrl: nextProps.url,
shouldReinit: true
};
}
}
// 否则对于state不进行任何操作
return null;
});
export { VideoPlayer as default };