react-native-video-trim 3.0.10 → 4.0.0
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/LICENSE +1 -1
- package/README.md +46 -57
- package/VideoTrim.podspec +24 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +76 -51
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifest.xml +4 -2
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrim.kt +629 -0
- package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrimPackage.kt +22 -0
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/enums/ErrorCode.java +1 -1
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/interfaces/IVideoTrimmerView.java +1 -1
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/interfaces/VideoTrimListener.java +6 -5
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/MediaMetadataUtil.java +1 -1
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/StorageUtil.java +3 -1
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/VideoTrimmerUtil.java +22 -20
- package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/widgets/VideoTrimmerView.java +38 -66
- package/ios/AssetLoader.swift +2 -2
- package/ios/ErrorCode.swift +2 -2
- package/ios/ProgressAlertController.swift +2 -2
- package/ios/VideoTrim.swift +48 -838
- package/ios/VideoTrimImpl.swift +860 -0
- package/ios/VideoTrimmer.swift +2 -3
- package/ios/VideoTrimmerThumb.swift +33 -26
- package/ios/VideoTrimmerViewController.swift +47 -28
- package/lib/module/VideoTrim.nitro.js +4 -0
- package/lib/module/VideoTrim.nitro.js.map +1 -0
- package/lib/module/index.js +71 -22
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/{index.d.ts → src/VideoTrim.nitro.d.ts} +63 -89
- package/lib/typescript/src/VideoTrim.nitro.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +41 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitrogen/generated/android/c++/JEditorConfig.hpp +229 -0
- package/nitrogen/generated/android/c++/JFileValidationResult.hpp +61 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +74 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_std__unordered_map_std__string__std__string_.hpp +89 -0
- package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.cpp +131 -0
- package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.hpp +67 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/EditorConfig.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/FileValidationResult.kt +28 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void_std__string_std__unordered_map_std__string__std__string_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/HybridVideoTrimSpec.kt +82 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/videotrimOnLoad.kt +35 -0
- package/nitrogen/generated/android/videotrim+autolinking.cmake +78 -0
- package/nitrogen/generated/android/videotrim+autolinking.gradle +27 -0
- package/nitrogen/generated/android/videotrimOnLoad.cpp +50 -0
- package/nitrogen/generated/android/videotrimOnLoad.hpp +25 -0
- package/nitrogen/generated/ios/VideoTrim+autolinking.rb +60 -0
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.cpp +88 -0
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.hpp +331 -0
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Umbrella.hpp +53 -0
- package/nitrogen/generated/ios/VideoTrimAutolinking.mm +33 -0
- package/nitrogen/generated/ios/VideoTrimAutolinking.swift +25 -0
- package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.hpp +116 -0
- package/nitrogen/generated/ios/swift/EditorConfig.swift +519 -0
- package/nitrogen/generated/ios/swift/FileValidationResult.swift +57 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_FileValidationResult.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string_std__unordered_map_std__string__std__string_.swift +54 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridVideoTrimSpec.swift +53 -0
- package/nitrogen/generated/ios/swift/HybridVideoTrimSpec_cxx.swift +222 -0
- package/nitrogen/generated/shared/c++/EditorConfig.hpp +245 -0
- package/nitrogen/generated/shared/c++/FileValidationResult.hpp +77 -0
- package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.cpp +26 -0
- package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.hpp +76 -0
- package/package.json +75 -71
- package/src/VideoTrim.nitro.ts +244 -0
- package/src/index.tsx +87 -258
- package/android/src/main/AndroidManifestDeprecated.xml +0 -3
- package/android/src/main/java/com/videotrim/VideoTrimModule.java +0 -603
- package/android/src/main/java/com/videotrim/VideoTrimPackage.java +0 -28
- package/ios/VideoTrim-Bridging-Header.h +0 -2
- package/ios/VideoTrim.mm +0 -17
- package/ios/VideoTrim.xcodeproj/project.pbxproj +0 -283
- package/lib/commonjs/index.js +0 -87
- package/lib/commonjs/index.js.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/react-native-video-trim.podspec +0 -43
package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/StorageUtil.java
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.videotrim.utils;
|
|
1
|
+
package com.margelo.nitro.videotrim.utils;
|
|
2
2
|
|
|
3
3
|
import android.content.ContentValues;
|
|
4
4
|
import android.content.Context;
|
|
@@ -8,7 +8,9 @@ import android.os.Build;
|
|
|
8
8
|
import android.os.Environment;
|
|
9
9
|
import android.provider.MediaStore;
|
|
10
10
|
import android.text.TextUtils;
|
|
11
|
+
|
|
11
12
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
13
|
+
|
|
12
14
|
import java.io.File;
|
|
13
15
|
import java.io.FileInputStream;
|
|
14
16
|
import java.io.FileOutputStream;
|
package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/VideoTrimmerUtil.java
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.videotrim.utils;
|
|
1
|
+
package com.margelo.nitro.videotrim.utils;
|
|
2
2
|
|
|
3
3
|
import android.annotation.SuppressLint;
|
|
4
4
|
import android.graphics.Bitmap;
|
|
@@ -9,13 +9,13 @@ import com.arthenica.ffmpegkit.FFmpegKit;
|
|
|
9
9
|
import com.arthenica.ffmpegkit.FFmpegSession;
|
|
10
10
|
import com.arthenica.ffmpegkit.ReturnCode;
|
|
11
11
|
import com.arthenica.ffmpegkit.SessionState;
|
|
12
|
-
import com.
|
|
13
|
-
import com.
|
|
14
|
-
import com.videotrim.enums.ErrorCode;
|
|
15
|
-
import com.videotrim.interfaces.VideoTrimListener;
|
|
12
|
+
import com.margelo.nitro.videotrim.enums.ErrorCode;
|
|
13
|
+
import com.margelo.nitro.videotrim.interfaces.VideoTrimListener;
|
|
16
14
|
|
|
17
15
|
import java.text.SimpleDateFormat;
|
|
18
16
|
import java.util.Date;
|
|
17
|
+
import java.util.HashMap;
|
|
18
|
+
import java.util.Map;
|
|
19
19
|
import java.util.TimeZone;
|
|
20
20
|
|
|
21
21
|
import iknow.android.utils.DeviceUtil;
|
|
@@ -23,6 +23,7 @@ import iknow.android.utils.UnitConverter;
|
|
|
23
23
|
import iknow.android.utils.callback.SingleCallback;
|
|
24
24
|
import iknow.android.utils.thread.BackgroundExecutor;
|
|
25
25
|
|
|
26
|
+
|
|
26
27
|
public class VideoTrimmerUtil {
|
|
27
28
|
|
|
28
29
|
private static final String TAG = VideoTrimmerUtil.class.getSimpleName();
|
|
@@ -90,11 +91,12 @@ public class VideoTrimmerUtil {
|
|
|
90
91
|
}, log -> {
|
|
91
92
|
Log.d(TAG, "FFmpeg process started with log " + log.getMessage());
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
map.
|
|
95
|
-
map.
|
|
96
|
-
map.
|
|
97
|
-
map.
|
|
94
|
+
Map<String, String> map = new HashMap<>();
|
|
95
|
+
map.put("level", String.valueOf(log.getLevel().getValue()));
|
|
96
|
+
map.put("message", log.getMessage());
|
|
97
|
+
map.put("sessionId", String.valueOf(log.getSessionId()));
|
|
98
|
+
map.put("logStr", log.toString());
|
|
99
|
+
|
|
98
100
|
callback.onLog(map);
|
|
99
101
|
}, statistics -> {
|
|
100
102
|
int timeInMilliseconds = (int) statistics.getTime();
|
|
@@ -104,16 +106,16 @@ public class VideoTrimmerUtil {
|
|
|
104
106
|
callback.onTrimmingProgress(Math.min(Math.max(completePercentage, 0), 100));
|
|
105
107
|
}
|
|
106
108
|
|
|
107
|
-
|
|
108
|
-
map.
|
|
109
|
-
map.
|
|
110
|
-
map.
|
|
111
|
-
map.
|
|
112
|
-
map.
|
|
113
|
-
map.
|
|
114
|
-
map.
|
|
115
|
-
map.
|
|
116
|
-
map.
|
|
109
|
+
Map<String, String> map = new HashMap<>();
|
|
110
|
+
map.put("sessionId", String.valueOf(statistics.getSessionId()));
|
|
111
|
+
map.put("videoFrameNumber", String.valueOf(statistics.getVideoFrameNumber()));
|
|
112
|
+
map.put("videoFps", String.valueOf(statistics.getVideoFps()));
|
|
113
|
+
map.put("videoQuality", String.valueOf(statistics.getVideoQuality()));
|
|
114
|
+
map.put("size", String.valueOf(statistics.getSize()));
|
|
115
|
+
map.put("time", String.valueOf(statistics.getTime()));
|
|
116
|
+
map.put("bitrate", String.valueOf(statistics.getBitrate()));
|
|
117
|
+
map.put("speed", String.valueOf(statistics.getSpeed()));
|
|
118
|
+
map.put("statisticsStr", statistics.toString());
|
|
117
119
|
callback.onStatistics(map);
|
|
118
120
|
});
|
|
119
121
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
package com.videotrim.widgets;
|
|
1
|
+
package com.margelo.nitro.videotrim.widgets;
|
|
2
2
|
|
|
3
3
|
import static com.facebook.react.bridge.UiThreadUtil.runOnUiThread;
|
|
4
|
-
import static com.videotrim.utils.VideoTrimmerUtil.RECYCLER_VIEW_PADDING;
|
|
5
|
-
import static com.videotrim.utils.VideoTrimmerUtil.VIDEO_FRAMES_WIDTH;
|
|
4
|
+
import static com.margelo.nitro.videotrim.utils.VideoTrimmerUtil.RECYCLER_VIEW_PADDING;
|
|
5
|
+
import static com.margelo.nitro.videotrim.utils.VideoTrimmerUtil.VIDEO_FRAMES_WIDTH;
|
|
6
6
|
|
|
7
7
|
import android.content.Context;
|
|
8
8
|
import android.content.pm.ActivityInfo;
|
|
@@ -32,15 +32,16 @@ import android.widget.VideoView;
|
|
|
32
32
|
|
|
33
33
|
import androidx.appcompat.app.AlertDialog;
|
|
34
34
|
|
|
35
|
+
import com.arthenica.ffmpegkit.FFmpegSession;
|
|
35
36
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
36
|
-
import com.
|
|
37
|
-
import com.videotrim.R;
|
|
38
|
-
import com.videotrim.enums.ErrorCode;
|
|
39
|
-
import com.videotrim.interfaces.IVideoTrimmerView;
|
|
40
|
-
import com.videotrim.interfaces.VideoTrimListener;
|
|
41
|
-
import com.videotrim.utils.MediaMetadataUtil;
|
|
42
|
-
import com.videotrim.utils.StorageUtil;
|
|
43
|
-
import com.videotrim.utils.VideoTrimmerUtil;
|
|
37
|
+
import com.margelo.nitro.videotrim.EditorConfig;
|
|
38
|
+
import com.margelo.nitro.videotrim.R;
|
|
39
|
+
import com.margelo.nitro.videotrim.enums.ErrorCode;
|
|
40
|
+
import com.margelo.nitro.videotrim.interfaces.IVideoTrimmerView;
|
|
41
|
+
import com.margelo.nitro.videotrim.interfaces.VideoTrimListener;
|
|
42
|
+
import com.margelo.nitro.videotrim.utils.MediaMetadataUtil;
|
|
43
|
+
import com.margelo.nitro.videotrim.utils.StorageUtil;
|
|
44
|
+
import com.margelo.nitro.videotrim.utils.VideoTrimmerUtil;
|
|
44
45
|
|
|
45
46
|
import java.io.IOException;
|
|
46
47
|
import java.util.Locale;
|
|
@@ -48,7 +49,6 @@ import java.util.Locale;
|
|
|
48
49
|
import iknow.android.utils.DeviceUtil;
|
|
49
50
|
import iknow.android.utils.thread.BackgroundExecutor;
|
|
50
51
|
import iknow.android.utils.thread.UiThreadExecutor;
|
|
51
|
-
import com.arthenica.ffmpegkit.FFmpegSession;
|
|
52
52
|
|
|
53
53
|
public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
|
|
54
54
|
|
|
@@ -116,16 +116,16 @@ public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
|
|
|
116
116
|
private String alertOnFailCloseText = "Close";
|
|
117
117
|
private View currentSelectedhandle;
|
|
118
118
|
|
|
119
|
-
public VideoTrimmerView(ReactApplicationContext context,
|
|
119
|
+
public VideoTrimmerView(ReactApplicationContext context, EditorConfig config, AttributeSet attrs) {
|
|
120
120
|
this(context, attrs, 0, config);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
public VideoTrimmerView(ReactApplicationContext context, AttributeSet attrs, int defStyleAttr,
|
|
123
|
+
public VideoTrimmerView(ReactApplicationContext context, AttributeSet attrs, int defStyleAttr, EditorConfig config) {
|
|
124
124
|
super(context, attrs, defStyleAttr);
|
|
125
125
|
init(context, config);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
private void init(ReactApplicationContext context,
|
|
128
|
+
private void init(ReactApplicationContext context, EditorConfig config) {
|
|
129
129
|
this.mContext = context;
|
|
130
130
|
|
|
131
131
|
context.getCurrentActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
|
@@ -445,79 +445,51 @@ public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
|
|
|
445
445
|
return screenWidth;
|
|
446
446
|
}
|
|
447
447
|
|
|
448
|
-
private void configure(
|
|
449
|
-
if (config.
|
|
450
|
-
mMaxDuration = Math.max(0, config.
|
|
451
|
-
}
|
|
452
|
-
if (config.hasKey("minDuration")) {
|
|
453
|
-
mMinDuration = Math.max(1000L, config.getInt("minDuration") * 1000L);
|
|
448
|
+
private void configure(EditorConfig config) {
|
|
449
|
+
if (config.getMaxDuration() > 0) {
|
|
450
|
+
mMaxDuration = (long) Math.max(0, config.getMaxDuration() * 1000L);
|
|
454
451
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
if (config.hasKey("saveButtonText")) {
|
|
459
|
-
saveBtn.setText(config.getString("saveButtonText"));
|
|
452
|
+
|
|
453
|
+
if (config.getMinDuration() > 0) {
|
|
454
|
+
mMinDuration = (long) Math.max(1000L, config.getMinDuration() * 1000L);
|
|
460
455
|
}
|
|
461
456
|
|
|
462
|
-
|
|
463
|
-
isVideoType = !config.getString("type").equals("audio");
|
|
457
|
+
cancelBtn.setText(config.getCancelButtonText());
|
|
464
458
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
// }
|
|
469
|
-
}
|
|
459
|
+
saveBtn.setText(config.getSaveButtonText());
|
|
460
|
+
|
|
461
|
+
isVideoType = config.getType().equals("video");
|
|
470
462
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
} else if (!isVideoType) {
|
|
463
|
+
mOutputExt = config.getOutputExt();
|
|
464
|
+
if (!isVideoType) {
|
|
474
465
|
mOutputExt = "wav";
|
|
475
466
|
}
|
|
476
467
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
}
|
|
468
|
+
enableHapticFeedback = config.getEnableHapticFeedback();
|
|
469
|
+
autoplay = config.getAutoplay();
|
|
480
470
|
|
|
481
|
-
if (config.
|
|
482
|
-
|
|
471
|
+
if (config.getJumpToPositionOnLoad() > 0) {
|
|
472
|
+
jumpToPositionOnLoad = (long) config.getJumpToPositionOnLoad();
|
|
483
473
|
}
|
|
484
474
|
|
|
485
|
-
|
|
486
|
-
jumpToPositionOnLoad = config.getInt("jumpToPositionOnLoad");
|
|
487
|
-
}
|
|
488
|
-
// check if config.getString("headerText") is not empty
|
|
475
|
+
headerText.setText(config.getHeaderText());
|
|
489
476
|
|
|
490
|
-
|
|
491
|
-
headerText.setText(config.getString("headerText"));
|
|
492
|
-
|
|
493
|
-
if (config.hasKey("headerTextSize")) {
|
|
494
|
-
int textSize = config.getInt("headerTextSize");
|
|
477
|
+
int textSize = (int) config.getHeaderTextSize();
|
|
495
478
|
if (textSize < 0) {
|
|
496
479
|
textSize = 16;
|
|
497
480
|
}
|
|
498
481
|
headerText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
if (config.hasKey("headerTextColor")) {
|
|
502
|
-
headerText.setTextColor(config.getInt("headerTextColor"));
|
|
503
|
-
}
|
|
482
|
+
headerText.setTextColor((int) config.getHeaderTextColor());
|
|
504
483
|
|
|
505
484
|
headerView.setVisibility(View.VISIBLE);
|
|
506
|
-
}
|
|
507
485
|
|
|
508
|
-
alertOnFailToLoad =
|
|
486
|
+
alertOnFailToLoad = config.getAlertOnFailToLoad();
|
|
509
487
|
|
|
510
|
-
|
|
511
|
-
alertOnFailTitle = config.getString("alertOnFailTitle");
|
|
512
|
-
}
|
|
488
|
+
alertOnFailTitle = config.getAlertOnFailTitle();
|
|
513
489
|
|
|
514
|
-
|
|
515
|
-
alertOnFailMessage = config.getString("alertOnFailMessage");
|
|
516
|
-
}
|
|
490
|
+
alertOnFailMessage = config.getAlertOnFailMessage();
|
|
517
491
|
|
|
518
|
-
|
|
519
|
-
alertOnFailCloseText = config.getString("alertOnFailCloseText");
|
|
520
|
-
}
|
|
492
|
+
alertOnFailCloseText = config.getAlertOnFailCloseText();
|
|
521
493
|
}
|
|
522
494
|
|
|
523
495
|
private void startTimingRunnable() {
|
package/ios/AssetLoader.swift
CHANGED
package/ios/ErrorCode.swift
CHANGED