From ea2489710fcc330bad5bb559300712f51c023782 Mon Sep 17 00:00:00 2001 From: Hannah Date: Mon, 4 Dec 2023 21:38:55 +0000 Subject: [PATCH] Improve video trimming and error handling (#6566) * amend trimming logic and return original file when error occurs * add interactive story test * add changeset * add changeset --------- Co-authored-by: gradio-pr-bot --- .changeset/purple-deer-double.md | 6 +++ js/video/Video.stories.svelte | 62 +++++++++++++++++++--------- js/video/shared/VideoControls.svelte | 5 +++ js/video/shared/VideoTimeline.svelte | 2 + js/video/shared/utils.ts | 27 ++++++------ 5 files changed, 71 insertions(+), 31 deletions(-) create mode 100644 .changeset/purple-deer-double.md diff --git a/.changeset/purple-deer-double.md b/.changeset/purple-deer-double.md new file mode 100644 index 000000000000..17f8cb28d3a9 --- /dev/null +++ b/.changeset/purple-deer-double.md @@ -0,0 +1,6 @@ +--- +"@gradio/video": patch +"gradio": patch +--- + +fix:Improve video trimming and error handling diff --git a/js/video/Video.stories.svelte b/js/video/Video.stories.svelte index eae239d3f9ac..e0c2355718cc 100644 --- a/js/video/Video.stories.svelte +++ b/js/video/Video.stories.svelte @@ -3,30 +3,15 @@ import Video from "./Index.svelte"; import { format } from "svelte-i18n"; import { get } from "svelte/store"; + import { userEvent, within } from "@storybook/testing-library"; + import { waitFor } from "@testing-library/dom"; - +
@@ -72,3 +57,42 @@ value: null }} /> + + { + const canvas = within(canvasElement); + + const trimButton = canvas.getByLabelText("Trim video to selection"); + + userEvent.click(trimButton); + + await new Promise((r) => setTimeout(r, 4000)); + + const rightHandle = canvas.getByLabelText( + "end drag handle for trimming video" + ); + + userEvent.click(rightHandle); + + for (let i = 0; i < 4; i++) { + await userEvent.keyboard("[ArrowRight]"); + } + + userEvent.click(canvas.getByText("Trim")); + }} +/> diff --git a/js/video/shared/VideoControls.svelte b/js/video/shared/VideoControls.svelte index 95379bc95284..7c215704c8ee 100644 --- a/js/video/shared/VideoControls.svelte +++ b/js/video/shared/VideoControls.svelte @@ -28,6 +28,11 @@ const minutes = Math.floor(seconds / 60); const secondsRemainder = Math.round(seconds) % 60; const paddedSeconds = `0${secondsRemainder}`.slice(-2); + + if (Number.isNaN(minutes) || Number.isNaN(secondsRemainder)) { + return "00:00"; + } + return `${minutes}:${paddedSeconds}`; }; diff --git a/js/video/shared/VideoTimeline.svelte b/js/video/shared/VideoTimeline.svelte index 35dff6d2d965..9993677d65d1 100644 --- a/js/video/shared/VideoTimeline.svelte +++ b/js/video/shared/VideoTimeline.svelte @@ -156,6 +156,7 @@ {:else}