about summary refs log tree commit diff
path: root/src/lib/media
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/media')
-rw-r--r--src/lib/media/video/compress.ts17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/lib/media/video/compress.ts b/src/lib/media/video/compress.ts
index e783a8438..ebbbc2034 100644
--- a/src/lib/media/video/compress.ts
+++ b/src/lib/media/video/compress.ts
@@ -1,9 +1,13 @@
 import {getVideoMetaData, Video} from 'react-native-compressor'
+import {ImagePickerAsset} from 'expo-image-picker'
 
+import {SUPPORTED_MIME_TYPES, SupportedMimeTypes} from '#/lib/constants'
 import {CompressedVideo} from './types'
 
+const MIN_SIZE_FOR_COMPRESSION = 1024 * 1024 * 25 // 25mb
+
 export async function compressVideo(
-  file: string,
+  file: ImagePickerAsset,
   opts?: {
     signal?: AbortSignal
     onProgress?: (progress: number) => void
@@ -11,12 +15,21 @@ export async function compressVideo(
 ): Promise<CompressedVideo> {
   const {onProgress, signal} = opts || {}
 
+  const isAcceptableFormat = SUPPORTED_MIME_TYPES.includes(
+    file.mimeType as SupportedMimeTypes,
+  )
+
+  const minimumFileSizeForCompress = isAcceptableFormat
+    ? MIN_SIZE_FOR_COMPRESSION
+    : 0
+
   const compressed = await Video.compress(
-    file,
+    file.uri,
     {
       compressionMethod: 'manual',
       bitrate: 3_000_000, // 3mbps
       maxSize: 1920,
+      minimumFileSizeForCompress,
       getCancellationId: id => {
         if (signal) {
           signal.addEventListener('abort', () => {