Compare commits

...
4 Commits
7 changed files with 27 additions and 22 deletions
+1 -1
View File
@@ -232,7 +232,7 @@ When your browser runs into problems playing back your camera streams, it will l
- **mse-decode** - **mse-decode**
- What it means: The browser reported a decoding error while trying to play the stream, which usually is a result of a codec incompatibility or corrupted frames. - What it means: The browser reported a decoding error while trying to play the stream, which usually is a result of a codec incompatibility or corrupted frames.
- What to try: Ensure your camera/restream is using H.264 video and AAC audio (these are the most compatible). If your camera uses a non-standard audio codec, configure `go2rtc` to transcode the stream to AAC. Try another browser (some browsers have stricter MSE/codec support) and, for iPhone, ensure you're on iOS 17.1 or newer. - What to try: Check the browser console for the supported and negotiated codecs. Ensure your camera/restream is using H.264 video and AAC audio (these are the most compatible). If your camera uses a non-standard audio codec, configure `go2rtc` to transcode the stream to AAC. Try another browser (some browsers have stricter MSE/codec support) and, for iPhone, ensure you're on iOS 17.1 or newer.
- Possible console messages from the player code: - Possible console messages from the player code:
+2 -2
View File
@@ -1753,7 +1753,7 @@ def create_trigger_embedding(
body.data, (base64.b64encode(thumbnail).decode("ASCII")) body.data, (base64.b64encode(thumbnail).decode("ASCII"))
) )
if embedding is None: if not embedding:
return JSONResponse( return JSONResponse(
content={ content={
"success": False, "success": False,
@@ -1888,7 +1888,7 @@ def update_trigger_embedding(
body.data, (base64.b64encode(thumbnail).decode("ASCII")) body.data, (base64.b64encode(thumbnail).decode("ASCII"))
) )
if embedding is None: if not embedding:
return JSONResponse( return JSONResponse(
content={ content={
"success": False, "success": False,
+2 -1
View File
@@ -61,7 +61,8 @@
"header": { "header": {
"zones": "Zones", "zones": "Zones",
"ratio": "Ratio", "ratio": "Ratio",
"area": "Area" "area": "Area",
"score": "Score"
} }
}, },
"annotationSettings": { "annotationSettings": {
@@ -314,11 +314,10 @@ function GeneralFilterButton({
<PlatformAwareDialog <PlatformAwareDialog
trigger={trigger} trigger={trigger}
content={content} content={content}
contentClassName={ contentClassName={cn(
isDesktop "scrollbar-container h-auto overflow-y-auto",
? "scrollbar-container h-auto max-h-[80dvh] overflow-y-auto" isDesktop ? "max-h-[80dvh]" : "px-4",
: "max-h-[75dvh] overflow-hidden p-4" )}
}
open={open} open={open}
onOpenChange={(open) => { onOpenChange={(open) => {
if (!open) { if (!open) {
@@ -510,11 +509,10 @@ function SortTypeButton({
<PlatformAwareDialog <PlatformAwareDialog
trigger={trigger} trigger={trigger}
content={content} content={content}
contentClassName={ contentClassName={cn(
isDesktop "scrollbar-container h-auto overflow-y-auto",
? "scrollbar-container h-auto max-h-[80dvh] overflow-y-auto" isDesktop ? "max-h-[80dvh]" : "px-4",
: "max-h-[75dvh] overflow-hidden p-4" )}
}
open={open} open={open}
onOpenChange={(open) => { onOpenChange={(open) => {
if (!open) { if (!open) {
@@ -44,8 +44,8 @@ export default function PlatformAwareDialog({
return ( return (
<Drawer open={open} onOpenChange={onOpenChange}> <Drawer open={open} onOpenChange={onOpenChange}>
<DrawerTrigger asChild>{trigger}</DrawerTrigger> <DrawerTrigger asChild>{trigger}</DrawerTrigger>
<DrawerContent className="max-h-[75dvh] overflow-hidden px-4"> <DrawerContent className="max-h-[75dvh] overflow-hidden">
{content} <div className={contentClassName}>{content}</div>
</DrawerContent> </DrawerContent>
</Drawer> </Drawer>
); );
+8 -1
View File
@@ -94,12 +94,19 @@ function MSEPlayer({
console.error( console.error(
`${camera} - MSE error '${error}': ${description} See the documentation: https://docs.frigate.video/configuration/live/#live-player-error-messages`, `${camera} - MSE error '${error}': ${description} See the documentation: https://docs.frigate.video/configuration/live/#live-player-error-messages`,
); );
if (mseCodecRef.current) { if (mseCodecRef.current) {
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.error(`${camera} - MSE codec in use: ${mseCodecRef.current}`); console.error(
`${camera} - Browser negotiated codecs: ${mseCodecRef.current}`,
);
// eslint-disable-next-line no-console
console.error(`${camera} - Supported codecs: ${CODECS.join(", ")}`);
} }
onError?.(error); onError?.(error);
}, },
// we know that these deps are correct
// eslint-disable-next-line react-hooks/exhaustive-deps
[camera, onError], [camera, onError],
); );
@@ -136,11 +136,10 @@ export default function ExploreSettings({
<PlatformAwareDialog <PlatformAwareDialog
trigger={trigger} trigger={trigger}
content={content} content={content}
contentClassName={ contentClassName={cn(
isDesktop "scrollbar-container h-auto overflow-y-auto",
? "scrollbar-container h-auto max-h-[80dvh] overflow-y-auto" isDesktop ? "max-h-[80dvh]" : "px-4",
: "max-h-[75dvh] overflow-hidden p-4" )}
}
open={open} open={open}
onOpenChange={(open) => { onOpenChange={(open) => {
setOpen(open); setOpen(open);