mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-13 07:46:17 -08:00
44 lines
1.2 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
}
|
|
}
|