From 6fc3c6e28e8f3a6adee231b3ff33605ef144880a Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 12 Jun 2024 21:04:57 +0100 Subject: [PATCH] mess around with adding a thumbnail --- .../videos/VideoTranscodeBackdrop.tsx | 39 +++++++++++++++++++ .../videos/VideoTranscodeBackdrop.web.tsx | 5 +++ .../videos/VideoTranscodeProgress.tsx | 19 ++++++--- 3 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/view/com/composer/videos/VideoTranscodeBackdrop.tsx create mode 100644 src/view/com/composer/videos/VideoTranscodeBackdrop.web.tsx 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