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.
- package/README.md +2 -2
- package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.1.1/gc.properties +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.idea/jarRepositories.xml +10 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -0
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
- 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
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_1_aar.xml +14 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
- package/android/.idea/libraries/Gradle__io_github_lizhangqu_coreprogress_1_0_2_aar.xml +5 -2
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +13 -0
- package/android/.idea/modules/android.iml +34 -26
- package/android/build.gradle +6 -6
- package/android/src/main/java/com/.DS_Store +0 -0
- package/android/src/main/java/com/reactnativecompressor/.DS_Store +0 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +3 -5
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +1 -38
- package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.java +210 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +9 -10
- package/android/src/main/java/com/reactnativecompressor/Video/.DS_Store +0 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +23 -8
- package/ios/Video/VideoCompressor.swift +5 -4
- package/lib/commonjs/Audio/index.js.map +1 -1
- package/lib/module/Audio/index.js.map +1 -1
- package/package.json +2 -1
- package/src/Audio/index.tsx +1 -1
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +0 -20
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +0 -22
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_zolad_videoslimmer_1_0_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_0.xml +0 -13
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimEncoder.java +0 -629
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimTask.java +0 -59
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/VideoSlimmer.java +0 -20
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/listner/SlimProgressListener.java +0 -6
- package/android/src/main/java/com/reactnativecompressor/Video/videoslimmer/muxer/CodecInputSurface.java +0 -202
- 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
|
|
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
|
|
12
|
-
import
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
74
|
+
VideoCompressTask export=compressorExports.get(uuid);
|
|
76
75
|
export.cancel(true);
|
|
77
76
|
}
|
|
78
77
|
catch (Exception ex) {
|
|
Binary file
|
|
@@ -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
|
|
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
|
-
|
|
55
|
+
final VideoCompressorHelper options = VideoCompressorHelper.fromMap(optionMap);
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
if(fileUrl.startsWith("content://"))
|
|
58
|
+
{
|
|
59
|
+
try {
|
|
60
|
+
Uri uri= Uri.parse(fileUrl);
|
|
61
|
+
fileUrl= RealPathUtil.getRealPath(reactContext,uri);
|
|
56
62
|
}
|
|
57
|
-
|
|
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
|
-
|
|
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)==
|
|
378
|
+
if(Int(_progress)==videoCompressionCounter)
|
|
378
379
|
{
|
|
379
|
-
|
|
380
|
+
videoCompressionCounter=Int(_progress)+self.videoCompressionThreshold
|
|
380
381
|
onProgress(progress)
|
|
381
382
|
}
|
|
382
383
|
|
|
383
384
|
}, completionHandler: { result in
|
|
384
|
-
|
|
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,
|
|
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,
|
|
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.
|
|
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",
|
package/src/Audio/index.tsx
CHANGED
|
@@ -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>
|