95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
export function addVideoTracks(streamServer, apiResponse, av1Supported, dashSupported) {
|
|
if (dashSupported) {
|
|
return addDashTracks(streamServer, apiResponse, av1Supported);
|
|
}
|
|
|
|
return addLegacyTracks(streamServer, apiResponse, av1Supported);
|
|
}
|
|
|
|
|
|
function addDashTracks(streamServer, apiResponse, av1Supported) {
|
|
var data = [];
|
|
|
|
// 720p
|
|
data.push({
|
|
src: streamServer + '/' + apiResponse.stream_url + '/720/manifest.mpd',
|
|
size: 720,
|
|
mode: 'mpd',
|
|
});
|
|
|
|
if (av1Supported) {
|
|
// 1080p
|
|
data.push({
|
|
src: streamServer + '/' + apiResponse.stream_url + '/1080/manifest.mpd',
|
|
size: 1080,
|
|
mode: 'mpd',
|
|
});
|
|
|
|
// 2160p
|
|
data.push({
|
|
src: streamServer + '/' + apiResponse.stream_url + '/2160/manifest.mpd',
|
|
size: 2160,
|
|
mode: 'mpd',
|
|
});
|
|
|
|
if (apiResponse.interpolated == 1) {
|
|
// 1080p Interpolated
|
|
data.push({
|
|
src: streamServer + '/' + apiResponse.stream_url + '/1080i/manifest.mpd',
|
|
size: 1081,
|
|
mode: 'mpd',
|
|
});
|
|
}
|
|
|
|
if (apiResponse.interpolated_uhd == 1) {
|
|
// 2160p Interpolated
|
|
data.push({
|
|
src: streamServer + '/' + apiResponse.stream_url + '/2160i/manifest.mpd',
|
|
size: 2161,
|
|
mode: 'mpd',
|
|
});
|
|
}
|
|
}
|
|
|
|
return data;
|
|
}
|
|
|
|
function addLegacyTracks(streamServer, apiResponse, av1Supported) {
|
|
var data = [];
|
|
|
|
// 720p
|
|
data.push({
|
|
src: streamServer + '/' + apiResponse.stream_url + '/x264.720p.mp4',
|
|
type: 'video/mp4',
|
|
size: 720,
|
|
});
|
|
|
|
return data;
|
|
}
|
|
|
|
|
|
export function addSubtitleTracks(streamServer, apiResponse) {
|
|
var data = [];
|
|
|
|
// Default
|
|
data.push({
|
|
kind: 'captions',
|
|
label: 'English',
|
|
srclang: 'en',
|
|
src: '',
|
|
default: true,
|
|
});
|
|
|
|
for (var key in apiResponse.extra_subtitles) {
|
|
data.push({
|
|
kind: 'captions',
|
|
label: apiResponse.extra_subtitles[key] + ' (Auto Transl.)',
|
|
srclang: key,
|
|
src: '',
|
|
default: false,
|
|
});
|
|
}
|
|
|
|
return data;
|
|
}
|