0.1.4 • Published 5 years ago

basic-video v0.1.4

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

Basic Video

A simple and consistent API for web video playback

Supports all default features for <video> and <audio> tags, with some additional functionality.

This repo exists solely as an API layer around the default HTMLMediaElement. It's sole purpose is to provide basic video playback for a developer to create their own custom video player.

To see a sample of the api with custom controls. Check out the basic-video-player repository.

Getting Started

npm install basic-video

<video id="player" preload="auto" controls>
MP4
import BasicVideo from 'basic-video';

const basicVideo = new BasicVideo(document.getElementById('player'), {
    poster: 'https://d292x7cpdimrbp.cloudfront.net/video/poster.jpg',
    sources: [
        {
            src: 'https://d292x7cpdimrbp.cloudfront.net/video/1080.mp4',
            type: 'video/mp4',
            label: '1080'
        },
        {
            src: 'https://d292x7cpdimrbp.cloudfront.net/video/720.mp4',
            type: 'video/mp4',
            label: '720'
        },
        {
            src: 'https://d292x7cpdimrbp.cloudfront.net/video/480.mp4',
            type: 'video/mp4',
            label: '480'
        },
    ],
});
HLS
import BasicVideo from 'basic-video';

const basicVideo = new BasicVideo(document.getElementById('player'), {
    poster: 'https://d292x7cpdimrbp.cloudfront.net/video/poster.jpg',
    hlsManifestUrl: 'https://d292x7cpdimrbp.cloudfront.net/video/video.m3u8',
});

Getters/Setters

//Get
const currentTime = basicVideo.currentTime;

//Set
basicVideo.currentTime = 30;
PropTypeGetSetInfo
currentSourceStringxxCurrent media source being played
posterStringxxPoster on the video element
currentVolumeNumberxxCurrent volume of the media
bufferedObjectxTimeRanges object (buffered.start(0) and buffered.end(0) to get the range)
isMutedBooleanxxMute the player
isReadyBooleanxCan the media play through without interruption
readyStateNumberxMDN
totalDurationNumberxTotal duration of the media in seconds
currentTimeNumberxxThe current time of the media in seconds
currentProgressNumberxThe current progress percentage of the media
playbackRateNumberxxThe playback rate of the media (1 for normal, 0.5 for half etc...)
playbackQualitiesArrayxAn array of all available qualities with their label and source
currentPlaybackQualityNumberxxCurrent index of the playbackQualities array

Methods

basicVideo.play();
MethodParamsReturnsInfo
initPromiseInitialize the player with existing props (invoked in the constructor). Can be used to refresh the player if you want
forceLoadPromiseForces the player to reload the media, returns a promise that resolves when the isReady prop returns true. Times itself out after 5 minutes.
playPlay the media
pausePause the media
loadHlsJs (static)Create a script element with the latest version of hls.js
attachHlsmanifest (string)Attach an instance of hls.js to the video element with am HLS Manifest URL

Events

All events are emit from the MediaElement object (the <video> element you injected into the player).

EventInfo
initemit after the init function resolves

You can also hook into all of the DOM Events available to the HTMLMediaElement

basicVideo.MediaElement.addEventListener('play' => event {
    console.log(event);
)
0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago