mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-06 20:10:12 +02:00
add param to skipAutoTranscode for mpv
This commit is contained in:
@@ -1953,7 +1953,7 @@ export const SubsonicController: InternalControllerEndpoint = {
|
||||
},
|
||||
getStreamUrl: async ({ apiClientProps, query }) => {
|
||||
const { server } = apiClientProps;
|
||||
const { bitrate, format, id, mediaType = 'song', transcode } = query;
|
||||
const { bitrate, format, id, mediaType = 'song', skipAutoTranscode, transcode } = query;
|
||||
|
||||
const streamUrl = `${server?.url}/rest/stream.view?id=${id}&v=1.13.0&c=Feishin&${server?.credential}`;
|
||||
|
||||
@@ -1962,6 +1962,11 @@ export const SubsonicController: InternalControllerEndpoint = {
|
||||
return appendTranscodeParams(streamUrl, format, bitrate);
|
||||
}
|
||||
|
||||
// Used in cases where MPV is the default player, since mpv handles basically every audio format
|
||||
if (skipAutoTranscode) {
|
||||
return streamUrl;
|
||||
}
|
||||
|
||||
// If the server supports transcoding decision, always use it to determine if we need to transcode
|
||||
if (hasFeature(server, ServerFeature.OS_TRANSCODE_DECISION)) {
|
||||
const maxTranscodingAudioBitrate = 0;
|
||||
|
||||
@@ -124,10 +124,10 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
if (!radioState.currentStreamUrl) {
|
||||
const playerData = usePlayerStore.getState().getPlayerData();
|
||||
const currentSongUrl = playerData.currentSong
|
||||
? await getSongUrl(playerData.currentSong, transcode)
|
||||
? await getSongUrl(playerData.currentSong, transcode, true)
|
||||
: undefined;
|
||||
const nextSongUrl = playerData.nextSong
|
||||
? await getSongUrl(playerData.nextSong, transcode)
|
||||
? await getSongUrl(playerData.nextSong, transcode, true)
|
||||
: undefined;
|
||||
|
||||
if (currentSongUrl && nextSongUrl && !hasPopulatedQueueRef.current && mpvPlayer) {
|
||||
@@ -281,7 +281,7 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
return;
|
||||
}
|
||||
|
||||
const nextSongUrl = song ? await getSongUrl(song, transcode) : undefined;
|
||||
const nextSongUrl = song ? await getSongUrl(song, transcode, true) : undefined;
|
||||
mpvPlayer?.setQueueNext(nextSongUrl);
|
||||
},
|
||||
onPlayerPlay: () => {
|
||||
@@ -346,7 +346,7 @@ async function handleMpvAutoNext(transcode: {
|
||||
}) {
|
||||
const playerData = usePlayerStore.getState().getPlayerData();
|
||||
const nextSongUrl = playerData.nextSong
|
||||
? await getSongUrl(playerData.nextSong, transcode)
|
||||
? await getSongUrl(playerData.nextSong, transcode, true)
|
||||
: undefined;
|
||||
mpvPlayer?.autoNext(nextSongUrl);
|
||||
}
|
||||
@@ -365,10 +365,10 @@ async function replaceMpvQueue(transcode: {
|
||||
|
||||
const playerData = usePlayerStore.getState().getPlayerData();
|
||||
const currentSongUrl = playerData.currentSong
|
||||
? await getSongUrl(playerData.currentSong, transcode)
|
||||
? await getSongUrl(playerData.currentSong, transcode, true)
|
||||
: undefined;
|
||||
const nextSongUrl = playerData.nextSong
|
||||
? await getSongUrl(playerData.nextSong, transcode)
|
||||
? await getSongUrl(playerData.nextSong, transcode, true)
|
||||
: undefined;
|
||||
mpvPlayer?.setQueue(currentSongUrl, nextSongUrl, false);
|
||||
}
|
||||
|
||||
@@ -61,13 +61,18 @@ export function useSongUrl(
|
||||
return shouldReusePrior ? prior.current[1] : queryStreamUrl;
|
||||
}
|
||||
|
||||
export const getSongUrl = async (song: QueueSong, transcode: TranscodingConfig) => {
|
||||
export const getSongUrl = async (
|
||||
song: QueueSong,
|
||||
transcode: TranscodingConfig,
|
||||
skipAutoTranscode?: boolean,
|
||||
) => {
|
||||
const url = await api.controller.getStreamUrl({
|
||||
apiClientProps: { serverId: song._serverId },
|
||||
query: {
|
||||
bitrate: transcode.bitrate,
|
||||
format: transcode.format,
|
||||
id: song.id,
|
||||
skipAutoTranscode,
|
||||
transcode: transcode.enabled,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1670,6 +1670,7 @@ export type StreamQuery = {
|
||||
id: string;
|
||||
mediaType?: 'podcast' | 'song';
|
||||
offset?: number;
|
||||
skipAutoTranscode?: boolean;
|
||||
transcode: boolean;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user