Commit graph

92 commits

Author SHA1 Message Date
DispatchCommit d32af5606b move pre-roll ad logic into it's designated video.js plugin 2021-07-13 22:22:06 -04:00
DispatchCommit 47d9b4a866 fix site detection, add hide logo to macro url 2021-07-13 00:06:32 -04:00
DispatchCommit 8253f5e0dc center play button 2021-07-13 00:06:32 -04:00
DispatchCommit b777669a7e Add pre-roll ads
change ad macro url
rework video.js load logic
fix autoplay and retry errors
yeet player.ended error
fix another race condition
fix another error message
add allowPreRoll restrictions
fix some lint issues
remove annoying lint rule
remove video.js lazy loading
more linting fixes
2021-07-13 00:06:32 -04:00
infinite-persistence 5d8e3d8b0a
Revert lazy-loading videojs
## Issue
The loading circle wasn't showing up, causing confusion.

Splitting CSS doesn't seem trivial as there seems to be a huge dependency on the load order. Pretty much similar to what this person is facing https://lihautan.com/css-code-splitting/#the-problem

## Change
This reverts videojs-specific changes from 4d638bcf.
2021-07-06 17:04:16 +08:00
DispatchCommit da23a5625b fix video js imports 2021-06-30 19:12:21 -07:00
infinite-persistence 5766dc34b5 Port recsys to master; enabled for SIMPLE_SITE only 2021-06-29 14:52:11 -04:00
Anthony 312c561529 update comment 2021-06-26 22:26:40 -04:00
Anthony ab13b23cef dont display cc button via videojs settings 2021-06-26 22:26:40 -04:00
infinite-persistence aaffd3b089
CodeSplit: Load 3rd-party css before ours.
A temporary solution until we code-split css.
2021-06-25 16:00:45 +08:00
infinite-persistence 244f5ecaa4 Fix videos not switching when floating player is up
## Issue
6278 Video doesn't switch when floating player is up

