123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /**
- * WFS interface, Jeff Yang 2016.10
- */
- 'use strict';
- import Event from './events';
- import FlowController from './controller/flow-controller';
- import BufferController from './controller/buffer-controller';
- import EventEmitter from 'events';
- import XhrLoader from './utils/xhr-loader';
- import FileLoader from './loader/file-loader';
- import WebsocketLoader from './loader/websocket-loader';
- class Wfs {
- static get version() {
- // replaced with browserify-versionify transform
- return '__VERSION__'+'v.0.0.0.1';
- }
- static isSupported() {
- return (window.MediaSource &&
- typeof window.MediaSource.isTypeSupported === 'function' &&
- window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42c01f,mp4a.40.2"'));
- }
-
- static get Events() {
- return Event;
- }
-
- static get DefaultConfig() {
- if(!Wfs.defaultConfig) {
- Wfs.defaultConfig = {
- autoStartLoad: true,
- startPosition: -1,
- debug: false,
- fLoader: undefined,
- loader: XhrLoader,
- //loader: FetchLoader,
- fmp4FileUrl: 'xxxx.mp4',
- fragLoadingTimeOut: 20000,
- fragLoadingMaxRetry: 6,
- fragLoadingRetryDelay: 1000,
- fragLoadingMaxRetryTimeout: 64000,
- fragLoadingLoopThreshold: 3,
- forceKeyFrameOnDiscontinuity: true,
- appendErrorMaxRetry: 3
- };
- }
- return Wfs.defaultConfig;
- }
- static set DefaultConfig(defaultConfig) {
- Wfs.defaultConfig = defaultConfig;
- }
- constructor(config = {}) {
- var defaultConfig = Wfs.DefaultConfig;
- for (var prop in defaultConfig) {
- if (prop in config) { continue; }
- config[prop] = defaultConfig[prop];
- }
- this.config = config;
- // observer setup
- var observer = this.observer = new EventEmitter();
- observer.trigger = function trigger (event, ...data) {
- observer.emit(event, event, ...data);
- };
- observer.off = function off (event, ...data) {
- observer.removeListener(event, ...data);
- };
- this.on = observer.on.bind(observer);
- this.off = observer.off.bind(observer);
- this.trigger = observer.trigger.bind(observer);
- this.flowController = new FlowController(this);
- this.bufferController = new BufferController(this);
- // this.fileLoader = new FileLoader(this);
- this.websocketLoader = new WebsocketLoader(this);
- this.mediaType = undefined;
- }
- destroy() {
- this.flowController.destroy();
- this.bufferController.destroy();
- // this.fileLoader.destroy();
- this.websocketLoader.destroy();
- }
- attachMedia(media, channelName='chX',mediaType='H264Raw', websocketName='play2') { // 'H264Raw' 'FMp4'
- this.mediaType = mediaType;
- this.media = media;
- this.trigger(Event.MEDIA_ATTACHING, {media:media, channelName:channelName, mediaType:mediaType, websocketName:websocketName });
- }
-
- attachWebsocket(websocket,channelName) {
- this.trigger(Event.WEBSOCKET_ATTACHING, {websocket: websocket, mediaType:this.mediaType, channelName:channelName });
- }
- }
- export default Wfs;
|