react-native-video-trim 3.0.10 → 4.1.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.
Files changed (92) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +80 -63
  3. package/VideoTrim.podspec +24 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +82 -49
  6. package/android/gradle.properties +7 -5
  7. package/android/src/main/AndroidManifest.xml +4 -2
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrim.kt +646 -0
  10. package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrimPackage.kt +22 -0
  11. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/enums/ErrorCode.java +1 -1
  12. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/interfaces/IVideoTrimmerView.java +1 -1
  13. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/interfaces/VideoTrimListener.java +6 -5
  14. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/MediaMetadataUtil.java +1 -1
  15. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/StorageUtil.java +3 -1
  16. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/utils/VideoTrimmerUtil.java +51 -41
  17. package/android/src/main/java/com/{videotrim → margelo/nitro/videotrim}/widgets/VideoTrimmerView.java +45 -69
  18. package/ios/AssetLoader.swift +2 -2
  19. package/ios/ErrorCode.swift +2 -2
  20. package/ios/ProgressAlertController.swift +2 -2
  21. package/ios/VideoTrim.swift +52 -835
  22. package/ios/VideoTrimImpl.swift +957 -0
  23. package/ios/VideoTrimmer.swift +2 -3
  24. package/ios/VideoTrimmerThumb.swift +33 -26
  25. package/ios/VideoTrimmerViewController.swift +47 -28
  26. package/lib/module/VideoTrim.nitro.js +4 -0
  27. package/lib/module/VideoTrim.nitro.js.map +1 -0
  28. package/lib/module/index.js +98 -22
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/module/package.json +1 -0
  31. package/lib/typescript/package.json +1 -0
  32. package/lib/typescript/{index.d.ts → src/VideoTrim.nitro.d.ts} +125 -134
  33. package/lib/typescript/src/VideoTrim.nitro.d.ts.map +1 -0
  34. package/lib/typescript/src/index.d.ts +49 -0
  35. package/lib/typescript/src/index.d.ts.map +1 -0
  36. package/nitrogen/generated/android/c++/JEditorConfig.hpp +237 -0
  37. package/nitrogen/generated/android/c++/JFileValidationResult.hpp +61 -0
  38. package/nitrogen/generated/android/c++/JFunc_void.hpp +74 -0
  39. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__unordered_map_std__string__std__string_.hpp +89 -0
  40. package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.cpp +151 -0
  41. package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.hpp +68 -0
  42. package/nitrogen/generated/android/c++/JTrimOptions.hpp +109 -0
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/EditorConfig.kt +72 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/FileValidationResult.kt +28 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void.kt +80 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void_std__string_std__unordered_map_std__string__std__string_.kt +80 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/HybridVideoTrimSpec.kt +86 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/TrimOptions.kt +40 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/videotrimOnLoad.kt +35 -0
  50. package/nitrogen/generated/android/videotrim+autolinking.cmake +78 -0
  51. package/nitrogen/generated/android/videotrim+autolinking.gradle +27 -0
  52. package/nitrogen/generated/android/videotrimOnLoad.cpp +50 -0
  53. package/nitrogen/generated/android/videotrimOnLoad.hpp +25 -0
  54. package/nitrogen/generated/ios/VideoTrim+autolinking.rb +60 -0
  55. package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.cpp +96 -0
  56. package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.hpp +374 -0
  57. package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Umbrella.hpp +56 -0
  58. package/nitrogen/generated/ios/VideoTrimAutolinking.mm +33 -0
  59. package/nitrogen/generated/ios/VideoTrimAutolinking.swift +25 -0
  60. package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.cpp +11 -0
  61. package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.hpp +127 -0
  62. package/nitrogen/generated/ios/swift/EditorConfig.swift +541 -0
  63. package/nitrogen/generated/ios/swift/FileValidationResult.swift +57 -0
  64. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  65. package/nitrogen/generated/ios/swift/Func_void_FileValidationResult.swift +46 -0
  66. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  67. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  68. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  69. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  70. package/nitrogen/generated/ios/swift/Func_void_std__string_std__unordered_map_std__string__std__string_.swift +54 -0
  71. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +46 -0
  72. package/nitrogen/generated/ios/swift/HybridVideoTrimSpec.swift +54 -0
  73. package/nitrogen/generated/ios/swift/HybridVideoTrimSpec_cxx.swift +241 -0
  74. package/nitrogen/generated/ios/swift/TrimOptions.swift +189 -0
  75. package/nitrogen/generated/shared/c++/EditorConfig.hpp +253 -0
  76. package/nitrogen/generated/shared/c++/FileValidationResult.hpp +77 -0
  77. package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.cpp +27 -0
  78. package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.hpp +80 -0
  79. package/nitrogen/generated/shared/c++/TrimOptions.hpp +125 -0
  80. package/package.json +75 -71
  81. package/src/VideoTrim.nitro.ts +263 -0
  82. package/src/index.tsx +120 -257
  83. package/android/src/main/AndroidManifestDeprecated.xml +0 -3
  84. package/android/src/main/java/com/videotrim/VideoTrimModule.java +0 -603
  85. package/android/src/main/java/com/videotrim/VideoTrimPackage.java +0 -28
  86. package/ios/VideoTrim-Bridging-Header.h +0 -2
  87. package/ios/VideoTrim.mm +0 -17
  88. package/ios/VideoTrim.xcodeproj/project.pbxproj +0 -283
  89. package/lib/commonjs/index.js +0 -87
  90. package/lib/commonjs/index.js.map +0 -1
  91. package/lib/typescript/index.d.ts.map +0 -1
  92. package/react-native-video-trim.podspec +0 -43
@@ -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;
@@ -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,15 @@ 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.facebook.react.bridge.Arguments;
13
- import com.facebook.react.bridge.WritableMap;
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;
16
+ import java.util.ArrayList;
18
17
  import java.util.Date;
18
+ import java.util.HashMap;
19
+ import java.util.List;
20
+ import java.util.Map;
19
21
  import java.util.TimeZone;
20
22
 
21
23
  import iknow.android.utils.DeviceUtil;
@@ -23,6 +25,7 @@ import iknow.android.utils.UnitConverter;
23
25
  import iknow.android.utils.callback.SingleCallback;
24
26
  import iknow.android.utils.thread.BackgroundExecutor;
25
27
 
28
+
26
29
  public class VideoTrimmerUtil {
27
30
 
28
31
  private static final String TAG = VideoTrimmerUtil.class.getSimpleName();
@@ -42,7 +45,7 @@ public class VideoTrimmerUtil {
42
45
  public static final int THUMB_WIDTH = UnitConverter.dpToPx(25); // x2 for better resolution
43
46
  private static final int THUMB_RESOLUTION_RES = 2; // double thumb resolution for better quality
44
47
 
45
- public static FFmpegSession trim(String inputFile, String outputFile, int videoDuration, long startMs, long endMs, final VideoTrimListener callback) {
48
+ public static FFmpegSession trim(String inputFile, String outputFile, int videoDuration, long startMs, long endMs, boolean enableRotation, double rotationAngle, final VideoTrimListener callback) {
46
49
  // Get the current date and time
47
50
  Date currentDate = new Date();
48
51
 
@@ -54,26 +57,32 @@ public class VideoTrimmerUtil {
54
57
  // Format the current date and time
55
58
  String formattedDateTime = dateFormat.format(currentDate);
56
59
 
57
- String[] cmds = {
58
- "-ss",
59
- startMs + "ms",
60
- "-to",
61
- endMs + "ms",
62
- "-i",
63
- inputFile,
64
- "-c",
65
- "copy",
66
- "-metadata",
67
- "creation_time=" + formattedDateTime,
68
- outputFile
69
- };
70
- Log.d(TAG,"Command111: " + String.join(",", cmds));
71
-
72
- FFmpegSession s = FFmpegKit.execute("-protocols");
73
- Log.d(TAG, "1111getOutput: " + s.getOutput());
74
- Log.d(TAG, "1111getAllLogs: " + s.getAllLogs());
75
-
76
- return FFmpegKit.executeWithArgumentsAsync(cmds, session -> {
60
+ // create list to store commands
61
+ List<String> cmds = new ArrayList<>();
62
+ cmds.add("-ss");
63
+ cmds.add(startMs + "ms");
64
+ cmds.add("-to");
65
+ cmds.add(endMs + "ms");
66
+
67
+ if (enableRotation) {
68
+ // add "-display_rotation" and rotation angle to the command, contact, not creating new
69
+ cmds.add("-display_rotation");
70
+ cmds.add(String.valueOf(rotationAngle));
71
+ }
72
+
73
+ cmds.add("-i");
74
+ cmds.add(inputFile);
75
+ cmds.add("-c");
76
+ cmds.add("copy");
77
+ cmds.add("-metadata");
78
+ cmds.add("creation_time=" + formattedDateTime);
79
+ cmds.add(outputFile);
80
+
81
+ String[] command = cmds.toArray(new String[0]);
82
+
83
+ Log.d(TAG,"Command: " + String.join(",", command));
84
+
85
+ return FFmpegKit.executeWithArgumentsAsync(command, session -> {
77
86
  SessionState state = session.getState();
78
87
  ReturnCode returnCode = session.getReturnCode();
79
88
  if (ReturnCode.isSuccess(session.getReturnCode())) {
@@ -90,11 +99,12 @@ public class VideoTrimmerUtil {
90
99
  }, log -> {
91
100
  Log.d(TAG, "FFmpeg process started with log " + log.getMessage());
92
101
 
93
- WritableMap map = Arguments.createMap();
94
- map.putInt("level", log.getLevel().getValue());
95
- map.putString("message", log.getMessage());
96
- map.putDouble("sessionId", log.getSessionId());
97
- map.putString("logStr", log.toString());
102
+ Map<String, String> map = new HashMap<>();
103
+ map.put("level", String.valueOf(log.getLevel().getValue()));
104
+ map.put("message", log.getMessage());
105
+ map.put("sessionId", String.valueOf(log.getSessionId()));
106
+ map.put("logStr", log.toString());
107
+
98
108
  callback.onLog(map);
99
109
  }, statistics -> {
100
110
  int timeInMilliseconds = (int) statistics.getTime();
@@ -104,16 +114,16 @@ public class VideoTrimmerUtil {
104
114
  callback.onTrimmingProgress(Math.min(Math.max(completePercentage, 0), 100));
105
115
  }
106
116
 
107
- WritableMap map = Arguments.createMap();
108
- map.putDouble("sessionId", statistics.getSessionId());
109
- map.putInt("videoFrameNumber", statistics.getVideoFrameNumber());
110
- map.putDouble("videoFps", statistics.getVideoFps());
111
- map.putDouble("videoQuality", statistics.getVideoQuality());
112
- map.putDouble("size", statistics.getSize());
113
- map.putDouble("time", statistics.getTime());
114
- map.putDouble("bitrate", statistics.getBitrate());
115
- map.putDouble("speed", statistics.getSpeed());
116
- map.putString("statisticsStr", statistics.toString());
117
+ Map<String, String> map = new HashMap<>();
118
+ map.put("sessionId", String.valueOf(statistics.getSessionId()));
119
+ map.put("videoFrameNumber", String.valueOf(statistics.getVideoFrameNumber()));
120
+ map.put("videoFps", String.valueOf(statistics.getVideoFps()));
121
+ map.put("videoQuality", String.valueOf(statistics.getVideoQuality()));
122
+ map.put("size", String.valueOf(statistics.getSize()));
123
+ map.put("time", String.valueOf(statistics.getTime()));
124
+ map.put("bitrate", String.valueOf(statistics.getBitrate()));
125
+ map.put("speed", String.valueOf(statistics.getSpeed()));
126
+ map.put("statisticsStr", statistics.toString());
117
127
  callback.onStatistics(map);
118
128
  });
119
129
  }
@@ -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.facebook.react.bridge.ReadableMap;
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
 
@@ -87,6 +87,9 @@ public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
87
87
  private RelativeLayout trimmerContainerWrapper;
88
88
 
89
89
  private long startTime = 0, endTime = 0;
90
+ private boolean enableRotation = false;
91
+ private double rotationAngle = 0.0;
92
+
90
93
  private Vibrator vibrator;
91
94
  private boolean didClampWhilePanning = false;
92
95
 
@@ -116,16 +119,16 @@ public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
116
119
  private String alertOnFailCloseText = "Close";
117
120
  private View currentSelectedhandle;
118
121
 
119
- public VideoTrimmerView(ReactApplicationContext context, ReadableMap config, AttributeSet attrs) {
122
+ public VideoTrimmerView(ReactApplicationContext context, EditorConfig config, AttributeSet attrs) {
120
123
  this(context, attrs, 0, config);
121
124
  }
122
125
 
123
- public VideoTrimmerView(ReactApplicationContext context, AttributeSet attrs, int defStyleAttr, ReadableMap config) {
126
+ public VideoTrimmerView(ReactApplicationContext context, AttributeSet attrs, int defStyleAttr, EditorConfig config) {
124
127
  super(context, attrs, defStyleAttr);
125
128
  init(context, config);
126
129
  }
127
130
 
128
- private void init(ReactApplicationContext context, ReadableMap config) {
131
+ private void init(ReactApplicationContext context, EditorConfig config) {
129
132
  this.mContext = context;
130
133
 
131
134
  context.getCurrentActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -374,6 +377,8 @@ public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
374
377
  mDuration,
375
378
  startTime,
376
379
  endTime,
380
+ enableRotation,
381
+ rotationAngle,
377
382
  mOnTrimVideoListener
378
383
  );
379
384
  }
@@ -445,79 +450,50 @@ public class VideoTrimmerView extends FrameLayout implements IVideoTrimmerView {
445
450
  return screenWidth;
446
451
  }
447
452
 
448
- private void configure(ReadableMap config) {
449
- if (config.hasKey("maxDuration")) {
450
- mMaxDuration = Math.max(0, config.getInt("maxDuration") * 1000L);
453
+ private void configure(EditorConfig config) {
454
+ if (config.getMaxDuration() > 0) {
455
+ mMaxDuration = (long) Math.max(0, config.getMaxDuration() * 1000L);
451
456
  }
452
- if (config.hasKey("minDuration")) {
453
- mMinDuration = Math.max(1000L, config.getInt("minDuration") * 1000L);
454
- }
455
- if (config.hasKey("cancelButtonText")) {
456
- cancelBtn.setText(config.getString("cancelButtonText"));
457
- }
458
- if (config.hasKey("saveButtonText")) {
459
- saveBtn.setText(config.getString("saveButtonText"));
457
+
458
+ if (config.getMinDuration() > 0) {
459
+ mMinDuration = (long) Math.max(1000L, config.getMinDuration() * 1000L);
460
460
  }
461
461
 
462
- if (config.hasKey("type")) {
463
- isVideoType = !config.getString("type").equals("audio");
462
+ cancelBtn.setText(config.getCancelButtonText());
464
463
 
465
- // if (!isVideoType) {
466
- // mThumbnailContainer.setAlpha(0f);
467
- // mThumbnailContainer.setBackground(ContextCompat.getDrawable(mContext, R.drawable.thumb_container_bg));
468
- // }
469
- }
464
+ saveBtn.setText(config.getSaveButtonText());
470
465
 
471
- if (config.hasKey("outputExt")) {
472
- mOutputExt = config.getString("outputExt");
473
- } else if (!isVideoType) {
474
- mOutputExt = "wav";
475
- }
466
+ isVideoType = config.getType().equals("video");
476
467
 
477
- if (config.hasKey("enableHapticFeedback")) {
478
- enableHapticFeedback = config.getBoolean("enableHapticFeedback");
468
+ mOutputExt = config.getOutputExt();
469
+ if (!isVideoType) {
470
+ mOutputExt = "wav";
479
471
  }
480
472
 
481
- if (config.hasKey("autoplay")) {
482
- autoplay = config.getBoolean("autoplay");
483
- }
473
+ enableHapticFeedback = config.getEnableHapticFeedback();
474
+ autoplay = config.getAutoplay();
484
475
 
485
- if (config.hasKey("jumpToPositionOnLoad")) {
486
- jumpToPositionOnLoad = config.getInt("jumpToPositionOnLoad");
476
+ if (config.getJumpToPositionOnLoad() > 0) {
477
+ jumpToPositionOnLoad = (long) config.getJumpToPositionOnLoad();
487
478
  }
488
- // check if config.getString("headerText") is not empty
489
479
 
490
- if (config.hasKey("headerText") && !config.getString("headerText").isEmpty()){
491
- headerText.setText(config.getString("headerText"));
480
+ headerText.setText(config.getHeaderText());
492
481
 
493
- if (config.hasKey("headerTextSize")) {
494
- int textSize = config.getInt("headerTextSize");
482
+ int textSize = (int) config.getHeaderTextSize();
495
483
  if (textSize < 0) {
496
484
  textSize = 16;
497
485
  }
498
486
  headerText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
499
- }
500
-
501
- if (config.hasKey("headerTextColor")) {
502
- headerText.setTextColor(config.getInt("headerTextColor"));
503
- }
487
+ headerText.setTextColor((int) config.getHeaderTextColor());
504
488
 
505
489
  headerView.setVisibility(View.VISIBLE);
506
- }
507
-
508
- alertOnFailToLoad = !config.hasKey("alertOnFailToLoad") || config.getBoolean("alertOnFailToLoad");
509
490
 
510
- if (config.hasKey("alertOnFailTitle")) {
511
- alertOnFailTitle = config.getString("alertOnFailTitle");
512
- }
513
-
514
- if (config.hasKey("alertOnFailMessage")) {
515
- alertOnFailMessage = config.getString("alertOnFailMessage");
516
- }
517
-
518
- if (config.hasKey("alertOnFailCloseText")) {
519
- alertOnFailCloseText = config.getString("alertOnFailCloseText");
520
- }
491
+ alertOnFailToLoad = config.getAlertOnFailToLoad();
492
+ alertOnFailTitle = config.getAlertOnFailTitle();
493
+ alertOnFailMessage = config.getAlertOnFailMessage();
494
+ alertOnFailCloseText = config.getAlertOnFailCloseText();
495
+ enableRotation = config.getEnableRotation();
496
+ rotationAngle = config.getRotationAngle();
521
497
  }
522
498
 
523
499
  private void startTimingRunnable() {
@@ -1,8 +1,8 @@
1
1
  //
2
2
  // AssetLoader.swift
3
- // react-native-video-trim
3
+ // VideoTrim
4
4
  //
5
- // Created by Duc Trung Mai on 7/27/24.
5
+ // Created by Duc Trung Mai on 20/5/25.
6
6
  //
7
7
 
8
8
  import AVFoundation
@@ -1,8 +1,8 @@
1
1
  //
2
2
  // ErrorCode.swift
3
- // react-native-video-trim
3
+ // VideoTrim
4
4
  //
5
- // Created by ByteDance on 7/27/24.
5
+ // Created by Duc Trung Mai on 20/5/25.
6
6
  //
7
7
 
8
8
  import Foundation
@@ -1,8 +1,8 @@
1
1
  //
2
2
  // ProgressAlertController.swift
3
- // react-native-video-trim
3
+ // VideoTrim
4
4
  //
5
- // Created by Duc Trung Mai on 8/18/24.
5
+ // Created by Duc Trung Mai on 20/5/25.
6
6
  //
7
7
 
8
8
  import UIKit