Skip to content

Commit

Permalink
fix: simplified initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
slowmove committed Apr 25, 2022
1 parent 76bb33d commit 8a2e5c1
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 9 deletions.
7 changes: 5 additions & 2 deletions demo/demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ document.addEventListener("DOMContentLoaded", () => {
const handler = (quality) => {
console.log(`bitrate changed –>`, quality);
};
const safariBitrateMonitor = new SafariBitrateMonitor(handler);
const src = "https://lbs-usp-hls-vod.cmore.se/vod/36af2/mdbyobowjbn(13730007_ISMUSP).ism/mdbyobowjbn(13730007_ISMUSP).m3u8?hls_no_audio_only=true";
safariBitrateMonitor.load(videoElement, "https://lbs-usp-hls-vod.cmore.se/vod/36af2/mdbyobowjbn(13730007_ISMUSP).ism/mdbyobowjbn(13730007_ISMUSP).m3u8?hls_no_audio_only=true");
new SafariBitrateMonitor({
videoElement,
hlsManifestUrl: src,
handler
});
});
18 changes: 15 additions & 3 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,31 @@ const BITRATE_POLL_INTERVAL = 5 * 1000;

export class SafariBitrateMonitor {
private videoElement: HTMLVideoElement;
private handler: (qualityLevel: IQualityLevel) => void;

private currentBitrate: number;
private playlists: IHLSPlaylist[] = [];
private bitrateInterval: number;

constructor(private handler: (data: IQualityLevel) => void) {}

async load(videoElement: HTMLVideoElement, hlsManifestUrl: string): Promise<void> {
constructor({
videoElement,
hlsManifestUrl,
handler,
}: {
videoElement: HTMLVideoElement;
hlsManifestUrl: string;
handler: (qualityLevel: IQualityLevel) => void;
}) {
if (!videoElement || !hlsManifestUrl) {
console.error("[SafariBitrateMonitor] Missing video element or manifest url");
return;
}
this.videoElement = videoElement;
this.handler = handler;
this.init(hlsManifestUrl);
}

private async init(hlsManifestUrl: string): Promise<void> {
this.playlists = await this.getPlaylists(hlsManifestUrl);
if (this.playlists.length) {
this.startBitratePoll();
Expand Down
11 changes: 7 additions & 4 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,14 @@ A small package to monitor buffering and dropped frames on the video element, re

function handler = (qualityLevel) => {
console.log(`bitrate changed –>`, qualityLevel);
};

const safariBitrateMonitor = new SafariBitrateMonitor(handler);
};
const src = ""; //HLS Manifest url
safariBitrateMonitor.load(videoElement, src);

new SafariBitrateMonitor({
videoElement,
hlsManifestUrl: src,
handler
});
```

## Quality Object
Expand Down

0 comments on commit 8a2e5c1

Please sign in to comment.