diff --git a/src/view/com/composer/videos/VideoTranscodeBackdrop.tsx b/src/view/com/composer/videos/VideoTranscodeBackdrop.tsx
new file mode 100644
index 0000000000..0f4387fbf4
--- /dev/null
+++ b/src/view/com/composer/videos/VideoTranscodeBackdrop.tsx
@@ -0,0 +1,39 @@
+import React from 'react'
+import Animated, {FadeIn} from 'react-native-reanimated'
+import * as FileSystem from 'expo-file-system'
+import {Image} from 'expo-image'
+import {useQuery} from '@tanstack/react-query'
+import {FFmpegKit} from 'ffmpeg-kit-react-native'
+
+import {atoms as a} from '#/alf'
+
+export function VideoTranscodeBackdrop({uri}: {uri: string}) {
+ const {data: thumbnail} = useQuery({
+ queryKey: ['thumbnail', uri],
+ queryFn: async () => {
+ const thumbnailJpg = `${FileSystem.cacheDirectory}/thumbnail.jpg`
+ if ((await FileSystem.getInfoAsync(thumbnailJpg)).exists) {
+ await FileSystem.deleteAsync(thumbnailJpg)
+ }
+ await FFmpegKit.execute(
+ `-ss 00:00:01.000 -i ${uri} -vf 'scale=320:320:force_original_aspect_ratio=decrease' -frames:v 1 ${thumbnailJpg}`,
+ )
+ return thumbnailJpg
+ },
+ })
+
+ return (
+
+ {thumbnail && (
+
+ )}
+
+ )
+}
diff --git a/src/view/com/composer/videos/VideoTranscodeBackdrop.web.tsx b/src/view/com/composer/videos/VideoTranscodeBackdrop.web.tsx
new file mode 100644
index 0000000000..a22c48a907
--- /dev/null
+++ b/src/view/com/composer/videos/VideoTranscodeBackdrop.web.tsx
@@ -0,0 +1,5 @@
+import React from 'react'
+
+export function VideoTranscodeBackdrop({uri}: {uri: string}) {
+ return
+}
diff --git a/src/view/com/composer/videos/VideoTranscodeProgress.tsx b/src/view/com/composer/videos/VideoTranscodeProgress.tsx
index fba29a1700..368099697e 100644
--- a/src/view/com/composer/videos/VideoTranscodeProgress.tsx
+++ b/src/view/com/composer/videos/VideoTranscodeProgress.tsx
@@ -7,6 +7,7 @@ import {ImagePickerAsset} from 'expo-image-picker'
import {atoms as a, useTheme} from '#/alf'
import {Loader} from '#/components/Loader'
import {Text} from '#/components/Typography'
+import {VideoTranscodeBackdrop} from './VideoTranscodeBackdrop'
export function VideoTranscodeProgress({
input,
@@ -18,16 +19,24 @@ export function VideoTranscodeProgress({
const t = useTheme()
return (
-
+
+
{input.duration ? (
)}
- Transcoding...
+ Compressing...
)