react-native-compressor 1.3.1 → 1.3.5-alpha

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 (114) hide show
  1. package/README.md +2 -2
  2. package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
  3. package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
  4. package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/6.1.1/gc.properties +0 -0
  6. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  7. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  8. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  9. package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
  10. package/android/.gradle/checksums/checksums.lock +0 -0
  11. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  12. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  13. package/android/.idea/jarRepositories.xml +10 -0
  14. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +13 -0
  15. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -0
  16. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -0
  17. package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -0
  18. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
  19. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -0
  20. package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +16 -0
  21. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -0
  22. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -0
  23. package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -0
  24. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -0
  25. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -0
  26. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -0
  27. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -0
  28. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -0
  29. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -0
  30. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -0
  31. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -0
  32. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -0
  33. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -0
  34. package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -0
  35. package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -0
  36. package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -0
  37. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -0
  38. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -0
  39. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -0
  40. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +13 -0
  41. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -0
  42. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
  43. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
  44. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
  45. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
  46. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
  47. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
  48. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
  49. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
  51. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
  52. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
  53. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
  56. 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
  57. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_1_aar.xml +14 -0
  58. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +13 -0
  59. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +13 -0
  60. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +15 -0
  61. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
  62. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +13 -0
  63. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +13 -0
  64. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
  65. package/android/.idea/libraries/Gradle__io_github_lizhangqu_coreprogress_1_0_2_aar.xml +5 -2
  66. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
  67. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +13 -0
  68. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +13 -0
  69. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +13 -0
  70. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +13 -0
  71. package/android/.idea/modules/android.iml +34 -26
  72. package/android/build.gradle +6 -6
  73. package/android/src/main/java/com/.DS_Store +0 -0
  74. package/android/src/main/java/com/reactnativecompressor/.DS_Store +0 -0
  75. package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +3 -5
  76. package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +1 -38
  77. package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.java +210 -0
  78. package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +9 -10
  79. package/android/src/main/java/com/reactnativecompressor/Video/.DS_Store +0 -0
  80. package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +23 -8
  81. package/ios/Video/VideoCompressor.swift +5 -4
  82. package/lib/commonjs/Audio/index.js.map +1 -1
  83. package/lib/module/Audio/index.js.map +1 -1
  84. package/package.json +2 -1
  85. package/src/Audio/index.tsx +1 -1
  86. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +0 -13
  87. package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +0 -20
  88. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +0 -16
  89. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
  90. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -18
  91. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -22
  92. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -22
  93. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -22
  94. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -22
  95. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -18
  96. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -18
  97. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -18
  98. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +0 -22
  99. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +0 -13
  100. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +0 -13
  101. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +0 -18
  102. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
  103. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +0 -13
  104. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +0 -13
  105. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
  106. package/android/.idea/libraries/Gradle__com_zolad_videoslimmer_1_0_0_aar.xml +0 -15
  107. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_0.xml +0 -13
  108. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_0.xml +0 -13
  109. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimEncoder.java +0 -629
  110. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimTask.java +0 -59
  111. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimmer.java +0 -20
  112. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/listner/SlimProgressListener.java +0 -6
  113. package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/muxer/CodecInputSurface.java +0 -202
  114. 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,7 @@ 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
-
28
24
  import static com.reactnativecompressor.Utils.Utils.generateCacheFilePath;
29
- import java.io.ByteArrayOutputStream;
30
25
  import com.reactnativecompressor.Audio.AudioCompressor;
31
26
 
32
27
  @ReactModule(name = CompressorModule.NAME)
@@ -93,39 +88,7 @@ public class CompressorModule extends ReactContextBaseJavaModule {
93
88
 
94
89
  float bitrate = options.bitrate;
95
90
  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
- });
91
+ new AudioCompressor().CompressAudio(srcPath, destinationPath, (int) bitrate*1000);
129
92
 
130
93
  } catch (Exception ex) {
131
94
  promise.reject(ex);
@@ -0,0 +1,210 @@
1
+ package com.reactnativecompressor.Utils;
2
+
3
+ import android.annotation.SuppressLint;
4
+ import android.content.ContentUris;
5
+ import android.content.Context;
6
+ import android.database.Cursor;
7
+ import android.net.Uri;
8
+ import android.os.Build;
9
+ import android.os.Environment;
10
+ import android.provider.DocumentsContract;
11
+ import android.provider.MediaStore;
12
+
13
+ import androidx.loader.content.CursorLoader;
14
+
15
+ public class RealPathUtil {
16
+
17
+ public static String getRealPath(Context context, Uri fileUri) {
18
+ String realPath;
19
+ // SDK < API11
20
+ if (Build.VERSION.SDK_INT < 11) {
21
+ realPath = RealPathUtil.getRealPathFromURI_BelowAPI11(context, fileUri);
22
+ }
23
+ // SDK >= 11 && SDK < 19
24
+ else if (Build.VERSION.SDK_INT < 19) {
25
+ realPath = RealPathUtil.getRealPathFromURI_API11to18(context, fileUri);
26
+ }
27
+ // SDK > 19 (Android 4.4) and up
28
+ else {
29
+ realPath = RealPathUtil.getRealPathFromURI_API19(context, fileUri);
30
+ }
31
+ return realPath;
32
+ }
33
+
34
+
35
+ @SuppressLint("NewApi")
36
+ public static String getRealPathFromURI_API11to18(Context context, Uri contentUri) {
37
+ String[] proj = {MediaStore.Images.Media.DATA};
38
+ String result = null;
39
+
40
+ CursorLoader cursorLoader = new CursorLoader(context, contentUri, proj, null, null, null);
41
+ Cursor cursor = cursorLoader.loadInBackground();
42
+
43
+ if (cursor != null) {
44
+ int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
45
+ cursor.moveToFirst();
46
+ result = cursor.getString(column_index);
47
+ cursor.close();
48
+ }
49
+ return result;
50
+ }
51
+
52
+ public static String getRealPathFromURI_BelowAPI11(Context context, Uri contentUri) {
53
+ String[] proj = {MediaStore.Images.Media.DATA};
54
+ Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
55
+ int column_index = 0;
56
+ String result = "";
57
+ if (cursor != null) {
58
+ column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
59
+ cursor.moveToFirst();
60
+ result = cursor.getString(column_index);
61
+ cursor.close();
62
+ return result;
63
+ }
64
+ return result;
65
+ }
66
+
67
+ /**
68
+ * Get a file path from a Uri. This will get the the path for Storage Access
69
+ * Framework Documents, as well as the _data field for the MediaStore and
70
+ * other file-based ContentProviders.
71
+ *
72
+ * @param context The context.
73
+ * @param uri The Uri to query.
74
+ * @author paulburke
75
+ */
76
+ @SuppressLint("NewApi")
77
+ public static String getRealPathFromURI_API19(final Context context, final Uri uri) {
78
+
79
+ final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
80
+
81
+ // DocumentProvider
82
+ if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
83
+ // ExternalStorageProvider
84
+ if (isExternalStorageDocument(uri)) {
85
+ final String docId = DocumentsContract.getDocumentId(uri);
86
+ final String[] split = docId.split(":");
87
+ final String type = split[0];
88
+
89
+ if ("primary".equalsIgnoreCase(type)) {
90
+ return Environment.getExternalStorageDirectory() + "/" + split[1];
91
+ }
92
+
93
+ // TODO handle non-primary volumes
94
+ }
95
+ // DownloadsProvider
96
+ else if (isDownloadsDocument(uri)) {
97
+
98
+ final String id = DocumentsContract.getDocumentId(uri);
99
+ final Uri contentUri = ContentUris.withAppendedId(
100
+ Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
101
+
102
+ return getDataColumn(context, contentUri, null, null);
103
+ }
104
+ // MediaProvider
105
+ else if (isMediaDocument(uri)) {
106
+ final String docId = DocumentsContract.getDocumentId(uri);
107
+ final String[] split = docId.split(":");
108
+ final String type = split[0];
109
+
110
+ Uri contentUri = null;
111
+ if ("image".equals(type)) {
112
+ contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
113
+ } else if ("video".equals(type)) {
114
+ contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
115
+ } else if ("audio".equals(type)) {
116
+ contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
117
+ }
118
+
119
+ final String selection = "_id=?";
120
+ final String[] selectionArgs = new String[]{
121
+ split[1]
122
+ };
123
+
124
+ return getDataColumn(context, contentUri, selection, selectionArgs);
125
+ }
126
+ }
127
+ // MediaStore (and general)
128
+ else if ("content".equalsIgnoreCase(uri.getScheme())) {
129
+
130
+ // Return the remote address
131
+ if (isGooglePhotosUri(uri))
132
+ return uri.getLastPathSegment();
133
+
134
+ return getDataColumn(context, uri, null, null);
135
+ }
136
+ // File
137
+ else if ("file".equalsIgnoreCase(uri.getScheme())) {
138
+ return uri.getPath();
139
+ }
140
+
141
+ return null;
142
+ }
143
+
144
+ /**
145
+ * Get the value of the data column for this Uri. This is useful for
146
+ * MediaStore Uris, and other file-based ContentProviders.
147
+ *
148
+ * @param context The context.
149
+ * @param uri The Uri to query.
150
+ * @param selection (Optional) Filter used in the query.
151
+ * @param selectionArgs (Optional) Selection arguments used in the query.
152
+ * @return The value of the _data column, which is typically a file path.
153
+ */
154
+ public static String getDataColumn(Context context, Uri uri, String selection,
155
+ String[] selectionArgs) {
156
+
157
+ Cursor cursor = null;
158
+ final String column = "_data";
159
+ final String[] projection = {
160
+ column
161
+ };
162
+
163
+ try {
164
+ cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
165
+ null);
166
+ if (cursor != null && cursor.moveToFirst()) {
167
+ final int index = cursor.getColumnIndexOrThrow(column);
168
+ return cursor.getString(index);
169
+ }
170
+ } finally {
171
+ if (cursor != null)
172
+ cursor.close();
173
+ }
174
+ return null;
175
+ }
176
+
177
+
178
+ /**
179
+ * @param uri The Uri to check.
180
+ * @return Whether the Uri authority is ExternalStorageProvider.
181
+ */
182
+ public static boolean isExternalStorageDocument(Uri uri) {
183
+ return "com.android.externalstorage.documents".equals(uri.getAuthority());
184
+ }
185
+
186
+ /**
187
+ * @param uri The Uri to check.
188
+ * @return Whether the Uri authority is DownloadsProvider.
189
+ */
190
+ public static boolean isDownloadsDocument(Uri uri) {
191
+ return "com.android.providers.downloads.documents".equals(uri.getAuthority());
192
+ }
193
+
194
+ /**
195
+ * @param uri The Uri to check.
196
+ * @return Whether the Uri authority is MediaProvider.
197
+ */
198
+ public static boolean isMediaDocument(Uri uri) {
199
+ return "com.android.providers.media.documents".equals(uri.getAuthority());
200
+ }
201
+
202
+ /**
203
+ * @param uri The Uri to check.
204
+ * @return Whether the Uri authority is Google Photos.
205
+ */
206
+ public static boolean isGooglePhotosUri(Uri uri) {
207
+ return "com.google.android.apps.photos.content".equals(uri.getAuthority());
208
+ }
209
+
210
+ }
@@ -8,9 +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;
13
-
11
+ import numan.dev.videocompressor.VideoCompressTask;
12
+ import numan.dev.videocompressor.VideoCompressor;
14
13
  import java.io.File;
15
14
  import java.util.HashMap;
16
15
  import java.util.Map;
@@ -18,8 +17,7 @@ import java.util.UUID;
18
17
 
