1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- * 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 FlvPlayer from './player/flv-player.js';
- import NativePlayer from './player/native-player.js';
- import PlayerEvents from './player/player-events.js';
- 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 'flv':
- return new FlvPlayer(mds, optionalConfig);
- default:
- return new NativePlayer(mds, optionalConfig);
- }
- }
- // feature detection
- function isSupported() {
- return Features.supportMSEH264Playback();
- }
- function getFeatureList() {
- return Features.getFeatureList();
- }
- // interfaces
- let flvjs = {};
- flvjs.createPlayer = createPlayer;
- flvjs.isSupported = isSupported;
- flvjs.getFeatureList = getFeatureList;
- flvjs.BaseLoader = BaseLoader;
- flvjs.LoaderStatus = LoaderStatus;
- flvjs.LoaderErrors = LoaderErrors;
- flvjs.Events = PlayerEvents;
- flvjs.ErrorTypes = ErrorTypes;
- flvjs.ErrorDetails = ErrorDetails;
- flvjs.FlvPlayer = FlvPlayer;
- flvjs.NativePlayer = NativePlayer;
- flvjs.LoggingControl = LoggingControl;
- Object.defineProperty(flvjs, 'version', {
- enumerable: true,
- get: function () {
- // replace by webpack.DefinePlugin
- return __VERSION__;
- }
- });
- export default flvjs;
|