diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-07-06 01:50:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-05 17:50:03 -0700 |
commit | 8f06ba70bb02a9dc3f09285719bd1585cc43aaeb (patch) | |
tree | eacc2a658522826a99d1ca3055fbd54a63ff65de /src/lib/media/video/compress.ts | |
parent | 56b688744ef3492a1e93d8a6ee04a116ceb7253a (diff) | |
download | voidsky-8f06ba70bb02a9dc3f09285719bd1585cc43aaeb.tar.zst |
Video compression in composer (#4638)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com> Co-authored-by: Hailey <me@haileyok.com>
Diffstat (limited to 'src/lib/media/video/compress.ts')
-rw-r--r-- | src/lib/media/video/compress.ts | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/lib/media/video/compress.ts b/src/lib/media/video/compress.ts new file mode 100644 index 000000000..60e5e94a0 --- /dev/null +++ b/src/lib/media/video/compress.ts @@ -0,0 +1,30 @@ +import {getVideoMetaData, Video} from 'react-native-compressor' + +export type CompressedVideo = { + uri: string + size: number +} + +export async function compressVideo( + file: string, + opts?: { + getCancellationId?: (id: string) => void + onProgress?: (progress: number) => void + }, +): Promise<CompressedVideo> { + const {onProgress, getCancellationId} = opts || {} + + const compressed = await Video.compress( + file, + { + getCancellationId, + compressionMethod: 'manual', + bitrate: 3_000_000, // 3mbps + maxSize: 1920, + }, + onProgress, + ) + + const info = await getVideoMetaData(compressed) + return {uri: compressed, size: info.size} +} |