rx-player
Version:
Canal+ HTML5 Video Player
28 lines (27 loc) • 1.09 kB
JavaScript
import arrayFind from "../../../utils/array_find";
import TaskCanceller from "../../../utils/task_canceller";
/**
* @param {function} fetchThumbnails
* @param {Object} manifest
* @param {string} periodId
* @param {string} thumbnailTrackId
* @param {number} time
* @returns {Promise.<Object>}
*/
export default async function getThumbnailData(fetchThumbnails, manifest, periodId, thumbnailTrackId, time) {
const period = manifest.getPeriod(periodId);
if (period === undefined) {
throw new Error("Wanted Period not found.");
}
const thumbnailTrack = arrayFind(period.thumbnailTracks, (t) => {
return t.id === thumbnailTrackId;
});
if (thumbnailTrack === undefined) {
throw new Error("Wanted Period has no thumbnail track.");
}
const wantedThumbnail = thumbnailTrack.index.getSegments(time, 1)[0];
if (wantedThumbnail === undefined) {
throw new Error("No thumbnail for the given timestamp");
}
return fetchThumbnails({ segment: wantedThumbnail, track: thumbnailTrack, period }, new TaskCanceller().signal);
}