mirror of
https://gitlab.com/futo-org/fcast.git
synced 2025-07-24 10:56:59 +00:00
Added more keyboard shortcuts and improve livestream seeking
This commit is contained in:
parent
eba201cce1
commit
4beb3ded54
1 changed files with 30 additions and 13 deletions
|
@ -564,14 +564,20 @@ function volumeChangeHandler(volume: number) {
|
||||||
player.setVolume(volume);
|
player.setVolume(volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
playerCtrlLiveBadge.onclick = () => {
|
playerCtrlLiveBadge.onclick = () => { setLivePosition(); };
|
||||||
|
|
||||||
|
function setLivePosition() {
|
||||||
if (!isLivePosition) {
|
if (!isLivePosition) {
|
||||||
isLivePosition = true;
|
isLivePosition = true;
|
||||||
|
|
||||||
player.setCurrentTime(player.getDuration() - livePositionDelta);
|
player.setCurrentTime(player.getDuration() - livePositionDelta);
|
||||||
playerCtrlLiveBadge.setAttribute("style", `background-color: red`);
|
playerCtrlLiveBadge.setAttribute("style", `background-color: red`);
|
||||||
|
|
||||||
|
if (player.isPaused()) {
|
||||||
|
playerCtrlStateUpdate(PlayerControlEvent.Play);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
playerCtrlCaptions.onclick = () => { player.enableCaptions(!player.isCaptionsEnabled()); playerCtrlStateUpdate(PlayerControlEvent.SetCaptions); };
|
playerCtrlCaptions.onclick = () => { player.enableCaptions(!player.isCaptionsEnabled()); playerCtrlStateUpdate(PlayerControlEvent.SetCaptions); };
|
||||||
playerCtrlSpeed.onclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleSpeedMenu); };
|
playerCtrlSpeed.onclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleSpeedMenu); };
|
||||||
|
@ -583,10 +589,10 @@ playbackRates.forEach(r => {
|
||||||
});
|
});
|
||||||
|
|
||||||
videoElement.onclick = () => {
|
videoElement.onclick = () => {
|
||||||
if (player.isPaused()) {
|
if (player.isPaused()) {
|
||||||
playerCtrlStateUpdate(PlayerControlEvent.Play);
|
playerCtrlStateUpdate(PlayerControlEvent.Play);
|
||||||
} else {
|
} else {
|
||||||
playerCtrlStateUpdate(PlayerControlEvent.Pause);
|
playerCtrlStateUpdate(PlayerControlEvent.Pause);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
videoElement.ondblclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen); };
|
videoElement.ondblclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen); };
|
||||||
|
@ -632,6 +638,7 @@ document.addEventListener('keydown', (event) => {
|
||||||
// console.log("KeyDown", event);
|
// console.log("KeyDown", event);
|
||||||
|
|
||||||
switch (event.code) {
|
switch (event.code) {
|
||||||
|
case 'KeyF':
|
||||||
case 'F11':
|
case 'F11':
|
||||||
playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen);
|
playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen);
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@ -645,17 +652,27 @@ document.addEventListener('keydown', (event) => {
|
||||||
player.setCurrentTime(Math.max(player.getCurrentTime() - skipInterval, 0));
|
player.setCurrentTime(Math.max(player.getCurrentTime() - skipInterval, 0));
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
break;
|
break;
|
||||||
case 'ArrowRight': {
|
case 'ArrowRight':
|
||||||
// Skip forward
|
// Skip forward
|
||||||
const duration = player.getDuration();
|
if (!isLivePosition) {
|
||||||
if (duration) {
|
player.setCurrentTime(Math.min(player.getCurrentTime() + skipInterval, player.getDuration()));
|
||||||
player.setCurrentTime(Math.min(player.getCurrentTime() + skipInterval, duration));
|
|
||||||
} else {
|
|
||||||
player.setCurrentTime(player.getCurrentTime());
|
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
break;
|
break;
|
||||||
}
|
case "Home":
|
||||||
|
player.setCurrentTime(0);
|
||||||
|
event.preventDefault();
|
||||||
|
break;
|
||||||
|
case "End":
|
||||||
|
if (isLive) {
|
||||||
|
setLivePosition();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.setCurrentTime(player.getDuration());
|
||||||
|
}
|
||||||
|
event.preventDefault();
|
||||||
|
break;
|
||||||
|
case 'KeyK':
|
||||||
case 'Space':
|
case 'Space':
|
||||||
case 'Enter':
|
case 'Enter':
|
||||||
// Pause/Continue
|
// Pause/Continue
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue