A custom element that helps save alienated player API's in bringing back their true inner
HTMLMediaElement API,
or to extend a native media element like <audio>
or <video>
.
import { SuperVideoElement } from 'super-media-element';
class MyVideoElement extends SuperVideoElement {
static observedAttributes = ['color', ...SuperVideoElement.observedAttributes];
// Skip from forwarding the `src` attribute to the native element.
static skipAttributes = ['src'];
async attributeChangedCallback(attrName, oldValue, newValue) {
if (attrName === 'color') {
this.api.color = newValue;
}
super.attributeChangedCallback(attrName, oldValue, newValue);
}
async load() {
// This is called when the `src` changes.
// Load a video player from a script here.
// Example: https://github.com/luwes/jwplayer-video-element/blob/main/jwplayer-video-element.js#L55-L75
this.api = new VideoPlayer();
}
get nativeEl() {
return this.querySelector('.loaded-video-element');
}
}
if (!globalThis.customElements.get('my-video')) {
globalThis.customElements.define('my-video', MyVideoElement);
}
export { MyVideoElement };
- Media Chrome Your media player's dancing suit. 🕺
<youtube-video>
A custom element for the YouTube player.<vimeo-video>
A custom element for the Vimeo player.<jwplayer-video>
A custom element for the JW player.<wistia-video>
A custom element for the Wistia player.<cloudflare-video>
A custom element for the Cloudflare player.<videojs-video>
A custom element for Video.js.<hls-video>
A custom element for playing HTTP Live Streaming (HLS) videos.castable-video
Cast your video element to the big screen with ease!<mux-player>
The official Mux-flavored video player custom element.<mux-video>
A Mux-flavored HTML5 video element w/ hls.js and Mux data builtin.