## Notes
Not sure why the double `src` call is needed, but it is.
2021-06-19 11:23:29 -04:00
zeppi eff948f786 toms fix for player timeout bug 2021-06-11 13:40:01 -04:00
infinite-persistence 47539edcab Fix lint (removal of videoFetchDuration) 2021-06-10 10:14:52 -04:00
Anthony 272eb90392 remove native controls for ios 2021-06-04 15:41:42 -04:00
Anthony eef218a807 use video js viewer for ios and add playsinline 2021-06-04 15:41:42 -04:00
infinite-persistence 2dac41e5e5
Mute video when autoplay is blocked by browser policy (#6087)
## Issue
When opening a video directly in Chrome Incognito, the video should autoplay (since that's the default Lbry setting), but it doesn't due to browser policy
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

## Changes
- We don't want to forcefully mute the video when `autoplay=true`; we just want to do it when the browser policy is applied.
- Fortunately, there is already an existing code-block for us to check that.

## Test cases
- [x] "Autoplay=Off" should not be affected.
- [x] After manually unmuting, the next autoplayed video should not be muted (this is "user interacted" opening, so the policy allows autoplay)
- [x] If manually muting, the next autoplayed video should retain user's last setting.

## Known issues
- I've seen `error` occasionally being undefined in the `catch` block. In those cases, the solution doesn't work. We could remove `if (player.autoplay() && !player.muted())` and simply just try muting it, but for now it's better to ensure `NotAllowedError` is due to unmuted first before applying the fix.
- This doesn't work for Firefox as there is an explicit "Allow Autoplay" button in the address bar that user needs to click themselves. Applies to all sites.
2021-05-19 11:56:54 -04:00
Max Kotlan 1279a6eaaf Fixed and cleaned up Hotkeys. Fixed overlapping lbry hotkeys with browser hotkeys 2021-04-19 13:34:10 -04:00
Sean Yesmunt e08b71774c pre-roll ads 2021-04-12 12:55:06 -04:00
DispatchCommit 954966abbb fix linting errors 2021-03-21 20:36:50 -04:00
r0ckinn 6b8554517c also add keybinds for volume 2021-03-21 20:36:50 -04:00
r0ckinn 6b3dce0450 improve keyboard shortcuts 2021-03-21 20:36:50 -04:00
infiinte-persistence 83912627de vjs: Fix 'Video-setting persistence broken'
## Issue
5513: Video-setting persistence broken

## Notes
- Per videojs recommendation, the setting-restoration should be done after the video has been loaded, so the action was moved to `loadedmetadata`. This fixed the volume slider problem, and should have fixed the playbackRate too.
- For playbackRate, there is another special case where it gets reset to 1 (refer to comments in code).
2021-03-15 15:03:15 -04:00
infiinte-persistence 09c1cfeb8f vjs: Fix 'Video showing previous audio clip's thumbnail instead'
## Issue
5450: Video showing previous audio clip's thumbnail instead

## Notes
`createVideoPlayerDOM` depends on `isAudio`
2021-03-15 15:03:15 -04:00
DispatchCommit 1f3035b2f9 remove console.log for linter 2021-03-09 16:04:40 -05:00
DispatchCommit d47b6eae0c Track duration for initial video fetch time
this may help identify degraded services and poor user experience.
2021-03-09 16:04:40 -05:00
infinite-persistence af8b683308 videojs: Localize + add shortcut tooltip
## Issue
Partially closes 3041: Display/hint what keyboard shortcuts are available in videos
(minus the "all shortcuts" overlay -- saving that for another day)
2021-03-08 14:13:56 -05:00
infinite-persistence 05383701af Restore video loading circle
## Issue
5554: Video: loading circle sometimes does not appear until 2nd click

## What's happening
videojs behavior:
(a) A `src` change makes the Play button re-appear.
(b) An `onPlay` (or `play()`) makes the button go away.

Due to the `m3u8` header async fetch (i.e. return is potentially delayed), the initial `onPlay` (which cleared the button) that happened after user clicked Play gets negated by a potentially-delayed `src` change.

# Changes
- Manually hide the play button that is induced by the change in `src`. In the fetch-delay scenario mentioned above, the player continues to be in a 'playing' state anyway.
- But don't hide the button if paused externally (e.g. browser-level)
Restore video loading circle
2021-03-08 13:28:25 -05:00
DispatchCommit d5d97fe6e7 cleanup plugin code 2021-02-18 14:11:10 -05:00
DispatchCommit 0fff2542b7 Add custom quality selector plugin
Adds custom video.js hls quality selector plugin
This allows the quality selector plugin to stay active and listen for source changes on the player to prevent the need to recreate the player when switching between MP4's and M3U8's
2021-02-18 14:11:10 -05:00
infiinte-persistence d26d76fc70 Theater: hide button when not needed
## Issues
5349: Remove theater mode button from player in comments
5519: Theatre mode button doesn't do anything in full screen mode [Odysse/LBRY desktop app]

## Notes
5349: Wanted to hide for 'markdown' as well, but it seems useful for 'markdown' (to clear the screen from Related), so I did not include it.
2021-02-17 17:56:10 -05:00
Sean Yesmunt 8c21ec30e8 prevent caching on streaming url requests
Fixes an issue where the browser still thought a file wasn't transcoded because it was serving the cached response
2021-01-27 14:27:27 -05:00
Sean Yesmunt 99d7487bc2 fix quality selector not showing up 2021-01-27 14:27:27 -05:00
DispatchCommit 9a395a0284 remove leftover console log 2021-01-27 12:50:40 -05:00
DispatchCommit d6e5df540e remove unused player reference 2021-01-27 12:50:40 -05:00
DispatchCommit 3d38739be1 adds vjs player reference to component state 2021-01-27 12:50:40 -05:00
infiinte-persistence 1f48dab312 Remove unnecessary 'reload' at the return statement.
We no longer need to re-render the whole thing..
2021-01-27 12:50:40 -05:00
infiinte-persistence 84bba58d64 Update broken 'Retry' button after videojs refactoring. 2021-01-27 12:50:40 -05:00
Dispatch 4cf9a455bc
add autoplay logic for embedded player (#5399)
Add autoplay logic when player is embedded.

Adds new `autoplay` prop to `VideoJs` component for specifying autoplay value.
2021-01-27 08:49:30 -05:00
DispatchCommit 52f883be4e fix linting errors 2021-01-26 11:00:41 -05:00
DispatchCommit ee28648852 remove console.log statements 2021-01-26 11:00:41 -05:00
DispatchCommit d8564cda5a hack-y solution to losing player context
use a global window variable to store the reference to the current video.js instance.
2021-01-26 11:00:41 -05:00
DispatchCommit 68ae2d571f only react to source prop updates 2021-01-26 11:00:41 -05:00
DispatchCommit 7c8383f2dc attempt to persist a single video.js instance
Continually recreating video.js instance on render is bad.
Instead, persist a single instance, and simply update the source and poster on the existing instance.
2021-01-26 11:00:41 -05:00
infiinte-persistence 855d13e735 Add "t" as shortcut for Theather Mode 2021-01-25 10:38:25 -05:00
DispatchCommit bb3354581a fix overrideNative option for vjs
resolves https://github.com/lbryio/lbry-desktop/issues/5323
2021-01-20 21:49:08 -05:00
Sean Yesmunt 21cbb64001 Revert "Add Chromecast support on Google Chrome."
This reverts commit 65ce47a7d1.
2021-01-20 15:14:00 -05:00
Sean Yesmunt c166060f0d Revert "Pass the title and channel name to Chromecast."
This reverts commit bb828385d0.
2021-01-20 15:14:00 -05:00
infiinte-persistence bb828385d0 Pass the title and channel name to Chromecast.
I'm a bit wary of adding props to this component due to the 'dispose' call, but I think 'source' and 'claim' will update together, so it shouldn't be an issue?
2021-01-19 10:29:28 -05:00
infiinte-persistence 65ce47a7d1 Add Chromecast support on Google Chrome. 2021-01-19 10:29:28 -05:00
Sean Yesmunt 80a7cbe16f add quality selector to transcoded videos 2021-01-15 10:34:41 -05:00