spectatr-player-sdk
Version:
A custom video player built with Stencil with Shaka Player integration
45 lines (44 loc) • 1.63 kB
JavaScript
export function setupTracks(component) {
const { player } = component;
if (!player)
return;
const audioTracks = player.getAudioTracks();
// Use a Map to store the first occurrence of each language
const uniqueLanguageTracks = new Map();
audioTracks.forEach(track => {
const language = track.language;
if (!uniqueLanguageTracks.has(language)) {
uniqueLanguageTracks.set(language, {
index: track.id,
language: language,
label: track.label || `Audio ${language}`,
enabled: track.active,
});
}
});
// Convert Map values back to an array
component.audioTracks = Array.from(uniqueLanguageTracks.values());
// Set the first track as active (or keep existing logic)
component.currentAudioTrack = 0;
setupQualityTrack(component);
}
export function setupQualityTrack(component) {
const { player } = component;
if (!player)
return;
const tracks = player.getVariantTracks();
component.qualities = tracks
.filter(track => !track.label || track.label === component.audioTracks[component.currentAudioTrack]?.label)
.reduce((unique, track) => {
const qualityLabel = track.height ? `${track.height}p` : `${Math.floor(track.bandwidth / 1000)}kbps`;
unique.push({
index: track.id,
height: track.height,
bitrate: track.bandwidth,
name: qualityLabel,
});
return unique;
}, []);
component.currentQuality = -1;
}
//# sourceMappingURL=tracker-util.js.map