react-native-compressor 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +1 -36
  2. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  6. package/android/.gradle/checksums/checksums.lock +0 -0
  7. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  8. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  9. package/android/.idea/jarRepositories.xml +10 -0
  10. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +13 -0
  11. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -0
  12. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -0
  13. package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -0
  14. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
  15. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -0
  16. package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +16 -0
  17. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -0
  18. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -0
  19. package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -0
  20. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -0
  21. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -0
  22. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -0
  23. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -0
  24. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -0
  25. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -0
  26. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -0
  27. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -0
  28. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -0
  29. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -0
  30. package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -0
  31. package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -0
  32. package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -0
  33. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -0
  34. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -0
  35. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -0
  36. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +13 -0
  37. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -0
  38. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
  39. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
  40. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
  41. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
  42. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
  43. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
  44. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
  45. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
  46. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
  47. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
  48. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
  49. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
  51. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
  52. package/android/.idea/libraries/{Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml → Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml} +4 -4
  53. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_1_aar.xml +14 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +13 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +13 -0
  56. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +15 -0
  57. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
  58. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +13 -0
  59. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +13 -0
  60. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
  61. package/android/.idea/libraries/Gradle__io_github_lizhangqu_coreprogress_1_0_2_aar.xml +5 -2
  62. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
  63. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +13 -0
  64. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +13 -0
  65. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +13 -0
  66. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +13 -0
  67. package/android/.idea/modules/android.iml +34 -26
  68. package/android/build.gradle +7 -3
  69. package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +3 -4
  70. package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +1 -37
  71. package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +5 -5
  72. package/android/src/main/java/com/reactnativecompressor/Video/.DS_Store +0 -0
  73. package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression/AutoVideoCompression.java +37 -3
  74. package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.java +38 -2
  75. package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +7 -9
  76. package/ios/Compressor.m +0 -2
  77. package/ios/Video/VideoCompressor.swift +11 -20
  78. package/lib/commonjs/Video/index.js +1 -12
  79. package/lib/commonjs/Video/index.js.map +1 -1
  80. package/lib/module/Video/index.js +0 -8
  81. package/lib/module/Video/index.js.map +1 -1
  82. package/lib/typescript/Video/index.d.ts +0 -3
  83. package/package.json +1 -1
  84. package/src/Video/index.tsx +6 -11
  85. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +0 -13
  86. package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +0 -20
  87. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +0 -16
  88. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
  89. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -18
  90. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -22
  91. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -22
  92. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -22
  93. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -22
  94. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -18
  95. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -18
  96. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -18
  97. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +0 -22
  98. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +0 -13
  99. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +0 -13
  100. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +0 -18
  101. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
  102. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +0 -13
  103. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +0 -13
  104. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
  105. package/android/.idea/libraries/Gradle__com_zolad_videoslimmer_1_0_0_aar.xml +0 -15
  106. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_0.xml +0 -13
  107. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_0.xml +0 -13
  108. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimEncoder.java +0 -629
  109. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimTask.java +0 -59
  110. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimmer.java +0 -20
  111. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/listner/SlimProgressListener.java +0 -6
  112. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/muxer/CodecInputSurface.java +0 -202
  113. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/render/TextureRenderer.java +0 -196
@@ -1,6 +1,5 @@
1
1
  package com.reactnativecompressor;
2
2
 
3
- import android.graphics.Bitmap;
4
3
  import android.media.MediaMetadataRetriever;
5
4
  import android.net.Uri;
6
5
  import android.os.Build;
@@ -10,7 +9,6 @@ import androidx.annotation.NonNull;
10
9
  import androidx.annotation.Nullable;
11
10
  import androidx.annotation.RequiresApi;
12
11
 
13
- import com.facebook.react.bridge.Arguments;
14
12
  import com.facebook.react.bridge.Promise;
15
13
  import com.facebook.react.bridge.ReactApplicationContext;
16
14
  import com.facebook.react.bridge.ReactContext;
@@ -23,10 +21,8 @@ import com.facebook.react.modules.core.DeviceEventManagerModule;
23
21
  import com.reactnativecompressor.Image.ImageCompressor;
24
22
  import com.reactnativecompressor.Image.utils.ImageCompressorOptions;
25
23
  import com.reactnativecompressor.Video.VideoCompressorHelper;
26
- import com.reactnativecompressor.Video.videoslimmer.VideoSlimmer;
27
24
 
28
25
  import static com.reactnativecompressor.Utils.Utils.generateCacheFilePath;
29
- import java.io.ByteArrayOutputStream;
30
26
  import com.reactnativecompressor.Audio.AudioCompressor;
31
27
 
32
28
  @ReactModule(name = CompressorModule.NAME)