19
18
  public class Utils {
20
19
  static int videoCompressionThreshold=10;
21
- static int currentVideoCompression=0;
22
- static Map<String, VideoSlimTask> compressorExports = new HashMap<>();
20
+ static Map<String, VideoCompressTask> compressorExports = new HashMap<>();
23
21
 
24
22
  public static String generateCacheFilePath(String extension, ReactApplicationContext reactContext){
25
23
  File outputDir = reactContext.getCacheDir();
@@ -30,8 +28,9 @@ public class Utils {
30
28
 
31
29
 
32
30
  public static void compressVideo(String srcPath, String destinationPath, int resultWidth, int resultHeight, float videoBitRate, String uuid, Promise promise, ReactApplicationContext reactContext){
31
+ final int[] currentVideoCompression = {0};
33
32
  try{
34
- VideoSlimTask export=VideoSlimmer.convertVideo(srcPath, destinationPath, resultWidth, resultHeight, (int) videoBitRate, new VideoSlimmer.ProgressListener() {
33
+ VideoCompressTask export=VideoCompressor.convertVideo(srcPath, destinationPath, resultWidth, resultHeight, (int) videoBitRate, new VideoCompressor.ProgressListener() {
35
34
  @Override
36
35
  public void onStart() {
37
36
  //convert start
@@ -50,14 +49,14 @@ public class Utils {
50
49
  @Override
51
50
  public void onProgress(float percent) {
52
51
  int roundProgress=Math.round(percent);
53
- if(roundProgress%videoCompressionThreshold==0&&roundProgress>currentVideoCompression) {
52
+ if(roundProgress%videoCompressionThreshold==0&&roundProgress> currentVideoCompression[0]) {
54
53
  WritableMap params = Arguments.createMap();
55
54
  WritableMap data = Arguments.createMap();
56
55
  params.putString("uuid", uuid);
57
56
  data.putDouble("progress", percent / 100);
58
57
  params.putMap("data", data);
59
58
  sendEvent(reactContext, "videoCompressProgress", params);
60
- currentVideoCompression=roundProgress;
59
+ currentVideoCompression[0] =roundProgress;
61
60
  }
62
61
  }
63
62
  });
@@ -66,13 +65,13 @@ public class Utils {
66
65
  promise.reject(ex);
67
66
  }
68
67
  finally {
69
- currentVideoCompression=0;
68
+ currentVideoCompression[0] =0;
70
69
  }
71
70
  }
72
71
 
73
72
  public static void cancelCompressionHelper(String uuid){
74
73
  try{
75
- VideoSlimTask export=compressorExports.get(uuid);
74
+ VideoCompressTask export=compressorExports.get(uuid);
76
75
  export.cancel(true);
77
76
  }
78
77
  catch (Exception ex) {
@@ -1,5 +1,6 @@
1
1
  package com.reactnativecompressor.Video;
2
2
 
3
+ import android.net.Uri;
3
4
  import android.util.Log;
4
5
 
5
6
  import androidx.annotation.NonNull;
@@ -14,14 +15,17 @@ import com.facebook.react.bridge.ReadableMap;
14
15
  import com.facebook.react.bridge.WritableMap;
15
16
  import com.facebook.react.module.annotations.ReactModule;
16
17
  import com.facebook.react.modules.core.DeviceEventManagerModule;
18
+ import com.reactnativecompressor.Utils.RealPathUtil;
17
19
 
18
20
  import static com.reactnativecompressor.Video.VideoCompressorHelper.video_activateBackgroundTask_helper;
19
21
  import static com.reactnativecompressor.Video.VideoCompressorHelper.video_deactivateBackgroundTask_helper;
20
22
  import static com.reactnativecompressor.Video.VideoCompressorHelper.video_upload_helper;
21
23
  import static com.reactnativecompressor.Utils.Utils.cancelCompressionHelper;
24
+
22
25
  @ReactModule(name = VideoModule.NAME)
23
- public class VideoModule extends ReactContextBaseJavaModule {
26
+ public class VideoModule extends ReactContextBaseJavaModule {
24
27
  public static final String NAME = "VideoCompressor";
28
+ private static final String TAG = "react-native-compessor";
25
29
  private final ReactApplicationContext reactContext;
26
30
  public VideoModule(ReactApplicationContext reactContext) {
27
31
  super(reactContext);
@@ -48,16 +52,27 @@ public class VideoModule extends ReactContextBaseJavaModule {
48
52
  String fileUrl,
49
53
  ReadableMap optionMap,
50
54
  Promise promise) {
51
- final VideoCompressorHelper options = VideoCompressorHelper.fromMap(optionMap);
55
+ final VideoCompressorHelper options = VideoCompressorHelper.fromMap(optionMap);
52
56
 
53
- if(options.compressionMethod==VideoCompressorHelper.CompressionMethod.auto)
54
- {
55
- VideoCompressorHelper.VideoCompressAuto(fileUrl,options,promise,reactContext);
57
+ if(fileUrl.startsWith("content://"))
58
+ {
59
+ try {
60
+ Uri uri= Uri.parse(fileUrl);
61
+ fileUrl= RealPathUtil.getRealPath(reactContext,uri);
56
62
  }
57
- else
58
- {
59
- VideoCompressorHelper.VideoCompressManual(fileUrl,options,promise,reactContext);
63
+ catch (Exception ex) {
64
+ Log.d(TAG, " Please see this issue: https://github.com/Shobbak/react-native-compressor/issues/25");
60
65
  }
66
+ }
67
+
68
+ if(options.compressionMethod==VideoCompressorHelper.CompressionMethod.auto)
69
+ {
70
+ VideoCompressorHelper.VideoCompressAuto(fileUrl,options,promise,reactContext);
71
+ }
72
+ else
73
+ {
74
+ VideoCompressorHelper.VideoCompressManual(fileUrl,options,promise,reactContext);
75
+ }
61
76
 
62
77
 
63
78
  }
@@ -36,7 +36,7 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
36
36
  var uploadRejectors: [String: RCTPromiseRejectBlock] = [:]
37
37
  var compressorExports: [String: NextLevelSessionExporter] = [:]
38
38
  let videoCompressionThreshold:Int=7
39
- var videoCompressionCounter:Int=0
39
+
40
40
 
41
41
  override static func requiresMainQueueSetup() -> Bool {
42
42
  return false
@@ -343,6 +343,7 @@ func makeValidUri(filePath: String) -> String {
343
343
  }
344
344
 
345
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){
346
+ var videoCompressionCounter:Int=0
346
347
  var tmpURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
347
348
  .appendingPathComponent(ProcessInfo().globallyUniqueString)
348
349
  .appendingPathExtension("mp4")
@@ -374,14 +375,14 @@ func makeValidUri(filePath: String) -> String {
374
375
  compressorExports[uuid] = exporter
375
376
  exporter.export(progressHandler: { (progress) in
376
377
  let _progress:Float=progress*100;
377
- if(Int(_progress)==self.videoCompressionCounter)
378
+ if(Int(_progress)==videoCompressionCounter)
378
379
  {
379
- self.videoCompressionCounter=Int(_progress)+self.videoCompressionThreshold
380
+ videoCompressionCounter=Int(_progress)+self.videoCompressionThreshold
380
381
  onProgress(progress)
381
382
  }
382
383
 
383
384
  }, completionHandler: { result in
384
- self.videoCompressionCounter=0;
385
+ videoCompressionCounter=0;
385
386
  switch exporter.status {
386
387
  case .completed:
387
388
  onCompletion(exporter.outputURL!)
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["NativeAudio","NativeModules","Compressor","Audio","compress","url","options","DEFAULT_COMPRESS_AUDIO_OPTIONS","checkUrlAndOptionsResult","isCorrect","message","mediaDetails","bitrate","i","AUDIO_BITRATE","length","quality","compress_audio","error"],"mappings":";;;;;;;AAAA;;AACA;;AAOA,MAAMA,WAAW,GAAGC,2BAAcC,UAAlC;AAEA,MAAMC,KAAgB,GAAG;AACvBC,EAAAA,QAAQ,EAAE,OAAOC,GAAP,EAAYC,OAAO,GAAGC,qCAAtB,KAAyD;AACjE,QAAI;AACF,YAAMC,wBAA2C,GAC/C,MAAM,+BAAmBH,GAAnB,EAAwBC,OAAxB,CADR;;AAEA,UAAI,CAACE,wBAAwB,CAACC,SAA9B,EAAyC;AACvC,cAAMD,wBAAwB,CAACE,OAA/B;AACD,OAFD,MAEO;AACL;AAEA;AACA;AACA,cAAMC,YAAiB,GAAG;AACxBC,UAAAA,OAAO,EAAE;AADe,SAA1B,CALK,CASL;;AACA,YAAIA,OAAY,GAAGL,sCAA+BK,OAAlD;;AAEA,YAAID,YAAY,IAAIA,YAAY,CAACC,OAAjC,EAA0C;AACxC;AACA,eAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,qBAAcC,MAAlC,EAA0CF,CAAC,EAA3C,EAA+C;AAC7C;AACA,gBAAIF,YAAY,CAACC,OAAb,GAAuBE,qBAAcD,CAAd,CAA3B,EAA6C;AAC3C,kBAAIA,CAAC,GAAG,CAAJ,GAAQC,qBAAcC,MAA1B,EAAkC;AAChC,oBAAIT,OAAO,CAACU,OAAR,KAAoB,KAAxB,EAA+BJ,OAAO,GAAGE,qBAAcD,CAAC,GAAG,CAAlB,CAAV,CAA/B,KACK,IAAIP,OAAO,CAACU,OAAR,KAAoB,QAAxB,EACHJ,OAAO,GAAGE,qBAAcD,CAAC,GAAG,CAAlB,CAAV,CADG,KAEAD,OAAO,GAAGE,qBAAcD,CAAd,CAAV;AACN,eALD,MAKO,IAAIA,CAAC,GAAG,CAAJ,GAAQC,qBAAcC,MAA1B,EAAkC;AACvC,oBAAIT,OAAO,CAACU,OAAR,KAAoB,KAAxB,EAA+BJ,OAAO,GAAGE,qBAAcD,CAAC,GAAG,CAAlB,CAAV,CAA/B,KACKD,OAAO,GAAGE,qBAAcD,CAAd,CAAV;AACN,eAHM,MAGAD,OAAO,GAAGE,qBAAcD,CAAd,CAAV;;AACP;AACD,aAb4C,CAe7C;;;AACA,gBACEF,YAAY,CAACC,OAAb,IAAwBE,qBAAcA,qBAAcC,MAAd,GAAuB,CAArC,CAD1B,EAEE;AACAH,cAAAA,OAAO,GAAGE,qBAAcA,qBAAcC,MAAd,GAAuB,CAArC,CAAV;AACA;AACD;AACF;AACF;;AAED,eAAOf,WAAW,CAACiB,cAAZ,CAA2BZ,GAA3B,EAAgC;AACrCO,UAAAA,OADqC;AAErCI,UAAAA,OAAO,EAAEV,OAAO,CAACU;AAFoB,SAAhC,CAAP;AAID;AACF,KAjDD,CAiDE,OAAOE,KAAP,EAAc;AACd,YAAMA,KAAK,CAACR,OAAZ;AACD;AACF;AAtDsB,CAAzB;eAyDeP,K","sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n AUDIO_BITRATE,\n AudioType,\n DEFAULT_COMPRESS_AUDIO_OPTIONS,\n defaultResultType,\n checkUrlAndOptions,\n} from '../utils';\nconst NativeAudio = NativeModules.Compressor;\n\nconst Audio: AudioType = {\n compress: async (url, options = DEFAULT_COMPRESS_AUDIO_OPTIONS) => {\n try {\n const checkUrlAndOptionsResult: defaultResultType =\n await checkUrlAndOptions(url, options);\n if (!checkUrlAndOptionsResult.isCorrect) {\n throw checkUrlAndOptionsResult.message;\n } else {\n // Get resulting output file path\n\n // Get media details\n // const mediaDetails: any = await getDetails(url).catch(() => null);\n const mediaDetails: any = {\n bitrate: 0,\n };\n\n // Initialize bitrate\n let bitrate: any = DEFAULT_COMPRESS_AUDIO_OPTIONS.bitrate;\n\n if (mediaDetails && mediaDetails.bitrate) {\n // Check and return the appropriate bitrate according to quality expected\n for (let i = 0; i < AUDIO_BITRATE.length; i++) {\n // Check a particular bitrate to return its nearest lower according to quality\n if (mediaDetails.bitrate > AUDIO_BITRATE[i]) {\n if (i + 2 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 2];\n else if (options.quality === 'medium')\n bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else if (i + 1 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else bitrate = AUDIO_BITRATE[i];\n break;\n }\n\n // Check if the matching bitrate is the last in the array\n if (\n mediaDetails.bitrate <= AUDIO_BITRATE[AUDIO_BITRATE.length - 1]\n ) {\n bitrate = AUDIO_BITRATE[AUDIO_BITRATE.length - 1];\n break;\n }\n }\n }\n\n return NativeAudio.compress_audio(url, {\n bitrate,\n quality: options.quality,\n });\n }\n } catch (error) {\n throw error.message;\n }\n },\n};\n\nexport default Audio;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["NativeAudio","NativeModules","Compressor","Audio","compress","url","options","DEFAULT_COMPRESS_AUDIO_OPTIONS","checkUrlAndOptionsResult","isCorrect","message","mediaDetails","bitrate","i","AUDIO_BITRATE","length","quality","compress_audio","error"],"mappings":";;;;;;;AAAA;;AACA;;AAOA,MAAMA,WAAW,GAAGC,2BAAcC,UAAlC;AAEA,MAAMC,KAAgB,GAAG;AACvBC,EAAAA,QAAQ,EAAE,OAAOC,GAAP,EAAYC,OAAO,GAAGC,qCAAtB,KAAyD;AACjE,QAAI;AACF,YAAMC,wBAA2C,GAC/C,MAAM,+BAAmBH,GAAnB,EAAwBC,OAAxB,CADR;;AAEA,UAAI,CAACE,wBAAwB,CAACC,SAA9B,EAAyC;AACvC,cAAMD,wBAAwB,CAACE,OAA/B;AACD,OAFD,MAEO;AACL;AAEA;AACA;AACA,cAAMC,YAAiB,GAAG;AACxBC,UAAAA,OAAO,EAAE;AADe,SAA1B,CALK,CASL;;AACA,YAAIA,OAAY,GAAGL,sCAA+BK,OAAlD;;AAEA,YAAID,YAAY,IAAIA,YAAY,CAACC,OAAjC,EAA0C;AACxC;AACA,eAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,qBAAcC,MAAlC,EAA0CF,CAAC,EAA3C,EAA+C;AAC7C;AACA,gBAAIF,YAAY,CAACC,OAAb,GAAuBE,qBAAcD,CAAd,CAA3B,EAA6C;AAC3C,kBAAIA,CAAC,GAAG,CAAJ,GAAQC,qBAAcC,MAA1B,EAAkC;AAChC,oBAAIT,OAAO,CAACU,OAAR,KAAoB,KAAxB,EAA+BJ,OAAO,GAAGE,qBAAcD,CAAC,GAAG,CAAlB,CAAV,CAA/B,KACK,IAAIP,OAAO,CAACU,OAAR,KAAoB,QAAxB,EACHJ,OAAO,GAAGE,qBAAcD,CAAC,GAAG,CAAlB,CAAV,CADG,KAEAD,OAAO,GAAGE,qBAAcD,CAAd,CAAV;AACN,eALD,MAKO,IAAIA,CAAC,GAAG,CAAJ,GAAQC,qBAAcC,MAA1B,EAAkC;AACvC,oBAAIT,OAAO,CAACU,OAAR,KAAoB,KAAxB,EAA+BJ,OAAO,GAAGE,qBAAcD,CAAC,GAAG,CAAlB,CAAV,CAA/B,KACKD,OAAO,GAAGE,qBAAcD,CAAd,CAAV;AACN,eAHM,MAGAD,OAAO,GAAGE,qBAAcD,CAAd,CAAV;;AACP;AACD,aAb4C,CAe7C;;;AACA,gBACEF,YAAY,CAACC,OAAb,IAAwBE,qBAAcA,qBAAcC,MAAd,GAAuB,CAArC,CAD1B,EAEE;AACAH,cAAAA,OAAO,GAAGE,qBAAcA,qBAAcC,MAAd,GAAuB,CAArC,CAAV;AACA;AACD;AACF;AACF;;AAED,eAAOf,WAAW,CAACiB,cAAZ,CAA2BZ,GAA3B,EAAgC;AACrCO,UAAAA,OADqC;AAErCI,UAAAA,OAAO,EAAEV,OAAO,CAACU;AAFoB,SAAhC,CAAP;AAID;AACF,KAjDD,CAiDE,OAAOE,KAAP,EAAmB;AACnB,YAAMA,KAAK,CAACR,OAAZ;AACD;AACF;AAtDsB,CAAzB;eAyDeP,K","sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n AUDIO_BITRATE,\n AudioType,\n DEFAULT_COMPRESS_AUDIO_OPTIONS,\n defaultResultType,\n checkUrlAndOptions,\n} from '../utils';\nconst NativeAudio = NativeModules.Compressor;\n\nconst Audio: AudioType = {\n compress: async (url, options = DEFAULT_COMPRESS_AUDIO_OPTIONS) => {\n try {\n const checkUrlAndOptionsResult: defaultResultType =\n await checkUrlAndOptions(url, options);\n if (!checkUrlAndOptionsResult.isCorrect) {\n throw checkUrlAndOptionsResult.message;\n } else {\n // Get resulting output file path\n\n // Get media details\n // const mediaDetails: any = await getDetails(url).catch(() => null);\n const mediaDetails: any = {\n bitrate: 0,\n };\n\n // Initialize bitrate\n let bitrate: any = DEFAULT_COMPRESS_AUDIO_OPTIONS.bitrate;\n\n if (mediaDetails && mediaDetails.bitrate) {\n // Check and return the appropriate bitrate according to quality expected\n for (let i = 0; i < AUDIO_BITRATE.length; i++) {\n // Check a particular bitrate to return its nearest lower according to quality\n if (mediaDetails.bitrate > AUDIO_BITRATE[i]) {\n if (i + 2 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 2];\n else if (options.quality === 'medium')\n bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else if (i + 1 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else bitrate = AUDIO_BITRATE[i];\n break;\n }\n\n // Check if the matching bitrate is the last in the array\n if (\n mediaDetails.bitrate <= AUDIO_BITRATE[AUDIO_BITRATE.length - 1]\n ) {\n bitrate = AUDIO_BITRATE[AUDIO_BITRATE.length - 1];\n break;\n }\n }\n }\n\n return NativeAudio.compress_audio(url, {\n bitrate,\n quality: options.quality,\n });\n }\n } catch (error: any) {\n throw error.message;\n }\n },\n};\n\nexport default Audio;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["NativeModules","AUDIO_BITRATE","DEFAULT_COMPRESS_AUDIO_OPTIONS","checkUrlAndOptions","NativeAudio","Compressor","Audio","compress","url","options","checkUrlAndOptionsResult","isCorrect","message","mediaDetails","bitrate","i","length","quality","compress_audio","error"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AACA,SACEC,aADF,EAGEC,8BAHF,EAKEC,kBALF,QAMO,UANP;AAOA,MAAMC,WAAW,GAAGJ,aAAa,CAACK,UAAlC;AAEA,MAAMC,KAAgB,GAAG;AACvBC,EAAAA,QAAQ,EAAE,OAAOC,GAAP,EAAYC,OAAO,GAAGP,8BAAtB,KAAyD;AACjE,QAAI;AACF,YAAMQ,wBAA2C,GAC/C,MAAMP,kBAAkB,CAACK,GAAD,EAAMC,OAAN,CAD1B;;AAEA,UAAI,CAACC,wBAAwB,CAACC,SAA9B,EAAyC;AACvC,cAAMD,wBAAwB,CAACE,OAA/B;AACD,OAFD,MAEO;AACL;AAEA;AACA;AACA,cAAMC,YAAiB,GAAG;AACxBC,UAAAA,OAAO,EAAE;AADe,SAA1B,CALK,CASL;;AACA,YAAIA,OAAY,GAAGZ,8BAA8B,CAACY,OAAlD;;AAEA,YAAID,YAAY,IAAIA,YAAY,CAACC,OAAjC,EAA0C;AACxC;AACA,eAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGd,aAAa,CAACe,MAAlC,EAA0CD,CAAC,EAA3C,EAA+C;AAC7C;AACA,gBAAIF,YAAY,CAACC,OAAb,GAAuBb,aAAa,CAACc,CAAD,CAAxC,EAA6C;AAC3C,kBAAIA,CAAC,GAAG,CAAJ,GAAQd,aAAa,CAACe,MAA1B,EAAkC;AAChC,oBAAIP,OAAO,CAACQ,OAAR,KAAoB,KAAxB,EAA+BH,OAAO,GAAGb,aAAa,CAACc,CAAC,GAAG,CAAL,CAAvB,CAA/B,KACK,IAAIN,OAAO,CAACQ,OAAR,KAAoB,QAAxB,EACHH,OAAO,GAAGb,aAAa,CAACc,CAAC,GAAG,CAAL,CAAvB,CADG,KAEAD,OAAO,GAAGb,aAAa,CAACc,CAAD,CAAvB;AACN,eALD,MAKO,IAAIA,CAAC,GAAG,CAAJ,GAAQd,aAAa,CAACe,MAA1B,EAAkC;AACvC,oBAAIP,OAAO,CAACQ,OAAR,KAAoB,KAAxB,EAA+BH,OAAO,GAAGb,aAAa,CAACc,CAAC,GAAG,CAAL,CAAvB,CAA/B,KACKD,OAAO,GAAGb,aAAa,CAACc,CAAD,CAAvB;AACN,eAHM,MAGAD,OAAO,GAAGb,aAAa,CAACc,CAAD,CAAvB;;AACP;AACD,aAb4C,CAe7C;;;AACA,gBACEF,YAAY,CAACC,OAAb,IAAwBb,aAAa,CAACA,aAAa,CAACe,MAAd,GAAuB,CAAxB,CADvC,EAEE;AACAF,cAAAA,OAAO,GAAGb,aAAa,CAACA,aAAa,CAACe,MAAd,GAAuB,CAAxB,CAAvB;AACA;AACD;AACF;AACF;;AAED,eAAOZ,WAAW,CAACc,cAAZ,CAA2BV,GAA3B,EAAgC;AACrCM,UAAAA,OADqC;AAErCG,UAAAA,OAAO,EAAER,OAAO,CAACQ;AAFoB,SAAhC,CAAP;AAID;AACF,KAjDD,CAiDE,OAAOE,KAAP,EAAc;AACd,YAAMA,KAAK,CAACP,OAAZ;AACD;AACF;AAtDsB,CAAzB;AAyDA,eAAeN,KAAf","sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n AUDIO_BITRATE,\n AudioType,\n DEFAULT_COMPRESS_AUDIO_OPTIONS,\n defaultResultType,\n checkUrlAndOptions,\n} from '../utils';\nconst NativeAudio = NativeModules.Compressor;\n\nconst Audio: AudioType = {\n compress: async (url, options = DEFAULT_COMPRESS_AUDIO_OPTIONS) => {\n try {\n const checkUrlAndOptionsResult: defaultResultType =\n await checkUrlAndOptions(url, options);\n if (!checkUrlAndOptionsResult.isCorrect) {\n throw checkUrlAndOptionsResult.message;\n } else {\n // Get resulting output file path\n\n // Get media details\n // const mediaDetails: any = await getDetails(url).catch(() => null);\n const mediaDetails: any = {\n bitrate: 0,\n };\n\n // Initialize bitrate\n let bitrate: any = DEFAULT_COMPRESS_AUDIO_OPTIONS.bitrate;\n\n if (mediaDetails && mediaDetails.bitrate) {\n // Check and return the appropriate bitrate according to quality expected\n for (let i = 0; i < AUDIO_BITRATE.length; i++) {\n // Check a particular bitrate to return its nearest lower according to quality\n if (mediaDetails.bitrate > AUDIO_BITRATE[i]) {\n if (i + 2 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 2];\n else if (options.quality === 'medium')\n bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else if (i + 1 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else bitrate = AUDIO_BITRATE[i];\n break;\n }\n\n // Check if the matching bitrate is the last in the array\n if (\n mediaDetails.bitrate <= AUDIO_BITRATE[AUDIO_BITRATE.length - 1]\n ) {\n bitrate = AUDIO_BITRATE[AUDIO_BITRATE.length - 1];\n break;\n }\n }\n }\n\n return NativeAudio.compress_audio(url, {\n bitrate,\n quality: options.quality,\n });\n }\n } catch (error) {\n throw error.message;\n }\n },\n};\n\nexport default Audio;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["NativeModules","AUDIO_BITRATE","DEFAULT_COMPRESS_AUDIO_OPTIONS","checkUrlAndOptions","NativeAudio","Compressor","Audio","compress","url","options","checkUrlAndOptionsResult","isCorrect","message","mediaDetails","bitrate","i","length","quality","compress_audio","error"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AACA,SACEC,aADF,EAGEC,8BAHF,EAKEC,kBALF,QAMO,UANP;AAOA,MAAMC,WAAW,GAAGJ,aAAa,CAACK,UAAlC;AAEA,MAAMC,KAAgB,GAAG;AACvBC,EAAAA,QAAQ,EAAE,OAAOC,GAAP,EAAYC,OAAO,GAAGP,8BAAtB,KAAyD;AACjE,QAAI;AACF,YAAMQ,wBAA2C,GAC/C,MAAMP,kBAAkB,CAACK,GAAD,EAAMC,OAAN,CAD1B;;AAEA,UAAI,CAACC,wBAAwB,CAACC,SAA9B,EAAyC;AACvC,cAAMD,wBAAwB,CAACE,OAA/B;AACD,OAFD,MAEO;AACL;AAEA;AACA;AACA,cAAMC,YAAiB,GAAG;AACxBC,UAAAA,OAAO,EAAE;AADe,SAA1B,CALK,CASL;;AACA,YAAIA,OAAY,GAAGZ,8BAA8B,CAACY,OAAlD;;AAEA,YAAID,YAAY,IAAIA,YAAY,CAACC,OAAjC,EAA0C;AACxC;AACA,eAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGd,aAAa,CAACe,MAAlC,EAA0CD,CAAC,EAA3C,EAA+C;AAC7C;AACA,gBAAIF,YAAY,CAACC,OAAb,GAAuBb,aAAa,CAACc,CAAD,CAAxC,EAA6C;AAC3C,kBAAIA,CAAC,GAAG,CAAJ,GAAQd,aAAa,CAACe,MAA1B,EAAkC;AAChC,oBAAIP,OAAO,CAACQ,OAAR,KAAoB,KAAxB,EAA+BH,OAAO,GAAGb,aAAa,CAACc,CAAC,GAAG,CAAL,CAAvB,CAA/B,KACK,IAAIN,OAAO,CAACQ,OAAR,KAAoB,QAAxB,EACHH,OAAO,GAAGb,aAAa,CAACc,CAAC,GAAG,CAAL,CAAvB,CADG,KAEAD,OAAO,GAAGb,aAAa,CAACc,CAAD,CAAvB;AACN,eALD,MAKO,IAAIA,CAAC,GAAG,CAAJ,GAAQd,aAAa,CAACe,MAA1B,EAAkC;AACvC,oBAAIP,OAAO,CAACQ,OAAR,KAAoB,KAAxB,EAA+BH,OAAO,GAAGb,aAAa,CAACc,CAAC,GAAG,CAAL,CAAvB,CAA/B,KACKD,OAAO,GAAGb,aAAa,CAACc,CAAD,CAAvB;AACN,eAHM,MAGAD,OAAO,GAAGb,aAAa,CAACc,CAAD,CAAvB;;AACP;AACD,aAb4C,CAe7C;;;AACA,gBACEF,YAAY,CAACC,OAAb,IAAwBb,aAAa,CAACA,aAAa,CAACe,MAAd,GAAuB,CAAxB,CADvC,EAEE;AACAF,cAAAA,OAAO,GAAGb,aAAa,CAACA,aAAa,CAACe,MAAd,GAAuB,CAAxB,CAAvB;AACA;AACD;AACF;AACF;;AAED,eAAOZ,WAAW,CAACc,cAAZ,CAA2BV,GAA3B,EAAgC;AACrCM,UAAAA,OADqC;AAErCG,UAAAA,OAAO,EAAER,OAAO,CAACQ;AAFoB,SAAhC,CAAP;AAID;AACF,KAjDD,CAiDE,OAAOE,KAAP,EAAmB;AACnB,YAAMA,KAAK,CAACP,OAAZ;AACD;AACF;AAtDsB,CAAzB;AAyDA,eAAeN,KAAf","sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n AUDIO_BITRATE,\n AudioType,\n DEFAULT_COMPRESS_AUDIO_OPTIONS,\n defaultResultType,\n checkUrlAndOptions,\n} from '../utils';\nconst NativeAudio = NativeModules.Compressor;\n\nconst Audio: AudioType = {\n compress: async (url, options = DEFAULT_COMPRESS_AUDIO_OPTIONS) => {\n try {\n const checkUrlAndOptionsResult: defaultResultType =\n await checkUrlAndOptions(url, options);\n if (!checkUrlAndOptionsResult.isCorrect) {\n throw checkUrlAndOptionsResult.message;\n } else {\n // Get resulting output file path\n\n // Get media details\n // const mediaDetails: any = await getDetails(url).catch(() => null);\n const mediaDetails: any = {\n bitrate: 0,\n };\n\n // Initialize bitrate\n let bitrate: any = DEFAULT_COMPRESS_AUDIO_OPTIONS.bitrate;\n\n if (mediaDetails && mediaDetails.bitrate) {\n // Check and return the appropriate bitrate according to quality expected\n for (let i = 0; i < AUDIO_BITRATE.length; i++) {\n // Check a particular bitrate to return its nearest lower according to quality\n if (mediaDetails.bitrate > AUDIO_BITRATE[i]) {\n if (i + 2 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 2];\n else if (options.quality === 'medium')\n bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else if (i + 1 < AUDIO_BITRATE.length) {\n if (options.quality === 'low') bitrate = AUDIO_BITRATE[i + 1];\n else bitrate = AUDIO_BITRATE[i];\n } else bitrate = AUDIO_BITRATE[i];\n break;\n }\n\n // Check if the matching bitrate is the last in the array\n if (\n mediaDetails.bitrate <= AUDIO_BITRATE[AUDIO_BITRATE.length - 1]\n ) {\n bitrate = AUDIO_BITRATE[AUDIO_BITRATE.length - 1];\n break;\n }\n }\n }\n\n return NativeAudio.compress_audio(url, {\n bitrate,\n quality: options.quality,\n });\n }\n } catch (error: any) {\n throw error.message;\n }\n },\n};\n\nexport default Audio;\n"]}
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.5-alpha",
4
4
  "description": "This library compress image, video and audio",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -61,6 +61,7 @@
61
61
  "devDependencies": {
62
62
  "@commitlint/config-conventional": "^11.0.0",
63
63
  "@expo/config-plugins": "^4.0.14",
64
+ "@jamesacarr/eslint-formatter-github-actions": "^0.1.0",
64
65
  "@react-native-community/eslint-config": "^2.0.0",
65
66
  "@release-it/conventional-changelog": "^2.0.0",
66
67
  "@types/jest": "^26.0.0",
@@ -59,7 +59,7 @@ const Audio: AudioType = {
59
59
  quality: options.quality,
60
60
  });
61
61
  }
62
- } catch (error) {
62
+ } catch (error: any) {
63
63
  throw error.message;
64
64
  }
65
65
  },
@@ -1,13 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.annotation:annotation:1.0.0">
3
- <CLASSES>
4
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.0.0/45599f2cd5965ac05a1488fa2a5c0cdd7c499ead/annotation-1.0.0.jar!/" />
5
- </CLASSES>
6
- <JAVADOC>
7
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.0.0/3ad9d83e5da3918fd93775080f401222f2d4d26a/annotation-1.0.0-javadoc.jar!/" />
8
- </JAVADOC>
9
- <SOURCES>
10
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.0.0/c5897dbbda33e66ca6f3224a2534891bbfcbda5a/annotation-1.0.0-sources.jar!/" />
11
- </SOURCES>
12
- </library>
13
- </component>
@@ -1,20 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.core:core:1.0.1@aar">
3
- <ANNOTATIONS>
4
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/72e23efd7c231bfbde600330f21b626b/core-1.0.1/annotations.zip!/" />
5
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f2d424e161909cc78a47bc198ec6c153/core-1.0.1/annotations.zip!/" />
6
- </ANNOTATIONS>
7
- <CLASSES>
8
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/72e23efd7c231bfbde600330f21b626b/core-1.0.1/res" />
9
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/72e23efd7c231bfbde600330f21b626b/core-1.0.1/AndroidManifest.xml" />
10
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/72e23efd7c231bfbde600330f21b626b/core-1.0.1/jars/classes.jar!/" />
11
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f2d424e161909cc78a47bc198ec6c153/core-1.0.1/AndroidManifest.xml" />
12
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f2d424e161909cc78a47bc198ec6c153/core-1.0.1/jars/classes.jar!/" />
13
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f2d424e161909cc78a47bc198ec6c153/core-1.0.1/res" />
14
- </CLASSES>
15
- <JAVADOC />
16
- <SOURCES>
17
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.core/core/1.0.1/ae10d2e1965b944830c2c2aaf154765ceb32e0bc/core-1.0.1-sources.jar!/" />
18
- </SOURCES>
19
- </library>
20
- </component>
@@ -1,16 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: androidx.versionedparcelable:versionedparcelable:1.0.0@aar">
3
- <CLASSES>
4
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/18792893332f3f306e5a73b9074ea34a/versionedparcelable-1.0.0/res" />
5
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a16d9a484107f2ef4d0239df1e640149/versionedparcelable-1.0.0/jars/classes.jar!/" />
6
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a16d9a484107f2ef4d0239df1e640149/versionedparcelable-1.0.0/AndroidManifest.xml" />
7
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a16d9a484107f2ef4d0239df1e640149/versionedparcelable-1.0.0/res" />
8
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/18792893332f3f306e5a73b9074ea34a/versionedparcelable-1.0.0/AndroidManifest.xml" />
9
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/18792893332f3f306e5a73b9074ea34a/versionedparcelable-1.0.0/jars/classes.jar!/" />
10
- </CLASSES>
11
- <JAVADOC />
12
- <SOURCES>
13
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.versionedparcelable/versionedparcelable/1.0.0/df4c3c5d517f6a49017612e6b4dfdd007e7cc9b8/versionedparcelable-1.0.0-sources.jar!/" />
14
- </SOURCES>
15
- </library>
16
- </component>
@@ -1,13 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: com.facebook.fbjni:fbjni-java-only:0.0.3">
3
- <CLASSES>
4
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fbjni/fbjni-java-only/0.0.3/c4540aecb99b9ec380acef6c10bb6f700de8ac2c/fbjni-java-only-0.0.3.jar!/" />
5
- </CLASSES>
6
- <JAVADOC>
7
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fbjni/fbjni-java-only/0.0.3/968548ffa89f351bf709971f75eee154dcf085ab/fbjni-java-only-0.0.3-javadoc.jar!/" />
8
- </JAVADOC>
9
- <SOURCES>
10
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fbjni/fbjni-java-only/0.0.3/2a274312d2ca301c8282532dcaf4654ed7b6692/fbjni-java-only-0.0.3-sources.jar!/" />
11
- </SOURCES>
12
- </library>
13
- </component>
@@ -1,18 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: com.facebook.fresco:drawee:2.0.0@aar">
3
- <CLASSES>
4
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f0126cdedd26dcf8a6bfc612efabe47d/drawee-2.0.0/AndroidManifest.xml" />
5
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f0126cdedd26dcf8a6bfc612efabe47d/drawee-2.0.0/jars/classes.jar!/" />
6
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f0126cdedd26dcf8a6bfc612efabe47d/drawee-2.0.0/res" />
7
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/299541486cee301ca253077b5332cbf9/drawee-2.0.0/res" />
8
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/299541486cee301ca253077b5332cbf9/drawee-2.0.0/jars/classes.jar!/" />
9
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/299541486cee301ca253077b5332cbf9/drawee-2.0.0/AndroidManifest.xml" />
10
- </CLASSES>
11
- <JAVADOC>
12
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fresco/drawee/2.0.0/416ad28d3ec4edf504c4253b25dc27af1127872c/drawee-2.0.0-javadoc.jar!/" />
13
- </JAVADOC>
14
- <SOURCES>
15
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fresco/drawee/2.0.0/fd8babf68363a8fb0585271b553e1d8537de137f/drawee-2.0.0-sources.jar!/" />
16
- </SOURCES>
17
- </library>
18
- </component>
@@ -1,22 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="Gradle: com.facebook.fresco:fbcore:2.0.0@aar">
3
- <ANNOTATIONS>
4
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/292f691ae42284babe27a48e58f3c00c/fbcore-2.0.0/annotations.zip!/" />
5
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a3c0183cbeee9b5239a2eb7551f165d2/fbcore-2.0.0/annotations.zip!/" />
6
- </ANNOTATIONS>
7
- <CLASSES>
8
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a3c0183cbeee9b5239a2eb7551f165d2/fbcore-2.0.0/res" />
9
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/292f691ae42284babe27a48e58f3c00c/fbcore-2.0.0/AndroidManifest.xml" />
10
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/292f691ae42284babe27a48e58f3c00c/fbcore-2.0.0/res" />
11
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/292f691ae42284babe27a48e58f3c00c/fbcore-2.0.0/jars/classes.jar!/" />
12
- <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a3c0183cbeee9b5239a2eb7551f165d2/fbcore-2.0.0/AndroidManifest.xml" />
13
- <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a3c0183cbeee9b5239a2eb7551f165d2/fbcore-2.0.0/jars/classes.jar!/" />
14
- </CLASSES>
15
- <JAVADOC>
16
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fresco/fbcore/2.0.0/4c3bef1ba14c0daa24d8630cdaec88fa254c8c59/fbcore-2.0.0-javadoc.jar!/" />
17
- </JAVADOC>
18
- <SOURCES>
19
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.fresco/fbcore/2.0.0/63bfb99f5b76be2c561becd255d5a4aff49c5528/fbcore-2.0.0-sources.jar!/" />
20
- </SOURCES>
21
- </library>
22
- </component>