mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-29 07:09:03 +03:00
Compare commits
4
Commits
dev
...
d43473867b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d43473867b | ||
|
|
1950f367f0 | ||
|
|
4850c04c0c | ||
|
|
7c3e093fcc |
@@ -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:
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user