@@ -93,39 +89,7 @@ public class CompressorModule extends ReactContextBaseJavaModule {
93
89
 
94
90
  float bitrate = options.bitrate;
95
91
  Log.d("nomi onStart", destinationPath+"onProgress: "+bitrate);
96
- new AudioCompressor().CompressAudio(srcPath, destinationPath, (int) bitrate*1000, new VideoSlimmer.ProgressListener() {
97
-
98
-
99
- @Override
100
- public void onStart() {
101
- //convert start
102
- Log.d("nomi onStart", "onProgress: ");
103
-
104
- }
105
-
106
- @Override
107
- public void onFinish(boolean result) {
108
- //convert finish,result(true is success,false is fail)
109
- promise.resolve(destinationPath);
110
- Log.d("nomi onFinish", "onProgress: ");
111
- }
112
-
113
- @Override
114
- public void onError(String errorMessage) {
115
-
116
- }
117
-
118
- @Override
119
- public void onProgress(float percent) {
120
- WritableMap params = Arguments.createMap();
121
- WritableMap data = Arguments.createMap();
122
- params.putString("uuid", options.uuid);
123
- data.putDouble("progress", percent/100);
124
- params.putMap("data", data);
125
- Log.d("nomi onProgress", "onProgress: "+percent);
126
- sendEvent(reactContext, "videoCompressProgress", params);
127
- }
128
- });
92
+ new AudioCompressor().CompressAudio(srcPath, destinationPath, (int) bitrate*1000);
129
93
 
130
94
  } catch (Exception ex) {
131
95
  promise.reject(ex);
@@ -8,8 +8,8 @@ import com.facebook.react.bridge.ReactApplicationContext;
8
8
  import com.facebook.react.bridge.ReactContext;
9
9
  import com.facebook.react.bridge.WritableMap;
10
10
  import com.facebook.react.modules.core.DeviceEventManagerModule;
11
- import com.reactnativecompressor.Video.videoslimmer.VideoSlimTask;
12
- import com.reactnativecompressor.Video.videoslimmer.VideoSlimmer;
11
+ import numan.dev.videocompressor.VideoCompressTask;
12
+ import numan.dev.videocompressor.VideoCompressor;
13
13
 
14
14
  import java.io.File;
15
15
  import java.util.HashMap;
@@ -19,7 +19,7 @@ import java.util.UUID;
19
19
  public class Utils {
20
20
  static int videoCompressionThreshold=10;
21
21
  static int currentVideoCompression=0;
22
- static Map<String, VideoSlimTask> compressorExports = new HashMap<>();
22
+ static Map<String, VideoCompressTask> compressorExports = new HashMap<>();
23
23
 
24
24
  public static String generateCacheFilePath(String extension, ReactApplicationContext reactContext){
25
25
  File outputDir = reactContext.getCacheDir();
@@ -31,7 +31,7 @@ public class Utils {
31
31
 
32
32
  public static void compressVideo(String srcPath, String destinationPath, int resultWidth, int resultHeight, float videoBitRate, String uuid, Promise promise, ReactApplicationContext reactContext){
33
33
  try{
34
- VideoSlimTask export=VideoSlimmer.convertVideo(srcPath, destinationPath, resultWidth, resultHeight, (int) videoBitRate, new VideoSlimmer.ProgressListener() {
34
+ VideoCompressTask export=VideoCompressor.convertVideo(srcPath, destinationPath, resultWidth, resultHeight, (int) videoBitRate, new VideoCompressor.ProgressListener() {
35
35
  @Override
36
36
  public void onStart() {
37
37
  //convert start
@@ -72,7 +72,7 @@ public class Utils {
72
72
 
73
73
  public static void cancelCompressionHelper(String uuid){
74
74
  try{
75
- VideoSlimTask export=compressorExports.get(uuid);
75
+ VideoCompressTask export=compressorExports.get(uuid);
76
76
  export.cancel(true);
77
77
  }
78
78
  catch (Exception ex) {
@@ -1,23 +1,30 @@
1
1
  package com.reactnativecompressor.Video.AutoVideoCompression;
2
2
 
3
+ import android.media.MediaCodecInfo;
3
4
  import android.media.MediaMetadataRetriever;
5
+ import android.media.session.MediaController;
4
6
  import android.net.Uri;
7
+ import android.os.Build;
5
8
 
6
9
  import androidx.annotation.Nullable;
7
10
 
11
+ import com.facebook.react.bridge.Arguments;
8
12
  import com.facebook.react.bridge.Promise;
9
13
  import com.facebook.react.bridge.ReactApplicationContext;
10
14
  import com.facebook.react.bridge.ReactContext;
11
15
  import com.facebook.react.bridge.WritableMap;
12
16
  import com.facebook.react.modules.core.DeviceEventManagerModule;
13
17
  import com.reactnativecompressor.Video.VideoCompressorHelper;
14
- import static com.reactnativecompressor.Utils.Utils.compressVideo;
18
+ import com.zolad.videoslimmer.VideoSlimmer;
15
19
 
16
20
  import java.io.File;
17
21
 
18
22
  import static com.reactnativecompressor.Utils.Utils.generateCacheFilePath;
19
23
 
20
24
  public class AutoVideoCompression {
25
+ static int videoCompressionThreshold=10;
26
+ static int currentVideoCompression=0;
27
+
21
28
  public static void createCompressionSettings(String fileUrl,VideoCompressorHelper options,Promise promise, ReactApplicationContext reactContext) {
22
29
  float maxSize = options.maxSize;
23
30
  float minimumFileSizeForCompress=options.minimumFileSizeForCompress;
@@ -45,16 +52,43 @@ public class AutoVideoCompression {
45
52
  bitrate,
46
53
  resultHeight, resultWidth
47
54
  );
48
- compressVideo(srcPath, destinationPath, resultWidth, resultHeight, videoBitRate,options.uuid,promise,reactContext);
55
+
56
+ VideoSlimmer.convertVideo(srcPath, destinationPath, resultWidth, resultHeight, (int) videoBitRate, new VideoSlimmer.ProgressListener() {
57
+ @Override
58
+ public void onStart() {
59
+ //convert start
60
+ }
61
+ @Override
62
+ public void onFinish(boolean result) {
63
+ //convert finish,result(true is success,false is fail)
64
+ promise.resolve("file:/"+destinationPath);
65
+ }
66
+ @Override
67
+ public void onProgress(float percent) {
68
+ int roundProgress=Math.round(percent);
69
+ if(roundProgress%videoCompressionThreshold==0&&roundProgress>currentVideoCompression) {
70
+ WritableMap params = Arguments.createMap();
71
+ WritableMap data = Arguments.createMap();
72
+ params.putString("uuid", options.uuid);
73
+ data.putDouble("progress", percent / 100);
74
+ params.putMap("data", data);
75
+ sendEvent(reactContext, "videoCompressProgress", params);
76
+ currentVideoCompression=roundProgress;
77
+ }
78
+ }
79
+ });
80
+
49
81
  }
50
82
  else
51
83
  {
52
84
  promise.resolve(fileUrl);
53
85
  }
54
-
55
86
  } catch (Exception ex) {
56
87
  promise.reject(ex);
57
88
  }
89
+ finally {
90
+ currentVideoCompression=0;
91
+ }
58
92
  }
59
93
 
60
94
  public static int makeVideoBitrate(int originalHeight, int originalWidth, int originalBitrate, int height, int width) {
@@ -8,6 +8,7 @@ import android.os.PowerManager;
8
8
 
9
9
  import androidx.annotation.Nullable;
10
10
 
11
+ import com.facebook.react.bridge.Arguments;
11
12
  import com.facebook.react.bridge.LifecycleEventListener;
12
13
  import com.facebook.react.bridge.Promise;
13
14
  import com.facebook.react.bridge.ReactApplicationContext;
@@ -16,12 +17,13 @@ import com.facebook.react.bridge.ReadableMap;
16
17
  import com.facebook.react.bridge.ReadableMapKeySetIterator;
17
18
  import com.facebook.react.bridge.WritableMap;
18
19
  import com.facebook.react.modules.core.DeviceEventManagerModule;
20
+ import com.reactnativecompressor.Image.utils.ImageCompressorOptions;
19
21
  import com.reactnativecompressor.Utils.FileUplaoder.FileUploader;
20
22
  import com.reactnativecompressor.Video.AutoVideoCompression.AutoVideoCompression;
23
+ import com.zolad.videoslimmer.VideoSlimmer;
21
24
 
22
25
  import java.util.UUID;
23
26
 
24
- import static com.reactnativecompressor.Utils.Utils.compressVideo;
25
27
  import static com.reactnativecompressor.Utils.Utils.generateCacheFilePath;
26
28
 
27
29
  public class VideoCompressorHelper {
@@ -164,10 +166,44 @@ public class VideoCompressorHelper {
164
166
  }
165
167
  }
166
168
  float videoBitRate = (options.bitrate>0)?options.bitrate: (float) (height * width * 1.5);
167
- compressVideo(srcPath, destinationPath, width, height, videoBitRate,options.uuid,promise,reactContext);
169
+
170
+ VideoSlimmer.convertVideo(srcPath, destinationPath, width, height, (int) videoBitRate, new VideoSlimmer.ProgressListener() {
171
+
172
+
173
+ @Override
174
+ public void onStart() {
175
+ //convert start
176
+
177
+ }
178
+
179
+ @Override
180
+ public void onFinish(boolean result) {
181
+ //convert finish,result(true is success,false is fail)
182
+ promise.resolve("file:/"+destinationPath);
183
+ }
184
+
185
+
186
+ @Override
187
+ public void onProgress(float percent) {
188
+ int roundProgress=Math.round(percent);
189
+ if(roundProgress%videoCompressionThreshold==0&&roundProgress>currentVideoCompression) {
190
+ WritableMap params = Arguments.createMap();
191
+ WritableMap data = Arguments.createMap();
192
+ params.putString("uuid", options.uuid);
193
+ data.putDouble("progress", percent / 100);
194
+ params.putMap("data", data);
195
+ sendEvent(reactContext, "videoCompressProgress", params);
196
+ currentVideoCompression=roundProgress;
197
+ }
198
+ }
199
+ });
200
+
168
201
  } catch (Exception ex) {
169
202
  promise.reject(ex);
170
203
  }
204
+ finally {
205
+ currentVideoCompression=0;
206
+ }
171
207
  }
172
208
 
173
209
 
@@ -1,10 +1,12 @@
1
1
  package com.reactnativecompressor.Video;
2
2
 
3
- import android.util.Log;
3
+ import android.media.MediaMetadataRetriever;
4
+ import android.net.Uri;
4
5
 
5
6
  import androidx.annotation.NonNull;
6
7
  import androidx.annotation.Nullable;
7
8
 
9
+ import com.facebook.react.bridge.Arguments;
8
10
  import com.facebook.react.bridge.Promise;
9
11
  import com.facebook.react.bridge.ReactApplicationContext;
10
12
  import com.facebook.react.bridge.ReactContext;
@@ -14,11 +16,14 @@ import com.facebook.react.bridge.ReadableMap;
14
16
  import com.facebook.react.bridge.WritableMap;
15
17
  import com.facebook.react.module.annotations.ReactModule;
16
18
  import com.facebook.react.modules.core.DeviceEventManagerModule;
19
+ import com.reactnativecompressor.Image.utils.ImageCompressorOptions;
20
+ import com.zolad.videoslimmer.VideoSlimmer;
17
21
 
22
+ import static com.reactnativecompressor.Utils.Utils.generateCacheFilePath;
18
23
  import static com.reactnativecompressor.Video.VideoCompressorHelper.video_activateBackgroundTask_helper;
19
24
  import static com.reactnativecompressor.Video.VideoCompressorHelper.video_deactivateBackgroundTask_helper;
20
25
  import static com.reactnativecompressor.Video.VideoCompressorHelper.video_upload_helper;
21
- import static com.reactnativecompressor.Utils.Utils.cancelCompressionHelper;
26
+
22
27
  @ReactModule(name = VideoModule.NAME)
23
28
  public class VideoModule extends ReactContextBaseJavaModule {
24
29
  public static final String NAME = "VideoCompressor";
@@ -62,13 +67,6 @@ public class VideoModule extends ReactContextBaseJavaModule {
62
67
 
63
68
  }
64
69
 
65
- @ReactMethod
66
- public void cancelCompression(
67
- String uuid) {
68
- cancelCompressionHelper(uuid);
69
- Log.d("cancelCompression", uuid);
70
- }
71
-
72
70
  @ReactMethod
73
71
  public void upload(
74
72
  String fileUrl,
package/ios/Compressor.m CHANGED
@@ -239,7 +239,5 @@ RCT_EXTERN_METHOD(deactivateBackgroundTask: (NSDictionary *)options
239
239
  withResolver:(RCTPromiseResolveBlock)resolve
240
240
  withRejecter:(RCTPromiseRejectBlock)reject)
241
241
 
242
- RCT_EXTERN_METHOD(cancelCompression:(NSString *)uuid)
243
-
244
242
  @end
245
243
 
@@ -34,7 +34,6 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
34
34
  var hasListener: Bool=false
35
35
  var uploadResolvers: [String: RCTPromiseResolveBlock] = [:]
36
36
  var uploadRejectors: [String: RCTPromiseRejectBlock] = [:]
37
- var compressorExports: [String: NextLevelSessionExporter] = [:]
38
37
  let videoCompressionThreshold:Int=7
39
38
  var videoCompressionCounter:Int=0
40
39
 
@@ -84,11 +83,6 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
84
83
  })
85
84
  }
86
85
 
87
- @objc(cancelCompression:)
88
- func cancelCompression(uuid: String) -> Void {
89
- compressorExports[uuid]?.cancelExport()
90
- }
91
-
92
86
  func makeValidUri(filePath: String) -> String {
93
87
  let fileWithUrl = URL(fileURLWithPath: filePath)
94
88
  let absoluteUrl = fileWithUrl.deletingLastPathComponent()
@@ -225,7 +219,7 @@ func makeValidUri(filePath: String) -> String {
225
219
  }
226
220
  else
227
221
  {
228
- manualCompressionHelper(url: url, options:options) { progress in
222
+ manualCompressionHelper(url: url, bitRate: options["bitrate"] as! Float?) { progress in
229
223
  onProgress(progress)
230
224
  } onCompletion: { outputURL in
231
225
  onCompletion(outputURL)
@@ -269,7 +263,6 @@ func makeValidUri(filePath: String) -> String {
269
263
 
270
264
  func autoCompressionHelper(url: URL, options: [String: Any], onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
271
265
  let maxSize:Float = options["maxSize"] as! Float;
272
- let uuid:String = options["uuid"] as! String
273
266
 
274
267
  let asset = AVAsset(url: url)
275
268
  guard asset.tracks.count >= 1 else {
@@ -293,8 +286,8 @@ func makeValidUri(filePath: String) -> String {
293
286
  originalBitrate: Int(bitrate),
294
287
  height: Int(resultHeight), width: Int(resultWidth)
295
288
  );
296
-
297
- exportVideoHelper(url: url, asset: asset, bitRate: videoBitRate, resultWidth: resultWidth, resultHeight: resultHeight,uuid: uuid) { progress in
289
+
290
+ exportVideoHelper(url: url, asset: asset, bitRate: videoBitRate, resultWidth: resultWidth, resultHeight: resultHeight) { progress in
298
291
  onProgress(progress)
299
292
  } onCompletion: { outputURL in
300
293
  onCompletion(outputURL)
@@ -303,9 +296,9 @@ func makeValidUri(filePath: String) -> String {
303
296
  }
304
297
  }
305
298
 
306
- func manualCompressionHelper(url: URL, options: [String: Any], onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
307
- let uuid:String = options["uuid"] as! String
308
- var bitRate=options["bitrate"] as! Float?;
299
+ func manualCompressionHelper(url: URL, bitRate: Float?, onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
300
+
301
+ var _bitRate=bitRate;
309
302
  let asset = AVAsset(url: url)
310
303
  guard asset.tracks.count >= 1 else {
311
304
  let error = CompressionError(message: "Invalid video URL, no track found")
@@ -328,12 +321,12 @@ func makeValidUri(filePath: String) -> String {
328
321
  }
329
322
  else
330
323
  {
331
- bitRate=bitRate ?? Float(abs(track.estimatedDataRate))*0.8
324
+ _bitRate=bitRate ?? Float(abs(track.estimatedDataRate))*0.8
332
325
  }
333
326
 
334
- let videoBitRate = bitRate ?? height*width*1.5
327
+ let videoBitRate = _bitRate ?? height*width*1.5
335
328
 
336
- exportVideoHelper(url: url, asset: asset, bitRate: Int(videoBitRate), resultWidth: width, resultHeight: height,uuid: uuid) { progress in
329
+ exportVideoHelper(url: url, asset: asset, bitRate: Int(videoBitRate), resultWidth: width, resultHeight: height) { progress in
337
330
  onProgress(progress)
338
331
  } onCompletion: { outputURL in
339
332
  onCompletion(outputURL)
@@ -342,7 +335,7 @@ func makeValidUri(filePath: String) -> String {
342
335
  }
343
336
  }
344
337
 
345
- func exportVideoHelper(url: URL,asset: AVAsset, bitRate: Int,resultWidth:Float,resultHeight:Float,uuid:String, onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
338
+ func exportVideoHelper(url: URL,asset: AVAsset, bitRate: Int,resultWidth:Float,resultHeight:Float, onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
346
339
  var tmpURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
347
340
  .appendingPathComponent(ProcessInfo().globallyUniqueString)
348
341
  .appendingPathExtension("mp4")
@@ -371,7 +364,7 @@ func makeValidUri(filePath: String) -> String {
371
364
  AVSampleRateKey: NSNumber(value: Float(44100))
372
365
  ]
373
366
 
374
- compressorExports[uuid] = exporter
367
+
375
368
  exporter.export(progressHandler: { (progress) in
376
369
  let _progress:Float=progress*100;
377
370
  if(Int(_progress)==self.videoCompressionCounter)
@@ -410,6 +403,4 @@ func makeValidUri(filePath: String) -> String {
410
403
  let track = asset.tracks[videoTrackIndex];
411
404
  return track;
412
405
  }
413
-
414
-
415
406
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.cancelCompression = exports.backgroundUpload = void 0;
6
+ exports.default = exports.backgroundUpload = void 0;
7
7
 
8
8
  var _reactNative = require("react-native");
9
9
 
@@ -45,12 +45,6 @@ const backgroundUpload = async (url, fileUrl, options, onProgress) => {
45
45
  };
46
46
 
47
47
  exports.backgroundUpload = backgroundUpload;
48
-
49
- const cancelCompression = cancellationId => {
50
- return NativeVideoCompressor.cancelCompression(cancellationId);
51
- };
52
-
53
- exports.cancelCompression = cancelCompression;
54
48
  const Video = {
55
49
  compress: async (fileUrl, options, onProgress) => {
56
50
  const uuid = (0, _utils.uuidv4)();
@@ -86,10 +80,6 @@ const Video = {
86
80
  modifiedOptions.minimumFileSizeForCompress = options === null || options === void 0 ? void 0 : options.minimumFileSizeForCompress;
87
81
  }
88
82
 
89
- if (options !== null && options !== void 0 && options.getCancellationId) {
90
- options === null || options === void 0 ? void 0 : options.getCancellationId(uuid);
91
- }
92
-
93
83
  const result = await NativeVideoCompressor.compress(fileUrl, modifiedOptions);
94
84
  return result;
95
85
  } finally {
@@ -100,7 +90,6 @@ const Video = {
100
90
  }
101
91
  },
102
92
  backgroundUpload,
103
- cancelCompression,
104
93
 
105
94
  activateBackgroundTask(onExpired) {
106
95
  if (onExpired) {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["VideoCompressEventEmitter","NativeEventEmitter","NativeModules","VideoCompressor","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","subscription","addListener","event","data","written","total","Platform","OS","includes","replace","result","upload","method","httpMethod","headers","remove","cancelCompression","cancellationId","Video","compress","progress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","getCancellationId","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners"],"mappings":"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","sourcesContent":["import {\n NativeModules,\n NativeEventEmitter,\n Platform,\n NativeEventSubscription,\n} from 'react-native';\nimport { uuidv4 } from '../utils';\n\nexport declare enum FileSystemUploadType {\n BINARY_CONTENT = 0,\n MULTIPART = 1,\n}\n\nexport declare type FileSystemAcceptedUploadHttpMethod =\n | 'POST'\n | 'PUT'\n | 'PATCH';\nexport type compressionMethod = 'auto' | 'manual';\ntype videoCompresssionType = {\n bitrate?: number;\n maxSize?: number;\n compressionMethod?: compressionMethod;\n minimumFileSizeForCompress?: number;\n getCancellationId?: (cancellationId: string) => void;\n};\n\nexport declare enum FileSystemSessionType {\n BACKGROUND = 0,\n FOREGROUND = 1,\n}\n\nexport declare type HTTPResponse = {\n status: number;\n headers: Record<string, string>;\n body: string;\n};\n\nexport declare type FileSystemUploadOptions = (\n | {\n uploadType?: FileSystemUploadType.BINARY_CONTENT;\n }\n | {\n uploadType: FileSystemUploadType.MULTIPART;\n fieldName?: string;\n mimeType?: string;\n parameters?: Record<string, string>;\n }\n) & {\n headers?: Record<string, string>;\n httpMethod?: FileSystemAcceptedUploadHttpMethod;\n sessionType?: FileSystemSessionType;\n};\n\nexport type VideoCompressorType = {\n compress(\n fileUrl: string,\n options?: videoCompresssionType,\n onProgress?: (progress: number) => void\n ): Promise<string>;\n cancelCompression(cancellationId: string): void;\n backgroundUpload(\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n ): Promise<any>;\n activateBackgroundTask(onExpired?: (data: any) => void): Promise<any>;\n deactivateBackgroundTask(): Promise<any>;\n};\n\nconst VideoCompressEventEmitter = new NativeEventEmitter(\n NativeModules.VideoCompressor\n);\n\nconst NativeVideoCompressor = NativeModules.VideoCompressor;\n\nexport const backgroundUpload = async (\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n): Promise<any> => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'VideoCompressorProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.written, event.data.total);\n }\n }\n );\n }\n if (Platform.OS === 'android' && fileUrl.includes('file://')) {\n fileUrl = fileUrl.replace('file://', '');\n }\n const result = await NativeVideoCompressor.upload(fileUrl, {\n uuid,\n method: options.httpMethod,\n headers: options.headers,\n url,\n });\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n};\n\nexport const cancelCompression = (cancellationId: string) => {\n return NativeVideoCompressor.cancelCompression(cancellationId);\n};\n\nconst Video: VideoCompressorType = {\n compress: async (\n fileUrl: string,\n options?: videoCompresssionType,\n onProgress?: (progress: number) => void\n ) => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'videoCompressProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.progress);\n }\n }\n );\n }\n const modifiedOptions: {\n uuid: string;\n bitrate?: number;\n compressionMethod?: compressionMethod;\n maxSize?: number;\n minimumFileSizeForCompress?: number;\n } = { uuid };\n if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate;\n if (options?.compressionMethod) {\n modifiedOptions.compressionMethod = options?.compressionMethod;\n } else {\n modifiedOptions.compressionMethod = 'manual';\n }\n if (options?.maxSize) {\n modifiedOptions.maxSize = options?.maxSize;\n } else {\n modifiedOptions.maxSize = 640;\n }\n if (options?.minimumFileSizeForCompress) {\n modifiedOptions.minimumFileSizeForCompress =\n options?.minimumFileSizeForCompress;\n }\n if (options?.getCancellationId) {\n options?.getCancellationId(uuid);\n }\n const result = await NativeVideoCompressor.compress(\n fileUrl,\n modifiedOptions\n );\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n },\n backgroundUpload,\n cancelCompression,\n activateBackgroundTask(onExpired?) {\n if (onExpired) {\n const subscription: NativeEventSubscription =\n VideoCompressEventEmitter.addListener(\n 'backgroundTaskExpired',\n (event: any) => {\n onExpired(event);\n if (subscription) {\n subscription.remove();\n }\n }\n );\n }\n return NativeVideoCompressor.activateBackgroundTask({});\n },\n deactivateBackgroundTask() {\n VideoCompressEventEmitter.removeAllListeners('backgroundTaskExpired');\n return NativeVideoCompressor.deactivateBackgroundTask({});\n },\n} as VideoCompressorType;\n\nexport default Video;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["VideoCompressEventEmitter","NativeEventEmitter","NativeModules","VideoCompressor","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","subscription","addListener","event","data","written","total","Platform","OS","includes","replace","result","upload","method","httpMethod","headers","remove","Video","compress","progress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners"],"mappings":"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","sourcesContent":["import {\n NativeModules,\n NativeEventEmitter,\n Platform,\n NativeEventSubscription,\n} from 'react-native';\nimport { uuidv4 } from '../utils';\n\nexport declare enum FileSystemUploadType {\n BINARY_CONTENT = 0,\n MULTIPART = 1,\n}\n\nexport declare type FileSystemAcceptedUploadHttpMethod =\n | 'POST'\n | 'PUT'\n | 'PATCH';\nexport type compressionMethod = 'auto' | 'manual';\ntype videoCompresssionType = {\n bitrate?: number;\n maxSize?: number;\n compressionMethod?: compressionMethod;\n minimumFileSizeForCompress?: number;\n};\n\nexport declare enum FileSystemSessionType {\n BACKGROUND = 0,\n FOREGROUND = 1,\n}\n\nexport declare type HTTPResponse = {\n status: number;\n headers: Record<string, string>;\n body: string;\n};\n\nexport declare type FileSystemUploadOptions = (\n | {\n uploadType?: FileSystemUploadType.BINARY_CONTENT;\n }\n | {\n uploadType: FileSystemUploadType.MULTIPART;\n fieldName?: string;\n mimeType?: string;\n parameters?: Record<string, string>;\n }\n) & {\n headers?: Record<string, string>;\n httpMethod?: FileSystemAcceptedUploadHttpMethod;\n sessionType?: FileSystemSessionType;\n};\n\nexport type VideoCompressorType = {\n compress(\n fileUrl: string,\n options?: videoCompresssionType,\n onProgress?: (progress: number) => void\n ): Promise<string>;\n backgroundUpload(\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n ): Promise<any>;\n activateBackgroundTask(onExpired?: (data: any) => void): Promise<any>;\n deactivateBackgroundTask(): Promise<any>;\n};\n\nconst VideoCompressEventEmitter = new NativeEventEmitter(\n NativeModules.VideoCompressor\n);\n\nconst NativeVideoCompressor = NativeModules.VideoCompressor;\n\nexport const backgroundUpload = async (\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n): Promise<any> => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'VideoCompressorProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.written, event.data.total);\n }\n }\n );\n }\n if (Platform.OS === 'android' && fileUrl.includes('file://')) {\n fileUrl = fileUrl.replace('file://', '');\n }\n const result = await NativeVideoCompressor.upload(fileUrl, {\n uuid,\n method: options.httpMethod,\n headers: options.headers,\n url,\n });\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n};\n\nconst Video: VideoCompressorType = {\n compress: async (\n fileUrl: string,\n options?: {\n bitrate?: number;\n compressionMethod?: compressionMethod;\n maxSize?: number;\n minimumFileSizeForCompress?: number;\n },\n onProgress?: (progress: number) => void\n ) => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'videoCompressProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.progress);\n }\n }\n );\n }\n const modifiedOptions: {\n uuid: string;\n bitrate?: number;\n compressionMethod?: compressionMethod;\n maxSize?: number;\n minimumFileSizeForCompress?: number;\n } = { uuid };\n if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate;\n if (options?.compressionMethod) {\n modifiedOptions.compressionMethod = options?.compressionMethod;\n } else {\n modifiedOptions.compressionMethod = 'manual';\n }\n if (options?.maxSize) {\n modifiedOptions.maxSize = options?.maxSize;\n } else {\n modifiedOptions.maxSize = 640;\n }\n if (options?.minimumFileSizeForCompress) {\n modifiedOptions.minimumFileSizeForCompress =\n options?.minimumFileSizeForCompress;\n }\n const result = await NativeVideoCompressor.compress(\n fileUrl,\n modifiedOptions\n );\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n },\n backgroundUpload,\n activateBackgroundTask(onExpired?) {\n if (onExpired) {\n const subscription: NativeEventSubscription =\n VideoCompressEventEmitter.addListener(\n 'backgroundTaskExpired',\n (event: any) => {\n onExpired(event);\n if (subscription) {\n subscription.remove();\n }\n }\n );\n }\n return NativeVideoCompressor.activateBackgroundTask({});\n },\n deactivateBackgroundTask() {\n VideoCompressEventEmitter.removeAllListeners('backgroundTaskExpired');\n return NativeVideoCompressor.deactivateBackgroundTask({});\n },\n} as VideoCompressorType;\n\nexport default Video;\n"]}
@@ -33,9 +33,6 @@ export const backgroundUpload = async (url, fileUrl, options, onProgress) => {
33
33
  }
34
34
  }
35
35
  };
36
- export const cancelCompression = cancellationId => {
37
- return NativeVideoCompressor.cancelCompression(cancellationId);
38
- };
39
36
  const Video = {
40
37
  compress: async (fileUrl, options, onProgress) => {
41
38
  const uuid = uuidv4();
@@ -71,10 +68,6 @@ const Video = {
71
68
  modifiedOptions.minimumFileSizeForCompress = options === null || options === void 0 ? void 0 : options.minimumFileSizeForCompress;
72
69
  }
73
70
 
74
- if (options !== null && options !== void 0 && options.getCancellationId) {
75
- options === null || options === void 0 ? void 0 : options.getCancellationId(uuid);
76
- }
77
-
78
71
  const result = await NativeVideoCompressor.compress(fileUrl, modifiedOptions);
79
72
  return result;
80
73
  } finally {
@@ -85,7 +78,6 @@ const Video = {
85
78
  }
86
79
  },
87
80
  backgroundUpload,
88
- cancelCompression,
89
81
 
90
82
  activateBackgroundTask(onExpired) {
91
83
  if (onExpired) {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","uuidv4","VideoCompressEventEmitter","VideoCompressor","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","subscription","addListener","event","data","written","total","OS","includes","replace","result","upload","method","httpMethod","headers","remove","cancelCompression","cancellationId","Video","compress","progress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","getCancellationId","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners"],"mappings":"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","sourcesContent":["import {\n NativeModules,\n NativeEventEmitter,\n Platform,\n NativeEventSubscription,\n} from 'react-native';\nimport { uuidv4 } from '../utils';\n\nexport declare enum FileSystemUploadType {\n BINARY_CONTENT = 0,\n MULTIPART = 1,\n}\n\nexport declare type FileSystemAcceptedUploadHttpMethod =\n | 'POST'\n | 'PUT'\n | 'PATCH';\nexport type compressionMethod = 'auto' | 'manual';\ntype videoCompresssionType = {\n bitrate?: number;\n maxSize?: number;\n compressionMethod?: compressionMethod;\n minimumFileSizeForCompress?: number;\n getCancellationId?: (cancellationId: string) => void;\n};\n\nexport declare enum FileSystemSessionType {\n BACKGROUND = 0,\n FOREGROUND = 1,\n}\n\nexport declare type HTTPResponse = {\n status: number;\n headers: Record<string, string>;\n body: string;\n};\n\nexport declare type FileSystemUploadOptions = (\n | {\n uploadType?: FileSystemUploadType.BINARY_CONTENT;\n }\n | {\n uploadType: FileSystemUploadType.MULTIPART;\n fieldName?: string;\n mimeType?: string;\n parameters?: Record<string, string>;\n }\n) & {\n headers?: Record<string, string>;\n httpMethod?: FileSystemAcceptedUploadHttpMethod;\n sessionType?: FileSystemSessionType;\n};\n\nexport type VideoCompressorType = {\n compress(\n fileUrl: string,\n options?: videoCompresssionType,\n onProgress?: (progress: number) => void\n ): Promise<string>;\n cancelCompression(cancellationId: string): void;\n backgroundUpload(\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n ): Promise<any>;\n activateBackgroundTask(onExpired?: (data: any) => void): Promise<any>;\n deactivateBackgroundTask(): Promise<any>;\n};\n\nconst VideoCompressEventEmitter = new NativeEventEmitter(\n NativeModules.VideoCompressor\n);\n\nconst NativeVideoCompressor = NativeModules.VideoCompressor;\n\nexport const backgroundUpload = async (\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n): Promise<any> => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'VideoCompressorProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.written, event.data.total);\n }\n }\n );\n }\n if (Platform.OS === 'android' && fileUrl.includes('file://')) {\n fileUrl = fileUrl.replace('file://', '');\n }\n const result = await NativeVideoCompressor.upload(fileUrl, {\n uuid,\n method: options.httpMethod,\n headers: options.headers,\n url,\n });\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n};\n\nexport const cancelCompression = (cancellationId: string) => {\n return NativeVideoCompressor.cancelCompression(cancellationId);\n};\n\nconst Video: VideoCompressorType = {\n compress: async (\n fileUrl: string,\n options?: videoCompresssionType,\n onProgress?: (progress: number) => void\n ) => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'videoCompressProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.progress);\n }\n }\n );\n }\n const modifiedOptions: {\n uuid: string;\n bitrate?: number;\n compressionMethod?: compressionMethod;\n maxSize?: number;\n minimumFileSizeForCompress?: number;\n } = { uuid };\n if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate;\n if (options?.compressionMethod) {\n modifiedOptions.compressionMethod = options?.compressionMethod;\n } else {\n modifiedOptions.compressionMethod = 'manual';\n }\n if (options?.maxSize) {\n modifiedOptions.maxSize = options?.maxSize;\n } else {\n modifiedOptions.maxSize = 640;\n }\n if (options?.minimumFileSizeForCompress) {\n modifiedOptions.minimumFileSizeForCompress =\n options?.minimumFileSizeForCompress;\n }\n if (options?.getCancellationId) {\n options?.getCancellationId(uuid);\n }\n const result = await NativeVideoCompressor.compress(\n fileUrl,\n modifiedOptions\n );\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n },\n backgroundUpload,\n cancelCompression,\n activateBackgroundTask(onExpired?) {\n if (onExpired) {\n const subscription: NativeEventSubscription =\n VideoCompressEventEmitter.addListener(\n 'backgroundTaskExpired',\n (event: any) => {\n onExpired(event);\n if (subscription) {\n subscription.remove();\n }\n }\n );\n }\n return NativeVideoCompressor.activateBackgroundTask({});\n },\n deactivateBackgroundTask() {\n VideoCompressEventEmitter.removeAllListeners('backgroundTaskExpired');\n return NativeVideoCompressor.deactivateBackgroundTask({});\n },\n} as VideoCompressorType;\n\nexport default Video;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","uuidv4","VideoCompressEventEmitter","VideoCompressor","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","subscription","addListener","event","data","written","total","OS","includes","replace","result","upload","method","httpMethod","headers","remove","Video","compress","progress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners"],"mappings":"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","sourcesContent":["import {\n NativeModules,\n NativeEventEmitter,\n Platform,\n NativeEventSubscription,\n} from 'react-native';\nimport { uuidv4 } from '../utils';\n\nexport declare enum FileSystemUploadType {\n BINARY_CONTENT = 0,\n MULTIPART = 1,\n}\n\nexport declare type FileSystemAcceptedUploadHttpMethod =\n | 'POST'\n | 'PUT'\n | 'PATCH';\nexport type compressionMethod = 'auto' | 'manual';\ntype videoCompresssionType = {\n bitrate?: number;\n maxSize?: number;\n compressionMethod?: compressionMethod;\n minimumFileSizeForCompress?: number;\n};\n\nexport declare enum FileSystemSessionType {\n BACKGROUND = 0,\n FOREGROUND = 1,\n}\n\nexport declare type HTTPResponse = {\n status: number;\n headers: Record<string, string>;\n body: string;\n};\n\nexport declare type FileSystemUploadOptions = (\n | {\n uploadType?: FileSystemUploadType.BINARY_CONTENT;\n }\n | {\n uploadType: FileSystemUploadType.MULTIPART;\n fieldName?: string;\n mimeType?: string;\n parameters?: Record<string, string>;\n }\n) & {\n headers?: Record<string, string>;\n httpMethod?: FileSystemAcceptedUploadHttpMethod;\n sessionType?: FileSystemSessionType;\n};\n\nexport type VideoCompressorType = {\n compress(\n fileUrl: string,\n options?: videoCompresssionType,\n onProgress?: (progress: number) => void\n ): Promise<string>;\n backgroundUpload(\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n ): Promise<any>;\n activateBackgroundTask(onExpired?: (data: any) => void): Promise<any>;\n deactivateBackgroundTask(): Promise<any>;\n};\n\nconst VideoCompressEventEmitter = new NativeEventEmitter(\n NativeModules.VideoCompressor\n);\n\nconst NativeVideoCompressor = NativeModules.VideoCompressor;\n\nexport const backgroundUpload = async (\n url: string,\n fileUrl: string,\n options: FileSystemUploadOptions,\n onProgress?: (writtem: number, total: number) => void\n): Promise<any> => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'VideoCompressorProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.written, event.data.total);\n }\n }\n );\n }\n if (Platform.OS === 'android' && fileUrl.includes('file://')) {\n fileUrl = fileUrl.replace('file://', '');\n }\n const result = await NativeVideoCompressor.upload(fileUrl, {\n uuid,\n method: options.httpMethod,\n headers: options.headers,\n url,\n });\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n};\n\nconst Video: VideoCompressorType = {\n compress: async (\n fileUrl: string,\n options?: {\n bitrate?: number;\n compressionMethod?: compressionMethod;\n maxSize?: number;\n minimumFileSizeForCompress?: number;\n },\n onProgress?: (progress: number) => void\n ) => {\n const uuid = uuidv4();\n let subscription: NativeEventSubscription;\n try {\n if (onProgress) {\n subscription = VideoCompressEventEmitter.addListener(\n 'videoCompressProgress',\n (event: any) => {\n if (event.uuid === uuid) {\n onProgress(event.data.progress);\n }\n }\n );\n }\n const modifiedOptions: {\n uuid: string;\n bitrate?: number;\n compressionMethod?: compressionMethod;\n maxSize?: number;\n minimumFileSizeForCompress?: number;\n } = { uuid };\n if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate;\n if (options?.compressionMethod) {\n modifiedOptions.compressionMethod = options?.compressionMethod;\n } else {\n modifiedOptions.compressionMethod = 'manual';\n }\n if (options?.maxSize) {\n modifiedOptions.maxSize = options?.maxSize;\n } else {\n modifiedOptions.maxSize = 640;\n }\n if (options?.minimumFileSizeForCompress) {\n modifiedOptions.minimumFileSizeForCompress =\n options?.minimumFileSizeForCompress;\n }\n const result = await NativeVideoCompressor.compress(\n fileUrl,\n modifiedOptions\n );\n return result;\n } finally {\n // @ts-ignore\n if (subscription) {\n subscription.remove();\n }\n }\n },\n backgroundUpload,\n activateBackgroundTask(onExpired?) {\n if (onExpired) {\n const subscription: NativeEventSubscription =\n VideoCompressEventEmitter.addListener(\n 'backgroundTaskExpired',\n (event: any) => {\n onExpired(event);\n if (subscription) {\n subscription.remove();\n }\n }\n );\n }\n return NativeVideoCompressor.activateBackgroundTask({});\n },\n deactivateBackgroundTask() {\n VideoCompressEventEmitter.removeAllListeners('backgroundTaskExpired');\n return NativeVideoCompressor.deactivateBackgroundTask({});\n },\n} as VideoCompressorType;\n\nexport default Video;\n"]}
@@ -9,7 +9,6 @@ declare type videoCompresssionType = {
9
9
  maxSize?: number;
10
10
  compressionMethod?: compressionMethod;
11
11
  minimumFileSizeForCompress?: number;
12
- getCancellationId?: (cancellationId: string) => void;
13
12
  };
14
13
  export declare enum FileSystemSessionType {
15
14
  BACKGROUND = 0,
@@ -34,12 +33,10 @@ export declare type FileSystemUploadOptions = ({
34
33
  };
35
34
  export declare type VideoCompressorType = {
36
35
  compress(fileUrl: string, options?: videoCompresssionType, onProgress?: (progress: number) => void): Promise<string>;
37
- cancelCompression(cancellationId: string): void;
38
36
  backgroundUpload(url: string, fileUrl: string, options: FileSystemUploadOptions, onProgress?: (writtem: number, total: number) => void): Promise<any>;
39
37
  activateBackgroundTask(onExpired?: (data: any) => void): Promise<any>;
40
38
  deactivateBackgroundTask(): Promise<any>;
41
39
  };
42
40
  export declare const backgroundUpload: (url: string, fileUrl: string, options: FileSystemUploadOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise<any>;
43
- export declare const cancelCompression: (cancellationId: string) => any;
44
41
  declare const Video: VideoCompressorType;
45
42
  export default Video;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-compressor",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "This library compress image, video and audio",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -21,7 +21,6 @@ type videoCompresssionType = {
21
21
  maxSize?: number;
22
22
  compressionMethod?: compressionMethod;
23
23
  minimumFileSizeForCompress?: number;
24
- getCancellationId?: (cancellationId: string) => void;
25
24
  };
26
25
 
27
26
  export declare enum FileSystemSessionType {
@@ -57,7 +56,6 @@ export type VideoCompressorType = {
57
56
  options?: videoCompresssionType,
58
57
  onProgress?: (progress: number) => void
59
58
  ): Promise<string>;
60
- cancelCompression(cancellationId: string): void;
61
59
  backgroundUpload(
62
60
  url: string,
63
61
  fileUrl: string,
@@ -111,14 +109,15 @@ export const backgroundUpload = async (
111
109
  }
112
110
  };
113
111
 
114
- export const cancelCompression = (cancellationId: string) => {
115
- return NativeVideoCompressor.cancelCompression(cancellationId);
116
- };
117
-
118
112
  const Video: VideoCompressorType = {
119
113
  compress: async (
120
114
  fileUrl: string,
121
- options?: videoCompresssionType,
115
+ options?: {
116
+ bitrate?: number;
117
+ compressionMethod?: compressionMethod;
118
+ maxSize?: number;
119
+ minimumFileSizeForCompress?: number;
120
+ },
122
121
  onProgress?: (progress: number) => void
123
122
  ) => {
124
123
  const uuid = uuidv4();
@@ -156,9 +155,6 @@ const Video: VideoCompressorType = {
156
155
  modifiedOptions.minimumFileSizeForCompress =
157
156
  options?.minimumFileSizeForCompress;
158
157
  }
159
- if (options?.getCancellationId) {
160
- options?.getCancellationId(uuid);
161
- }
162
158
  const result = await NativeVideoCompressor.compress(
163
159
  fileUrl,
164
160
  modifiedOptions
@@ -172,7 +168,6 @@ const Video: VideoCompressorType = {
172
168
  }
173
169
  },
174
170
  backgroundUpload,
175
- cancelCompression,
176
171
  activateBackgroundTask(onExpired?) {
177
172
  if (onExpired) {
178
173
  const subscription: NativeEventSubscription =