Files
ArtPlayer/packages/artplayer-plugin-flv/src/creatMediaSource.js
T

44 lines
1.2 KiB
JavaScript

import config from './config';
export default class CreatMediaSource {
constructor(flv) {
this.flv = flv;
this.creatUrl();
this.eventBind();
}
creatUrl() {
const {
options: { mediaElement },
events: { destroyEvents },
} = this.flv;
this.mediaSource = new MediaSource();
const url = URL.createObjectURL(this.mediaSource);
destroyEvents.push(() => {
URL.revokeObjectURL(url);
});
mediaElement.src = url;
}
eventBind() {
const {
events: { proxy },
} = this.flv;
config.mediaSource.events.forEach(eventName => {
proxy(this.mediaSource, eventName, event => {
this.flv.emit(`mediaSource:${event.type}`, event);
});
});
config.sourceBufferList.events.forEach(eventName => {
proxy(this.mediaSource.sourceBuffers, eventName, event => {
this.flv.emit(`sourceBuffers:${event.type}`, event);
});
proxy(this.mediaSource.activeSourceBuffers, eventName, event => {
this.flv.emit(`activeSourceBuffers:${event.type}`, event);
});
});
}
}