diff --git a/server/src/modules/schedule-tasks/video-conversion.service.ts b/server/src/modules/schedule-tasks/video-conversion.service.ts index e714476098..d2a1a82a43 100644 --- a/server/src/modules/schedule-tasks/video-conversion.service.ts +++ b/server/src/modules/schedule-tasks/video-conversion.service.ts @@ -24,7 +24,6 @@ export class VideoConversionService { ) { } - // time ffmpeg -i 15065f4a-47ff-4aed-8c3e-c9fcf1840531.mov -crf 35 -preset ultrafast -vcodec libx264 -acodec mp3 -vf "scale=1280:-1" 15065f4a-47ff-4aed-8c3e-c9fcf1840531.mp4 @Cron(CronExpression.EVERY_MINUTE , { name: 'video-encoding' diff --git a/web/src/lib/components/asset-viewer/immich-thumbnail.svelte b/web/src/lib/components/asset-viewer/immich-thumbnail.svelte index 9f5db1a36a..d7fa9ac04c 100644 --- a/web/src/lib/components/asset-viewer/immich-thumbnail.svelte +++ b/web/src/lib/components/asset-viewer/immich-thumbnail.svelte @@ -59,7 +59,14 @@ videoPlayerNode.load(); + videoPlayerNode.onloadeddata = () => { + console.log('first frame load'); + }; + videoPlayerNode.oncanplaythrough = () => { + console.log('can play through'); + }; videoPlayerNode.oncanplay = () => { + console.log('can play'); videoPlayerNode.muted = true; videoPlayerNode.play(); @@ -119,9 +126,8 @@ mouseOver = false; URL.revokeObjectURL(videoData); - if (calculateVideoDurationIntervalHandler) { - clearInterval(calculateVideoDurationIntervalHandler); - } + clearInterval(calculateVideoDurationIntervalHandler); + isThumbnailVideoPlaying = false; videoProgress = '00:00'; }; @@ -197,7 +203,7 @@ {#if mouseOver && asset.type === AssetType.VIDEO}
-
diff --git a/web/src/lib/components/shared/status-box.svelte b/web/src/lib/components/shared/status-box.svelte new file mode 100644 index 0000000000..4609f5d8b0 --- /dev/null +++ b/web/src/lib/components/shared/status-box.svelte @@ -0,0 +1,99 @@ + + +
+
+
+ +
+
+

Storage

+ {#if serverInfoRes} +
+ +
+
+

{serverInfoRes?.diskUse} of {serverInfoRes?.diskSize} used

+ {:else} +
+ +
+ {/if} +
+
+
+
+
+
+
+ +
+ +
+

Server

+ +
+

{endpoint}

+
+
+

Status

+ + {#if isServerOk} +

Online

+ {:else} +

Offline

+ {/if} +
+ +
+

Version

+

{serverVersion}

+
+
+
+
diff --git a/web/src/routes/__layout.svelte b/web/src/routes/__layout.svelte index 28c9692ed0..846a259ac3 100644 --- a/web/src/routes/__layout.svelte +++ b/web/src/routes/__layout.svelte @@ -7,25 +7,11 @@
@@ -36,19 +22,3 @@
{/key} - - diff --git a/web/src/routes/admin/index.svelte b/web/src/routes/admin/index.svelte index a79910899b..0965ff85d1 100644 --- a/web/src/routes/admin/index.svelte +++ b/web/src/routes/admin/index.svelte @@ -34,6 +34,7 @@ import UserManagement from '$lib/components/admin/user-management.svelte'; import FullScreenModal from '$lib/components/shared/full-screen-modal.svelte'; import CreateUserForm from '$lib/components/forms/create-user-form.svelte'; + import StatusBox from '../../lib/components/shared/status-box.svelte'; let selectedAction: AdminSideBarSelection; @@ -74,7 +75,7 @@ {/if}
-
+
+ +
+ +
diff --git a/web/src/routes/photos/index.svelte b/web/src/routes/photos/index.svelte index 534db1b2a1..4d9c7e2fce 100644 --- a/web/src/routes/photos/index.svelte +++ b/web/src/routes/photos/index.svelte @@ -39,6 +39,7 @@ import type { ImmichAsset } from '../../lib/models/immich-asset'; import AssetViewer from '../../lib/components/asset-viewer/asset-viewer.svelte'; import DownloadPanel from '../../lib/components/asset-viewer/download-panel.svelte'; + import StatusBox from '../../lib/components/shared/status-box.svelte'; export let user: ImmichUser; let selectedAction: AppSideBarSelection; @@ -91,7 +92,7 @@
-
+
+ + + +
+ +