mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-01 02:13:33 +00:00
provide transcoding support
This commit is contained in:
parent
da95a644c8
commit
528bef01f0
24 changed files with 347 additions and 69 deletions
|
|
@ -137,7 +137,9 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => {
|
|||
if (!isElectron() || playbackType === PlaybackType.WEB) {
|
||||
// Update twice a second for slightly better performance
|
||||
interval = setInterval(() => {
|
||||
setCurrentTime(currentPlayerRef.getCurrentTime());
|
||||
if (currentPlayerRef) {
|
||||
setCurrentTime(currentPlayerRef.getCurrentTime());
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import debounce from 'lodash/debounce';
|
|||
import { toast } from '/@/renderer/components';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { updateSong } from '/@/renderer/features/player/update-remote-song';
|
||||
import { setAutoNext, setQueue, setQueueNext } from '/@/renderer/utils/set-transcoded-queue-data';
|
||||
|
||||
const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
|
||||
const mpvPlayerListener = isElectron() ? window.electron.mpvPlayerListener : null;
|
||||
|
|
@ -131,30 +132,30 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
if (shuffleStatus === PlayerShuffle.NONE) {
|
||||
const playerData = setShuffle(PlayerShuffle.TRACK);
|
||||
remote?.updateShuffle(true);
|
||||
return mpvPlayer?.setQueueNext(playerData);
|
||||
return setQueueNext(playerData);
|
||||
}
|
||||
|
||||
const playerData = setShuffle(PlayerShuffle.NONE);
|
||||
remote?.updateShuffle(false);
|
||||
return mpvPlayer?.setQueueNext(playerData);
|
||||
return setQueueNext(playerData);
|
||||
}, [setShuffle, shuffleStatus]);
|
||||
|
||||
const handleToggleRepeat = useCallback(() => {
|
||||
if (repeatStatus === PlayerRepeat.NONE) {
|
||||
const playerData = setRepeat(PlayerRepeat.ALL);
|
||||
remote?.updateRepeat(PlayerRepeat.ALL);
|
||||
return mpvPlayer?.setQueueNext(playerData);
|
||||
return setQueueNext(playerData);
|
||||
}
|
||||
|
||||
if (repeatStatus === PlayerRepeat.ALL) {
|
||||
const playerData = setRepeat(PlayerRepeat.ONE);
|
||||
remote?.updateRepeat(PlayerRepeat.ONE);
|
||||
return mpvPlayer?.setQueueNext(playerData);
|
||||
return setQueueNext(playerData);
|
||||
}
|
||||
|
||||
const playerData = setRepeat(PlayerRepeat.NONE);
|
||||
remote?.updateRepeat(PlayerRepeat.NONE);
|
||||
return mpvPlayer?.setQueueNext(playerData);
|
||||
return setQueueNext(playerData);
|
||||
}, [repeatStatus, setRepeat]);
|
||||
|
||||
const checkIsLastTrack = useCallback(() => {
|
||||
|
|
@ -172,7 +173,7 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
local: () => {
|
||||
const playerData = autoNext();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.autoNext(playerData);
|
||||
setAutoNext(playerData);
|
||||
play();
|
||||
},
|
||||
web: () => {
|
||||
|
|
@ -186,12 +187,12 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
if (isLastTrack) {
|
||||
const playerData = setCurrentIndex(0);
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData, true);
|
||||
setQueue(playerData, true);
|
||||
pause();
|
||||
} else {
|
||||
const playerData = autoNext();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.autoNext(playerData);
|
||||
setAutoNext(playerData);
|
||||
play();
|
||||
}
|
||||
},
|
||||
|
|
@ -211,7 +212,7 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
local: () => {
|
||||
const playerData = autoNext();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.autoNext(playerData);
|
||||
setAutoNext(playerData);
|
||||
play();
|
||||
},
|
||||
web: () => {
|
||||
|
|
@ -257,7 +258,7 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
local: () => {
|
||||
const playerData = next();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
},
|
||||
web: () => {
|
||||
const playerData = next();
|
||||
|
|
@ -270,12 +271,12 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
if (isLastTrack) {
|
||||
const playerData = setCurrentIndex(0);
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData, true);
|
||||
setQueue(playerData, true);
|
||||
pause();
|
||||
} else {
|
||||
const playerData = next();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
}
|
||||
},
|
||||
web: () => {
|
||||
|
|
@ -297,7 +298,7 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
if (!isLastTrack) {
|
||||
const playerData = next();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
}
|
||||
},
|
||||
web: () => {
|
||||
|
|
@ -358,11 +359,11 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
if (!isFirstTrack) {
|
||||
const playerData = previous();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
} else {
|
||||
const playerData = setCurrentIndex(queue.length - 1);
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
}
|
||||
},
|
||||
web: () => {
|
||||
|
|
@ -383,12 +384,12 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
if (isFirstTrack) {
|
||||
const playerData = setCurrentIndex(0);
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData, true);
|
||||
setQueue(playerData, true);
|
||||
pause();
|
||||
} else {
|
||||
const playerData = previous();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
}
|
||||
},
|
||||
web: () => {
|
||||
|
|
@ -407,7 +408,7 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
local: () => {
|
||||
const playerData = previous();
|
||||
updateSong(playerData.current.song);
|
||||
mpvPlayer!.setQueue(playerData);
|
||||
setQueue(playerData);
|
||||
},
|
||||
web: () => {
|
||||
const playerData = previous();
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import { queryKeys } from '/@/renderer/api/query-keys';
|
|||
import { useTranslation } from 'react-i18next';
|
||||
import { PlayersRef } from '/@/renderer/features/player/ref/players-ref';
|
||||
import { updateSong } from '/@/renderer/features/player/update-remote-song';
|
||||
import { setQueue, setQueueNext } from '/@/renderer/utils/set-transcoded-queue-data';
|
||||
|
||||
const getRootQueryKey = (itemType: LibraryItem, serverId: string) => {
|
||||
let queryKey;
|
||||
|
|
@ -180,9 +181,9 @@ export const useHandlePlayQueueAdd = () => {
|
|||
|
||||
if (playType === Play.NOW || !hadSong) {
|
||||
mpvPlayer!.pause();
|
||||
mpvPlayer!.setQueue(playerData, false);
|
||||
setQueue(playerData, false);
|
||||
} else {
|
||||
mpvPlayer!.setQueueNext(playerData);
|
||||
setQueueNext(playerData);
|
||||
}
|
||||
} else {
|
||||
const player =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue