Commit Graph

137 Commits

Author SHA1 Message Date
zrose584
a5ef801c07 handle missing storyboard
Signed-off-by: Jesús <heckyel@hyperbola.info>
2022-01-17 09:01:09 -05:00
zrose584
63c92e0c4e add preview thumbnails
Signed-off-by: Jesús <heckyel@hyperbola.info>
2022-01-09 16:39:50 -05:00
Jesús
90338c25c6 [FrontEnd]: fix dropdown design 2021-12-31 18:15:59 -05:00
Jesús
f572bb62aa [FrontEnd]: remove unused styles 2021-12-31 17:39:59 -05:00
Jesús
f2fc1cf564 [FrontEnd]: fix missing unsubscribe style 2021-12-31 17:35:48 -05:00
Jesús
7b7e69a8b1 [FrontEnd]: light_theme, change link-visited color 2021-12-27 16:20:58 -05:00
Jesús
217541bd9c [FrontEnd]: fix dropdown design 2021-12-27 16:13:35 -05:00
Jesús
bcbd83fa30 [FrontEnd]: improved settings design 2021-12-26 12:27:24 -05:00
Jesús
0820909b7e [frontend]: fix design in playlist 2021-12-18 23:12:08 -05:00
Jesús
519b7e64e7 [frontend]: fix reporInfo in prototype 2021-12-16 18:19:15 -05:00
Jesús
5d753351c5 [frontend]: relax find segment 2021-12-16 18:10:00 -05:00
Jesús
df7e41b61a [frontend]: fix global scope, change var to let 2021-12-16 17:46:16 -05:00
Jesús
8e5b6dc831 [Design]: add 0.5rem for grid-gap (col and row) 2021-12-03 19:35:03 -05:00
Jesús
2fe0b5e539 Improve input styles 2021-09-22 12:56:59 -05:00
Jesús
8b745907cc improve quality-select 2021-09-14 14:49:14 -05:00
James Taylor
9c7e93ecf8 Redo av codec settings & selections to accomodate webm
Allows for ranked preferences for h264, av1, and vp9 codecs in
settings, along with equal preferences which are tiebroken using
smaller file size.

For each quality, gives av-merge a list of video sources
and audio sources sorted based on preference & file size. It
will pick the first one that the browser supports.

Closes #84

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-09-06 16:18:11 -05:00
James Taylor
854ab81b91 av-merge: Add webm support
But watch.py is not providing them yet. Deciding how to fix the
codec options/defaults is for a later commit

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-09-06 15:34:19 -05:00
James Taylor
fc0fa9aaba av-merge: Fix segments not properly reappended during QuotaExceeded
Two issues fixed:
1. The append was only retried if it was the result of a seek
event. But if the video is paused (such as if the video was
finished and the user seeks back to the beginning), the seek
won't happen because the MediaSource will not issue a sourceopen
until the user plays the video. A better strategy that solves
the true issue is to retry the append if it is for the segment
corresponding to the current time, since that is critical to get
immediately.
2. If the append was not retried, entry.requested was not getting
marked as false, so it would refuse to ever rerequest the segment,
so it would stall. Set it to false if we decide not to retry the
append, so it can be rerequested later.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-09-01 20:12:14 -05:00
Jesús
06e091e020 watch.js: video variable as const and improve data.time_start syntax 2021-09-01 15:14:06 -05:00
Jesús
7143e1b321 plyr: use strict and fix undefined quality variable 2021-09-01 12:42:44 -05:00
Jesús
98d9b35765 plyr: minor fix 2021-09-01 12:25:46 -05:00
Jesús
1632ab5cda plyr: remove sourceMappingURL=plyr.min.js.map 2021-08-31 21:00:43 -05:00
James Taylor
12561c0ed3 av-merge: Specify which of MediaSource, audio, or video are unsupported
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-31 20:16:17 -05:00
James Taylor
30e59081b1 av-merge: Use .shift() instead of .pop() in appendQueue for FIFO
.pop() gives LIFO, but FIFO was the intention for appendQueue.
O(n) behavior is fine because appendQueue should be very small.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-31 11:38:24 -05:00
James Taylor
85cf943850 av-merge: Fix handling of QuotaExceededError
Many things fixed:
- Delete from end of video in addition to from beginning. Firefox
automatically deletes from the beginning already.
- Increment i in the while loop (oops)
- Calling .remove takes time for the sourceBuffer to perform, and
it will be in the updating=true state. Continuing to delete more
would give an error. Waits until the updateend event is fired
before deleting more segments.
- Retry appendBuffer if the quota was exceeded during a seek append

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-31 11:37:36 -05:00
James Taylor
a7527986c8 Fix embed page broken due to changes to jinja variables
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 23:24:32 -05:00
James Taylor
00c812ff4a av-merge: Fix numDeleted not incremented during segment deletion
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 23:19:03 -05:00
James Taylor
99cb1c48ea av-merge: Fix malformed mp4 fragments wrongly considered deleted
See comment within. They would be constantly rerequested and
av-merge would think it didn't have them, so it wouldn't
request subsequent segments

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 22:58:36 -05:00
James Taylor
c1dbc6c411 av-merge: print sourceBuffer.buffered in printDebuggingInfo
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 22:57:03 -05:00
James Taylor
92bdbf072e av-merge: Fix error when switching qualities after endOfStream
After the video has been buffered to the end and
mediaSource.endOfStream() has been called, the close function
would perform some closing operations on the sourceBuffers
that gave InvalidStateError

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 22:55:41 -05:00
James Taylor
77fffee34f av-merge: Add function to dump debugging info
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 22:54:27 -05:00
James Taylor
aacbf07ad7 av-merge: Use tickEnd+1 when calculating segment time ranges
tickEnd is inclusive, so two segments might have the following
ticks:

-- Segment 0 --
tickStart: 0
tickEnd: 44099

-- Segment 1 --
tickStart: 44100
tickEnd: 88199

When doing calculations in seconds about segment extent, there
were gaps between segment 0's end and segment 1's beginning. This
sometimes resulted in errors of not finding the corresponding
segment index inside these gaps.

Using (tickEnd+1)/this.sidx.timeScale is the correct method.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 22:50:10 -05:00
James Taylor
9d3ebca622 av-merge: End stream correctly when last segments do not overlap
In this video at 480p:
https://www.youtube.com/watch?v=6bnanI9jXps
There is an extremely tiny audio segment from
30.00018140589569 to 30.06981859410431
after the last video segment ends at 29.99998888888889. Call
end of stream when we have all segments until the end, instead
of calling it when we are playing the last segment.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 22:48:46 -05:00
Jesús
309ff40943 watch.html: Move loose inline javascript into watch.js
The number of inline code blocks and the dependencies between them
became unmanageable.

From 9d96c07a3c2e68f1893634574c3be64e41a2c041 Mon Sep 17 00:00:00 2001
From: James Taylor <user234683@users.noreply.github.com>
2021-08-29 22:43:10 -05:00
James Taylor
56b17c634c av-merge: Use console.warn and console.error
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:57:55 -05:00
James Taylor
dd01c8ca4c av-merge: change QuotaExceeded messages to warnings
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:57:02 -05:00
James Taylor
81e61f9893 av-merge: buffer same duration of audio and video
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:56:00 -05:00
James Taylor
ae68c84a26 av-merge: Make segment fetching message more useful
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:54:32 -05:00
James Taylor
1c591b4457 av-merge: call mediaSource.endOfStream() so player pauses at end
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:53:21 -05:00
James Taylor
9f44e0474b Integrate quality selection into Plyr
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:47:14 -05:00
James Taylor
5ff216d1ba avmerge: Fix errors if close is called twice
This can happen if the quality is changed from an avmerge source
to an integrated source, and then changed back to an avmerge source

Close is called the first change, but on the last change, it's
called again because the avMerge object is still present, resulting
in InvalidStateError

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:03:36 -05:00
James Taylor
70eb5cc94f avmerge: Remove obsolete shouldFetchNextSegment function
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:01:54 -05:00
James Taylor
fa3b78583f avmerge: Close streams to avoid errors while changing quality
If a fetchRange network request finished after the quality was
changed, there would be a "InvalidStateError: An attempt was made
to use an object that is not, or is no longer, usable" because
appendSegment was trying to append to the sourceBuffer that was
unusable after the video src was changed to a new mediaSource.

Adds a close method to the AVMerge class to properly clean and
close everything so these sorts of errors won't happen.

Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 21:00:30 -05:00
James Taylor
d942883c78 avmerge: Buffer 50 mb ahead in video
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 20:54:06 -05:00
James Taylor
a7da23c6da Add video quality selector
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 20:52:57 -05:00
James Taylor
c9a75042d2 Add support for more qualities, merging video+audio using MSE
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 18:48:56 -05:00
Jesús
e4af99fd17 Revert "Add support for more qualities, merging video+audio using MSE"
This reverts commit d56df02e7b.
2021-08-29 18:48:01 -05:00
James Taylor
d56df02e7b Add support for more qualities, merging video+audio using MSE
Signed-off-by: Jesús <heckyel@hyperbola.info>
2021-08-29 18:44:26 -05:00
Jesús
f532386976 [plyr]: minor fix syntax 2021-08-09 22:11:50 -05:00
Jesús
af1df31161 [plyr]: update 2021-08-09 22:09:04 -05:00