Skip to content

Commit 8a2e5c1

Browse files
committed
fix: simplified initialization
1 parent 76bb33d commit 8a2e5c1

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

demo/demo.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ document.addEventListener("DOMContentLoaded", () => {
55
const handler = (quality) => {
66
console.log(`bitrate changed –>`, quality);
77
};
8-
const safariBitrateMonitor = new SafariBitrateMonitor(handler);
98
const src = "https://lbs-usp-hls-vod.cmore.se/vod/36af2/mdbyobowjbn(13730007_ISMUSP).ism/mdbyobowjbn(13730007_ISMUSP).m3u8?hls_no_audio_only=true";
10-
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");
9+
new SafariBitrateMonitor({
10+
videoElement,
11+
hlsManifestUrl: src,
12+
handler
13+
});
1114
});

index.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,31 @@ const BITRATE_POLL_INTERVAL = 5 * 1000;
2020

2121
export class SafariBitrateMonitor {
2222
private videoElement: HTMLVideoElement;
23+
private handler: (qualityLevel: IQualityLevel) => void;
2324

2425
private currentBitrate: number;
2526
private playlists: IHLSPlaylist[] = [];
2627
private bitrateInterval: number;
2728

28-
constructor(private handler: (data: IQualityLevel) => void) {}
29-
30-
async load(videoElement: HTMLVideoElement, hlsManifestUrl: string): Promise<void> {
29+
constructor({
30+
videoElement,
31+
hlsManifestUrl,
32+
handler,
33+
}: {
34+
videoElement: HTMLVideoElement;
35+
hlsManifestUrl: string;
36+
handler: (qualityLevel: IQualityLevel) => void;
37+
}) {
3138
if (!videoElement || !hlsManifestUrl) {
3239
console.error("[SafariBitrateMonitor] Missing video element or manifest url");
3340
return;
3441
}
3542
this.videoElement = videoElement;
43+
this.handler = handler;
44+
this.init(hlsManifestUrl);
45+
}
46+
47+
private async init(hlsManifestUrl: string): Promise<void> {
3648
this.playlists = await this.getPlaylists(hlsManifestUrl);
3749
if (this.playlists.length) {
3850
this.startBitratePoll();

readme.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ A small package to monitor buffering and dropped frames on the video element, re
1212

1313
function handler = (qualityLevel) => {
1414
console.log(`bitrate changed –>`, qualityLevel);
15-
};
16-
17-
const safariBitrateMonitor = new SafariBitrateMonitor(handler);
15+
};
1816
const src = ""; //HLS Manifest url
19-
safariBitrateMonitor.load(videoElement, src);
17+
18+
new SafariBitrateMonitor({
19+
videoElement,
20+
hlsManifestUrl: src,
21+
handler
22+
});
2023
```
2124

2225
## Quality Object

0 commit comments

Comments
 (0)