: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
create: function create(mediaElement, options, mediaFiles) {
var originalNode = mediaElement.originalNode,
id = mediaElement.id + '_' + options.prefix;
node = originalNode.cloneNode(true);
options = Object.assign(options, mediaElement.options);
var props = _mejs2.default.html5media.properties,
events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
attachNativeEvents = function attachNativeEvents(e) {
var event = (0, _general.createEvent)(e.type, mediaElement);
mediaElement.dispatchEvent(event);
assignGettersSetters = function assignGettersSetters(propName) {
var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
node['get' + capName] = function () {
return flvPlayer !== null ? node[propName] : null;
node['set' + capName] = function (value) {
if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
if (propName === 'src') {
node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
if (flvPlayer !== null) {
_flvOptions.type = 'flv';
_flvOptions.cors = options.flv.cors;
_flvOptions.debug = options.flv.debug;
_flvOptions.path = options.flv.path;
var _flvConfigs = options.flv.configs;
for (var i = 0, total = events.length; i < total; i++) {
node.removeEventListener(events[i], attachNativeEvents);
flvPlayer = NativeFlv._createPlayer({
flvPlayer.attachMediaElement(node);
for (var i = 0, total = props.length; i < total; i++) {
assignGettersSetters(props[i]);
_window2.default['__ready__' + id] = function (_flvPlayer) {
mediaElement.flvPlayer = flvPlayer = _flvPlayer;
var flvEvents = flvjs.Events,
assignEvents = function assignEvents(eventName) {
if (eventName === 'loadedmetadata') {
flvPlayer.detachMediaElement();
flvPlayer.attachMediaElement(node);
node.addEventListener(eventName, attachNativeEvents);
for (var _i = 0, _total = events.length; _i < _total; _i++) {
assignEvents(events[_i]);
var assignFlvEvents = function assignFlvEvents(name, data) {
var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
mediaElement.generateError(message, node.src);
var _event = (0, _general.createEvent)(name, mediaElement);
mediaElement.dispatchEvent(_event);
var _loop = function _loop(eventType) {
if (flvEvents.hasOwnProperty(eventType)) {
flvPlayer.on(flvEvents[eventType], function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
return assignFlvEvents(flvEvents[eventType], args);
for (var eventType in flvEvents) {
if (mediaFiles && mediaFiles.length > 0) {
for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
node.setAttribute('src', mediaFiles[_i2].src);
node.setAttribute('id', id);
originalNode.parentNode.insertBefore(node, originalNode);
originalNode.autoplay = false;
originalNode.style.display = 'none';
flvOptions.url = node.src;
flvOptions.cors = options.flv.cors;
flvOptions.debug = options.flv.debug;
flvOptions.path = options.flv.path;
var flvConfigs = options.flv.configs;
node.setSize = function (width, height) {
node.style.width = width + 'px';
node.style.height = height + 'px';
node.hide = function () {
if (flvPlayer !== null) {
node.style.display = 'none';
node.show = function () {
node.destroy = function () {
if (flvPlayer !== null) {
var event = (0, _general.createEvent)('rendererready', node);
mediaElement.dispatchEvent(event);
mediaElement.promises.push(NativeFlv.load({
_media.typeChecks.push(function (url) {
return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
_renderer.renderer.add(FlvNativeRenderer);
},{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_,module,exports){
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _window = _dereq_(3);
var _window2 = _interopRequireDefault(_window);
var _mejs2 = _interopRequireDefault(_mejs);
var _renderer = _dereq_(8);
var _general = _dereq_(18);
var _constants = _dereq_(16);
var _media = _dereq_(19);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
load: function load(settings) {
if (typeof Hls !== 'undefined') {
NativeHls.promise = new Promise(function (resolve) {
NativeHls._createPlayer(settings);
settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
NativeHls.promise.then(function () {
NativeHls._createPlayer(settings);
return NativeHls.promise;
_createPlayer: function _createPlayer(settings) {
var player = new Hls(settings.options);
_window2.default['__ready__' + settings.id](player);
var HlsNativeRenderer = {
path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
canPlayType: function canPlayType(type) {
return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
create: function create(mediaElement, options, mediaFiles) {
var originalNode = mediaElement.originalNode,
id = mediaElement.id + '_' + options.prefix,
preload = originalNode.getAttribute('preload'),
autoplay = originalNode.autoplay;
total = mediaFiles.length;
node = originalNode.cloneNode(true);
options = Object.assign(options, mediaElement.options);
options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
var props = _mejs2.default.html5media.properties,
events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
attachNativeEvents = function attachNativeEvents(e) {
var event = (0, _general.createEvent)(e.type, mediaElement);
mediaElement.dispatchEvent(event);
assignGettersSetters = function assignGettersSetters(propName) {
var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
node['get' + capName] = function () {
return hlsPlayer !== null ? node[propName] : null;
node['set' + capName] = function (value) {
if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
if (propName === 'src') {
node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
if (hlsPlayer !== null) {
for (var i = 0, _total = events.length; i < _total; i++) {
node.removeEventListener(events[i], attachNativeEvents);
hlsPlayer = NativeHls._createPlayer({
hlsPlayer.loadSource(value);
hlsPlayer.attachMedia(node);
for (var i = 0, _total2 = props.length; i < _total2; i++) {
assignGettersSetters(props[i]);
_window2.default['__ready__' + id] = function (_hlsPlayer) {
mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
var hlsEvents = Hls.Events,
assignEvents = function assignEvents(eventName) {
if (eventName === 'loadedmetadata') {
var url = mediaElement.originalNode.src;
hlsPlayer.loadSource(url);
hlsPlayer.attachMedia(node);
node.addEventListener(eventName, attachNativeEvents);
for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
assignEvents(events[_i]);
var recoverDecodingErrorDate = void 0,
recoverSwapAudioCodecDate = void 0;
var assignHlsEvents = function assignHlsEvents(name, data) {
if (name === 'hlsError') {
var now = new Date().getTime();
if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
recoverDecodingErrorDate = new Date().getTime();
hlsPlayer.recoverMediaError();
} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
recoverSwapAudioCodecDate = new Date().getTime();
console.warn('Attempting to swap Audio Codec and recover from media error');
hlsPlayer.swapAudioCodec();
hlsPlayer.recoverMediaError();
var message = 'Cannot recover, last media error recovery failed';
mediaElement.generateError(message, node.src);
if (data.details === 'manifestLoadError') {
if (index < total && mediaFiles[index + 1] !== undefined) {
node.setSrc(mediaFiles[index++].src);
var _message = 'Network error';
mediaElement.generateError(_message, mediaFiles);
var _message2 = 'Network error';
mediaElement.generateError(_message2, mediaFiles);
console.error(_message2);
var event = (0, _general.createEvent)(name, mediaElement);
mediaElement.dispatchEvent(event);
var _loop = function _loop(eventType) {
if (hlsEvents.hasOwnProperty(eventType)) {
hlsPlayer.on(hlsEvents[eventType], function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
return assignHlsEvents(hlsEvents[eventType], args);
for (var eventType in hlsEvents) {
for (; index < total; index++) {
if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
node.setAttribute('src', mediaFiles[index].src);
if (preload !== 'auto' && !autoplay) {
node.addEventListener('play', function () {
if (hlsPlayer !== null) {
node.addEventListener('pause', function () {
if (hlsPlayer !== null) {
node.setAttribute('id', id);
originalNode.parentNode.insertBefore(node, originalNode);
originalNode.autoplay = false;
originalNode.style.display = 'none';
node.setSize = function (width, height) {
node.style.width = width + 'px';
node.style.height = height + 'px';
node.hide = function () {
node.style.display = 'none';
node.show = function () {
node.destroy = function () {
if (hlsPlayer !== null) {
var event = (0, _general.createEvent)('rendererready', node);
mediaElement.dispatchEvent(event);
mediaElement.promises.push(NativeHls.load({
_media.typeChecks.push(function (url) {
return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
_renderer.renderer.add(HlsNativeRenderer);
},{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_,module,exports){
var _window = _dereq_(3);
var _window2 = _interopRequireDefault(_window);
var _document = _dereq_(2);
var _document2 = _interopRequireDefault(_document);
var _mejs2 = _interopRequireDefault(_mejs);
var _renderer = _dereq_(8);
var _general = _dereq_(18);
var _constants = _dereq_(16);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
canPlayType: function canPlayType(type) {
var mediaElement = _document2.default.createElement('video');