mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-06-22 20:31:53 +03:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
|
|
export type StreamSourceMode = "restream" | "manual";
|
||
|
|
|
||
|
|
// The literal go2rtc restream prefix matches what the camera wizard inlines
|
||
|
|
// when it builds a restreamed input path. Only this exact host:port is treated
|
||
|
|
// as a restream so manually typed URLs (including localhost) stay manual.
|
||
|
|
export const RESTREAM_PREFIX = "rtsp://127.0.0.1:8554/";
|
||
|
|
export const RESTREAM_PRESET = "preset-rtsp-restream";
|
||
|
|
|
||
|
|
/** Build the restream input path for a given go2rtc stream name. */
|
||
|
|
export function buildRestreamPath(streamName: string): string {
|
||
|
|
return `${RESTREAM_PREFIX}${streamName}`;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Extract the go2rtc stream name from a restream input path.
|
||
|
|
*
|
||
|
|
* Returns the stream name when the path is a well-formed restream URL with no
|
||
|
|
* extra path segments or query, otherwise undefined.
|
||
|
|
*/
|
||
|
|
export function parseRestreamStreamName(
|
||
|
|
path: string | undefined,
|
||
|
|
): string | undefined {
|
||
|
|
if (typeof path !== "string" || !path.startsWith(RESTREAM_PREFIX)) {
|
||
|
|
return undefined;
|
||
|
|
}
|
||
|
|
|
||
|
|
const name = path.slice(RESTREAM_PREFIX.length);
|
||
|
|
if (name.length === 0 || /[/?#]/.test(name)) {
|
||
|
|
return undefined;
|
||
|
|
}
|
||
|
|
|
||
|
|
return name;
|
||
|
|
}
|