UNPKG

mpegts.js

Version:

HTML5 MPEG2-TS Stream Player

96 lines (77 loc) 2.7 kB
/* * Copyright (C) 2016 Bilibili. All Rights Reserved. * * @author zheng qian <xqq@xqq.im> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import Polyfill from './utils/polyfill.js'; import Features from './core/features.js'; import {BaseLoader, LoaderStatus, LoaderErrors} from './io/loader.js'; import MSEPlayer from './player/mse-player'; import NativePlayer from './player/native-player.js'; import PlayerEvents from './player/player-events'; import {ErrorTypes, ErrorDetails} from './player/player-errors.js'; import LoggingControl from './utils/logging-control.js'; import {InvalidArgumentException} from './utils/exception.js'; // here are all the interfaces // install polyfills Polyfill.install(); // factory method function createPlayer(mediaDataSource, optionalConfig) { let mds = mediaDataSource; if (mds == null || typeof mds !== 'object') { throw new InvalidArgumentException('MediaDataSource must be an javascript object!'); } if (!mds.hasOwnProperty('type')) { throw new InvalidArgumentException('MediaDataSource must has type field to indicate video file type!'); } switch (mds.type) { case 'mse': case 'mpegts': case 'm2ts': case 'flv': return new MSEPlayer(mds, optionalConfig); default: return new NativePlayer(mds, optionalConfig); } } // feature detection function isSupported() { return Features.supportMSEH264Playback(); } function getFeatureList() { return Features.getFeatureList(); } // interfaces let mpegts = {}; mpegts.createPlayer = createPlayer; mpegts.isSupported = isSupported; mpegts.getFeatureList = getFeatureList; mpegts.BaseLoader = BaseLoader; mpegts.LoaderStatus = LoaderStatus; mpegts.LoaderErrors = LoaderErrors; mpegts.Events = PlayerEvents; mpegts.ErrorTypes = ErrorTypes; mpegts.ErrorDetails = ErrorDetails; mpegts.MSEPlayer = MSEPlayer; mpegts.NativePlayer = NativePlayer; mpegts.LoggingControl = LoggingControl; Object.defineProperty(mpegts, 'version', { enumerable: true, get: function () { // replaced by webpack.DefinePlugin return __VERSION__; } }); export default mpegts;