forked from loeade/invidious
Compare commits
12 commits
82c962f3b8
...
ac7322b089
Author | SHA1 | Date | |
---|---|---|---|
ac7322b089 | |||
9714aba5a7 | |||
0d7a4ac5ca | |||
fbb17a1171 | |||
bad2e77f37 | |||
06aeb1d215 | |||
8d6602717d | |||
79d1908d94 | |||
3d3f928866 | |||
7940bcb16d | |||
992a4b2066 | |||
4d39aada70 |
5 changed files with 909 additions and 12 deletions
|
@ -121,6 +121,7 @@ body a.channel-owner {
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.feed-menu-item {
|
||||
|
@ -213,7 +214,7 @@ div.watched-overlay {
|
|||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: rgba(255,255,255,.4);
|
||||
background-color: rgba(255,255,255, 0);
|
||||
}
|
||||
|
||||
div.watched-indicator {
|
||||
|
@ -238,7 +239,7 @@ div.thumbnail > .bottom-right-overlay {
|
|||
.bottom-right-overlay { bottom: 0.6em; right: 0.6em; }
|
||||
|
||||
.length {
|
||||
padding: 1px;
|
||||
padding: 2px;
|
||||
margin: -2px 0;
|
||||
color: #fff;
|
||||
border-radius: 3px;
|
||||
|
@ -471,7 +472,7 @@ footer {
|
|||
}
|
||||
|
||||
.dark-theme footer {
|
||||
color: #adadad;
|
||||
color: #75c8d9;
|
||||
}
|
||||
|
||||
.light-theme footer a {
|
||||
|
@ -632,15 +633,15 @@ span > select {
|
|||
|
||||
body.dark-theme {
|
||||
background-color: rgba(35, 35, 35, 1);
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.dark-theme .pure-form legend {
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.dark-theme .pure-menu-heading {
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.dark-theme input,
|
||||
|
@ -650,7 +651,7 @@ body.dark-theme {
|
|||
}
|
||||
|
||||
.dark-theme .pure-form input[type="file"] {
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.dark-theme .searchbar input {
|
||||
|
@ -685,16 +686,16 @@ body.dark-theme {
|
|||
}
|
||||
|
||||
body.no-theme {
|
||||
background-color: rgba(35, 35, 35, 1);
|
||||
color: #f0f0f0;
|
||||
background-color: rgba(0, 0, 0, 1);
|
||||
color: #daffff;
|
||||
}
|
||||
|
||||
.no-theme .pure-form legend {
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.no-theme .pure-menu-heading {
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.no-theme input,
|
||||
|
@ -704,7 +705,7 @@ body.dark-theme {
|
|||
}
|
||||
|
||||
.no-theme .pure-form input[type="file"] {
|
||||
color: #f0f0f0;
|
||||
color: #c0ffee;
|
||||
}
|
||||
|
||||
.no-theme .searchbar input {
|
||||
|
|
|
@ -235,6 +235,8 @@ video.video-js {
|
|||
margin-right: 1em;
|
||||
padding-bottom: 82vh;
|
||||
height: 0;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mobile-operations-bar {
|
||||
|
|
827
assets/js/itags.js
Normal file
827
assets/js/itags.js
Normal file
|
@ -0,0 +1,827 @@
|
|||
// data from https://github.com/leonbrandt/yt-itag
|
||||
|
||||
let itag_formats =
|
||||
|
||||
[
|
||||
{
|
||||
"audioBitrate": 96,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": "AUDIO_QUALITY_LOW",
|
||||
"audioSampleRate": 44100,
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 18,
|
||||
"quality": "medium",
|
||||
"qualityLabel": "360p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 192,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": "AUDIO_QUALITY_MEDIUM",
|
||||
"audioSampleRate": 44100,
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 22,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 48,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "ts",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 91,
|
||||
"quality": null,
|
||||
"qualityLabel": "144p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 48,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "ts",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 92,
|
||||
"quality": null,
|
||||
"qualityLabel": "240p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 128,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "ts",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 93,
|
||||
"quality": null,
|
||||
"qualityLabel": "360p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 128,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "ts",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 94,
|
||||
"quality": null,
|
||||
"qualityLabel": "480p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 256,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "ts",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 95,
|
||||
"quality": null,
|
||||
"qualityLabel": "720p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 256,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "ts",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 96,
|
||||
"quality": null,
|
||||
"qualityLabel": "1080p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 133,
|
||||
"quality": "small",
|
||||
"qualityLabel": "240p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 134,
|
||||
"quality": "medium",
|
||||
"qualityLabel": "360p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 135,
|
||||
"quality": "large",
|
||||
"qualityLabel": "480p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 136,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 137,
|
||||
"quality": "hd1080",
|
||||
"qualityLabel": "1080p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 138,
|
||||
"quality": "highres",
|
||||
"qualityLabel": "4320p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": 48,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 139,
|
||||
"quality": null,
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": 128,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": "AUDIO_QUALITY_MEDIUM",
|
||||
"audioSampleRate": "44100",
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 140,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 160,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": "144p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 242,
|
||||
"quality": "small",
|
||||
"qualityLabel": "240p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 243,
|
||||
"quality": "medium",
|
||||
"qualityLabel": "360p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 244,
|
||||
"quality": "large",
|
||||
"qualityLabel": "480p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 247,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 248,
|
||||
"quality": "hd1080",
|
||||
"qualityLabel": "1080p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": "48",
|
||||
"audioCodec": "OPUS",
|
||||
"audioQuality": "AUDIO_QUALITY_LOW",
|
||||
"audioSampleRate": "48000",
|
||||
"container": "webm",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 249,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": "64",
|
||||
"audioCodec": "OPUS",
|
||||
"audioQuality": "AUDIO_QUALITY_LOW",
|
||||
"audioSampleRate": "48000",
|
||||
"container": "webm",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 250,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": "160",
|
||||
"audioCodec": "OPUS",
|
||||
"audioQuality": "AUDIO_QUALITY_MEDIUM",
|
||||
"audioSampleRate": "48000",
|
||||
"container": "webm",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 251,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 264,
|
||||
"quality": "hd1440",
|
||||
"qualityLabel": "1440p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 266,
|
||||
"quality": "hd2160",
|
||||
"qualityLabel": "2160p",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 271,
|
||||
"quality": "hd1440",
|
||||
"qualityLabel": "1440p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 272,
|
||||
"quality": "highres",
|
||||
"qualityLabel": "4320p60",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 278,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": "144p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 298,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p60",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 299,
|
||||
"quality": "hd1080",
|
||||
"qualityLabel": "1080p60",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": "128",
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": "48000",
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 300,
|
||||
"quality": null,
|
||||
"qualityLabel": "720p60",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": "128",
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": "48000",
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": true,
|
||||
"itag": 301,
|
||||
"quality": null,
|
||||
"qualityLabel": "1080p60",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 302,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p60",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 303,
|
||||
"quality": "hd1080",
|
||||
"qualityLabel": "1080p60",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 304,
|
||||
"quality": "hd1440",
|
||||
"qualityLabel": "1440p60",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 305,
|
||||
"quality": "hd2160",
|
||||
"qualityLabel": "2160p60",
|
||||
"videoCodec": "AVC"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 308,
|
||||
"quality": "hd1440",
|
||||
"qualityLabel": "1440p60",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 313,
|
||||
"quality": "hd2160",
|
||||
"qualityLabel": "2160p",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 315,
|
||||
"quality": "hd2160",
|
||||
"qualityLabel": "2160p60",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": "AAC",
|
||||
"audioQuality": "AUDIO_QUALITY_MEDIUM",
|
||||
"audioSampleRate": "44100",
|
||||
"container": "mp4",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 327,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 330,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": "144p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 331,
|
||||
"quality": "small",
|
||||
"qualityLabel": "240p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 332,
|
||||
"quality": "medium",
|
||||
"qualityLabel": "360p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 333,
|
||||
"quality": "large",
|
||||
"qualityLabel": "480p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 334,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 335,
|
||||
"quality": "hd1080",
|
||||
"qualityLabel": "1080p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 336,
|
||||
"quality": "hd1440",
|
||||
"qualityLabel": "1440p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "webm",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 337,
|
||||
"quality": "hd2160",
|
||||
"qualityLabel": "2160p60 HDR",
|
||||
"videoCodec": "VP9"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": "OPUS",
|
||||
"audioQuality": "AUDIO_QUALITY_MEDIUM",
|
||||
"audioSampleRate": "48000",
|
||||
"container": "webm",
|
||||
"hasAudio": true,
|
||||
"hasVideo": false,
|
||||
"itag": 338,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": null,
|
||||
"hasVideo": null,
|
||||
"itag": 386,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": null,
|
||||
"hasVideo": null,
|
||||
"itag": 387,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": null,
|
||||
"videoCodec": null
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 394,
|
||||
"quality": "tiny",
|
||||
"qualityLabel": "144p",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 395,
|
||||
"quality": "small",
|
||||
"qualityLabel": "240p",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 396,
|
||||
"quality": "medium",
|
||||
"qualityLabel": "360p",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 397,
|
||||
"quality": "large",
|
||||
"qualityLabel": "480p",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 398,
|
||||
"quality": "hd720",
|
||||
"qualityLabel": "720p60",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 399,
|
||||
"quality": "hd1080",
|
||||
"qualityLabel": "1080p60",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 400,
|
||||
"quality": "hd1440",
|
||||
"qualityLabel": "1440p60",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 401,
|
||||
"quality": "hd2160",
|
||||
"qualityLabel": "2160p60",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 402,
|
||||
"quality": "highres",
|
||||
"qualityLabel": "4320p60",
|
||||
"videoCodec": "AV1"
|
||||
},
|
||||
{
|
||||
"audioBitrate": null,
|
||||
"audioCodec": null,
|
||||
"audioQuality": null,
|
||||
"audioSampleRate": null,
|
||||
"container": "mp4",
|
||||
"hasAudio": false,
|
||||
"hasVideo": true,
|
||||
"itag": 571,
|
||||
"quality": "highres",
|
||||
"qualityLabel": "4320p60",
|
||||
"videoCodec": "AV1"
|
||||
}]
|
||||
|
||||
|
||||
;
|
|
@ -50,11 +50,77 @@ videojs.Vhs.xhr.beforeRequest = function(options) {
|
|||
return options;
|
||||
};
|
||||
|
||||
let htvid = null;
|
||||
|
||||
if(video_data.params.quality === 'directdash'){
|
||||
let htsource = document.getElementById("player");
|
||||
htsource.innerHTML = "";
|
||||
|
||||
let req = new XMLHttpRequest();
|
||||
req.open("GET", `/api/manifest/dash/id/${video_data.id}`, false);
|
||||
req.send();
|
||||
let dat = req.responseText;
|
||||
|
||||
let matches = [...dat.matchAll(/itag=([0-9]*)/gm)];
|
||||
|
||||
let itags=[];
|
||||
|
||||
for(let i = 1; i< matches.length; i+=2){
|
||||
let match = matches[i];
|
||||
if(match)
|
||||
itags.push(+match[1]);
|
||||
}
|
||||
|
||||
console.log(itags);
|
||||
|
||||
for(let i = 0; i < itags.length; i++){
|
||||
let itag_info = itag_formats.find(function(a){return a.itag===itags[i]});
|
||||
console.log("itaginfo:");
|
||||
console.log(itag_info);
|
||||
if(!itag_info || !itag_info.hasVideo || itag_info.hasAudio) continue;
|
||||
|
||||
let qual = document.createElement("source");
|
||||
qual.src = `/latest_version?id=${video_data.id}&itag=${itags[i]}`;
|
||||
qual.type = `video/${itag_info.container}`;
|
||||
qual.setAttribute("label", `${itag_info.qualityLabel}`);
|
||||
htsource.appendChild(qual);
|
||||
}
|
||||
|
||||
let aud = document.createElement("audio");
|
||||
aud.src = `/latest_version?id=${video_data.id}&itag=140`;
|
||||
aud.id = "seperate_audio";
|
||||
document.body.append(aud);
|
||||
}
|
||||
|
||||
var player = videojs('player', options);
|
||||
|
||||
if(video_data.params.quality === 'directdash'){
|
||||
let aud = document.getElementById("seperate_audio");
|
||||
|
||||
player.on('pause', ()=>{
|
||||
//console.log("paused");
|
||||
aud.pause();
|
||||
});
|
||||
|
||||
player.on('playing', ()=>{
|
||||
//console.log("playing");
|
||||
|
||||
aud.playbackRate = htvid.playbackRate;
|
||||
aud.currentTime = htvid.currentTime + 0.20;
|
||||
|
||||
aud.play();
|
||||
});
|
||||
}
|
||||
|
||||
htvid = document.getElementById("player_html5_api");
|
||||
|
||||
player.on('error', function () {
|
||||
if (video_data.params.quality === 'dash') return;
|
||||
|
||||
// pause audio to be safe
|
||||
let aud = document.getElementById("seperate_audio");
|
||||
try {if(aud) aud.pause()} catch(e){};
|
||||
|
||||
var localNotDisabled = (
|
||||
!player.currentSrc().includes('local=true') && !video_data.local_disabled
|
||||
);
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
<meta name="twitter:player:width" content="1280">
|
||||
<meta name="twitter:player:height" content="720">
|
||||
<link rel="alternate" href="https://www.youtube.com/watch?v=<%= video.id %>">
|
||||
<script id="itag_defs" src="/js/itags.js"></script>
|
||||
<%= rendered "components/player_sources" %>
|
||||
<title><%= title %> - Invidious</title>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue