react-native-compressor 1.8.0 → 1.8.1
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 +21 -1
- package/android/build.gradle +2 -1
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +12 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/createVideoThumbnail.kt +158 -0
- package/android/src/oldarch/CompressorSpec.kt +2 -0
- package/ios/Compressor.mm +9 -0
- package/ios/CompressorManager.swift +11 -0
- package/ios/Utils/CreateVideoThumbnail.swift +111 -0
- package/lib/commonjs/Spec/NativeCompressor.js.map +1 -1
- package/lib/commonjs/index.js +14 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/index.js +12 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Spec/NativeCompressor.js.map +1 -1
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/index.js +7 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/Spec/NativeCompressor.d.ts +8 -0
- package/lib/typescript/Spec/NativeCompressor.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +4 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +2 -0
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Spec/NativeCompressor.ts +11 -0
- package/src/index.tsx +6 -0
- package/src/utils/index.tsx +13 -0
package/README.md
CHANGED
|
@@ -84,7 +84,7 @@ yarn add react-native-compressor
|
|
|
84
84
|
|
|
85
85
|
### [New Architecture (Turbo Module)](https://reactnative.dev/docs/new-architecture-intro) Supported
|
|
86
86
|
|
|
87
|
-
you can give feedback on [Discord channel](https://discord.gg/
|
|
87
|
+
you can give feedback on [Discord channel](https://discord.gg/6Wx8Em8KAN)
|
|
88
88
|
|
|
89
89
|
### Managed Expo
|
|
90
90
|
|
|
@@ -299,6 +299,16 @@ const downloadFileUrl = await download(url, (progress) => {
|
|
|
299
299
|
});
|
|
300
300
|
```
|
|
301
301
|
|
|
302
|
+
### Video Thumbnail
|
|
303
|
+
|
|
304
|
+
```js
|
|
305
|
+
import { createVideoThumbnail, clearCache } from 'react-native-compressor';
|
|
306
|
+
|
|
307
|
+
const thumbnail = await createVideoThumbnail(videoUri);
|
|
308
|
+
|
|
309
|
+
await clearCache(); // this will clear cache of thumbnails cache directory
|
|
310
|
+
```
|
|
311
|
+
|
|
302
312
|
# API
|
|
303
313
|
|
|
304
314
|
## Image
|
|
@@ -421,6 +431,16 @@ type FileSystemUploadOptions = (
|
|
|
421
431
|
|
|
422
432
|
- ##### download: ( fileUrl: string, downloadProgress?: (progress: number) => void, progressDivider?: number ) => Promise< string >
|
|
423
433
|
|
|
434
|
+
### Create Video Thumbnail and clear cache
|
|
435
|
+
|
|
436
|
+
- #### createVideoThumbnail( fileUrl: string, options: {header:Object} ): Promise<{ path: string;size: number; mime: string; width: number; height: number; }>
|
|
437
|
+
|
|
438
|
+
it will save the thumbnail of the video into the cache directory and return the thumbnail URI which you can display
|
|
439
|
+
|
|
440
|
+
- #### clearCache(cacheDir?: string): Promise< string >
|
|
441
|
+
|
|
442
|
+
it will clear the cache that was created from createVideoThumbnail, in future this clear cache will be totally customized
|
|
443
|
+
|
|
424
444
|
### Get Metadata Of Video
|
|
425
445
|
|
|
426
446
|
if you want to get metadata of video than you can use this function
|
package/android/build.gradle
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
buildscript {
|
|
2
2
|
// Buildscript is evaluated before everything else so we can't use getExtOrDefault
|
|
3
3
|
def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Compressor_kotlinVersion"]
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
repositories {
|
|
6
6
|
google()
|
|
7
7
|
mavenCentral()
|
|
@@ -110,6 +110,7 @@ dependencies {
|
|
|
110
110
|
//noinspection GradleDynamicVersion
|
|
111
111
|
implementation "com.facebook.react:react-native:+"
|
|
112
112
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
113
|
+
implementation 'commons-io:commons-io:2.8.0'
|
|
113
114
|
implementation 'io.github.lizhangqu:coreprogress:1.0.2'
|
|
114
115
|
implementation 'com.github.numandev1:VideoCompressor:1a262bba37'
|
|
115
116
|
}
|
|
@@ -8,6 +8,7 @@ import com.facebook.react.bridge.ReactMethod
|
|
|
8
8
|
import com.facebook.react.bridge.ReadableMap
|
|
9
9
|
import com.reactnativecompressor.Audio.AudioMain
|
|
10
10
|
import com.reactnativecompressor.Image.ImageMain
|
|
11
|
+
import com.reactnativecompressor.Utils.CreateVideoThumbnail
|
|
11
12
|
import com.reactnativecompressor.Utils.Downloader
|
|
12
13
|
import com.reactnativecompressor.Utils.EventEmitterHandler
|
|
13
14
|
import com.reactnativecompressor.Utils.Uploader
|
|
@@ -20,6 +21,7 @@ class CompressorModule(private val reactContext: ReactApplicationContext) : Comp
|
|
|
20
21
|
private val imageMain: ImageMain = ImageMain(reactContext)
|
|
21
22
|
private val videoMain: VideoMain = VideoMain(reactContext)
|
|
22
23
|
private val audioMain: AudioMain = AudioMain(reactContext)
|
|
24
|
+
private val videoThumbnail: CreateVideoThumbnail = CreateVideoThumbnail(reactContext)
|
|
23
25
|
|
|
24
26
|
override fun initialize() {
|
|
25
27
|
super.initialize()
|
|
@@ -147,6 +149,16 @@ class CompressorModule(private val reactContext: ReactApplicationContext) : Comp
|
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
@ReactMethod
|
|
153
|
+
override fun createVideoThumbnail(fileUrl:String, options:ReadableMap, promise:Promise) {
|
|
154
|
+
videoThumbnail.create(fileUrl,options,promise)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@ReactMethod
|
|
158
|
+
override fun clearCache(cacheDir:String?, promise:Promise) {
|
|
159
|
+
CreateVideoThumbnail.clearCache(cacheDir, promise, reactContext)
|
|
160
|
+
}
|
|
161
|
+
|
|
150
162
|
@ReactMethod
|
|
151
163
|
override fun addListener(eventName: String) {
|
|
152
164
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
package com.reactnativecompressor.Utils
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.graphics.Bitmap
|
|
5
|
+
import android.graphics.BitmapFactory
|
|
6
|
+
import android.media.MediaMetadataRetriever
|
|
7
|
+
import android.net.Uri
|
|
8
|
+
import android.os.Build
|
|
9
|
+
import android.text.TextUtils
|
|
10
|
+
import android.webkit.URLUtil
|
|
11
|
+
import androidx.annotation.RequiresApi
|
|
12
|
+
import com.facebook.react.bridge.Arguments
|
|
13
|
+
import com.facebook.react.bridge.GuardedResultAsyncTask
|
|
14
|
+
import com.facebook.react.bridge.Promise
|
|
15
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
16
|
+
import com.facebook.react.bridge.ReactContext
|
|
17
|
+
import com.facebook.react.bridge.ReactMethod
|
|
18
|
+
import com.facebook.react.bridge.ReadableMap
|
|
19
|
+
import java.io.File
|
|
20
|
+
import java.io.FileOutputStream
|
|
21
|
+
import java.io.IOException
|
|
22
|
+
import java.io.OutputStream
|
|
23
|
+
import java.io.UnsupportedEncodingException
|
|
24
|
+
import java.lang.ref.WeakReference
|
|
25
|
+
import java.net.URLDecoder
|
|
26
|
+
import java.util.UUID
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class CreateVideoThumbnail(private val reactContext: ReactApplicationContext) {
|
|
30
|
+
@ReactMethod
|
|
31
|
+
fun create(fileUrl:String,options: ReadableMap, promise: Promise) {
|
|
32
|
+
ProcessDataTask(reactContext,fileUrl, promise, options).execute()
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
private class ProcessDataTask(reactContext: ReactContext,private val filePath:String, private val promise: Promise, private val options: ReadableMap) : GuardedResultAsyncTask<ReadableMap?>(reactContext.exceptionHandler) {
|
|
36
|
+
private val weakContext: WeakReference<Context>
|
|
37
|
+
|
|
38
|
+
init {
|
|
39
|
+
weakContext = WeakReference(reactContext.applicationContext)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@RequiresApi(Build.VERSION_CODES.N)
|
|
43
|
+
override fun doInBackgroundGuarded(): ReadableMap? {
|
|
44
|
+
val format = "jpeg"
|
|
45
|
+
val cacheName = if (options.hasKey("cacheName")) options.getString("cacheName") else ""
|
|
46
|
+
val thumbnailDir = weakContext.get()!!.applicationContext.cacheDir.absolutePath + "/thumbnails"
|
|
47
|
+
val cacheDir = createDirIfNotExists(thumbnailDir)
|
|
48
|
+
if (!TextUtils.isEmpty(cacheName)) {
|
|
49
|
+
val file = File(thumbnailDir, "$cacheName.$format")
|
|
50
|
+
if (file.exists()) {
|
|
51
|
+
val map = Arguments.createMap()
|
|
52
|
+
map.putString("path", "file://" + file.absolutePath)
|
|
53
|
+
val image = BitmapFactory.decodeFile(file.absolutePath)
|
|
54
|
+
map.putDouble("size", image.byteCount.toDouble())
|
|
55
|
+
map.putString("mime", "image/$format")
|
|
56
|
+
map.putDouble("width", image.width.toDouble())
|
|
57
|
+
map.putDouble("height", image.height.toDouble())
|
|
58
|
+
return map
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
val headers: Map<String, String> = if (options.hasKey("headers")) options.getMap("headers")!!.toHashMap() as Map<String, String> else HashMap<String, String>()
|
|
62
|
+
val fileName = if (TextUtils.isEmpty(cacheName)) "thumb-" + UUID.randomUUID().toString() else "$cacheName.$format"
|
|
63
|
+
var fOut: OutputStream? = null
|
|
64
|
+
try {
|
|
65
|
+
val file = File(cacheDir, fileName)
|
|
66
|
+
val context = weakContext.get()
|
|
67
|
+
val image = getBitmapAtTime(context, filePath, 0, headers)
|
|
68
|
+
file.createNewFile()
|
|
69
|
+
fOut = FileOutputStream(file)
|
|
70
|
+
|
|
71
|
+
// 100 means no compression, the lower you go, the stronger the compression
|
|
72
|
+
image.compress(Bitmap.CompressFormat.JPEG, 90, fOut)
|
|
73
|
+
fOut.flush()
|
|
74
|
+
fOut.close()
|
|
75
|
+
|
|
76
|
+
val map = Arguments.createMap()
|
|
77
|
+
map.putString("path", "file://" + file.absolutePath)
|
|
78
|
+
map.putDouble("size", image.byteCount.toDouble())
|
|
79
|
+
map.putString("mime", "image/$format")
|
|
80
|
+
map.putDouble("width", image.width.toDouble())
|
|
81
|
+
map.putDouble("height", image.height.toDouble())
|
|
82
|
+
return map
|
|
83
|
+
} catch (e: Exception) {
|
|
84
|
+
promise.reject("CreateVideoThumbnail_ERROR", e)
|
|
85
|
+
}
|
|
86
|
+
return null
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
override fun onPostExecuteGuarded(readableArray: ReadableMap?) {
|
|
90
|
+
promise.resolve(readableArray)
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
companion object {
|
|
95
|
+
// delete previously added files one by one untill requred space is available
|
|
96
|
+
fun clearCache(cacheDir: String?,promise:Promise, reactContext: ReactApplicationContext) {
|
|
97
|
+
val cacheDirectory=cacheDir?.takeIf { it.isNotEmpty() } ?:"/thumbnails"
|
|
98
|
+
val thumbnailDir: String = reactContext.getApplicationContext().getCacheDir().getAbsolutePath() + cacheDirectory
|
|
99
|
+
val thumbnailDirFile = createDirIfNotExists(thumbnailDir)
|
|
100
|
+
|
|
101
|
+
if (thumbnailDirFile != null) {
|
|
102
|
+
val files = thumbnailDirFile.listFiles()
|
|
103
|
+
|
|
104
|
+
// Loop through the files and delete them
|
|
105
|
+
if (files != null) {
|
|
106
|
+
for (file in files) {
|
|
107
|
+
if (file.isFile) {
|
|
108
|
+
file.delete()
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
promise.resolve("done")
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
private fun createDirIfNotExists(path: String): File {
|
|
117
|
+
val dir = File(path)
|
|
118
|
+
if (dir.exists()) {
|
|
119
|
+
return dir
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
dir.mkdirs()
|
|
123
|
+
// Add .nomedia to hide the thumbnail directory from gallery
|
|
124
|
+
val noMedia = File(path, ".nomedia")
|
|
125
|
+
noMedia.createNewFile()
|
|
126
|
+
} catch (e: IOException) {
|
|
127
|
+
e.printStackTrace()
|
|
128
|
+
}
|
|
129
|
+
return dir
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
private fun getBitmapAtTime(context: Context?, filePath: String?, time: Int, headers: Map<String, String>): Bitmap {
|
|
133
|
+
val retriever = MediaMetadataRetriever()
|
|
134
|
+
if (URLUtil.isFileUrl(filePath)) {
|
|
135
|
+
val decodedPath: String?
|
|
136
|
+
decodedPath = try {
|
|
137
|
+
URLDecoder.decode(filePath, "UTF-8")
|
|
138
|
+
} catch (e: UnsupportedEncodingException) {
|
|
139
|
+
filePath
|
|
140
|
+
}
|
|
141
|
+
retriever.setDataSource(decodedPath!!.replace("file://", ""))
|
|
142
|
+
} else if (filePath!!.contains("content://")) {
|
|
143
|
+
retriever.setDataSource(context, Uri.parse(filePath))
|
|
144
|
+
} else {
|
|
145
|
+
check(Build.VERSION.SDK_INT >= 14) { "Remote videos aren't supported on sdk_version < 14" }
|
|
146
|
+
retriever.setDataSource(filePath, headers)
|
|
147
|
+
}
|
|
148
|
+
val image = retriever.getFrameAtTime((time * 1000).toLong(), MediaMetadataRetriever.OPTION_CLOSEST_SYNC)
|
|
149
|
+
try {
|
|
150
|
+
retriever.release()
|
|
151
|
+
} catch (e: IOException) {
|
|
152
|
+
throw RuntimeException(e)
|
|
153
|
+
}
|
|
154
|
+
checkNotNull(image) { "File doesn't exist or not supported" }
|
|
155
|
+
return image
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -27,6 +27,8 @@ abstract class CompressorSpec(context: ReactApplicationContext?) : ReactContextB
|
|
|
27
27
|
abstract fun download(fileUrl: String, options: ReadableMap, promise: Promise)
|
|
28
28
|
abstract fun activateBackgroundTask(options: ReadableMap, promise: Promise)
|
|
29
29
|
abstract fun deactivateBackgroundTask(options: ReadableMap, promise: Promise)
|
|
30
|
+
abstract fun createVideoThumbnail(fileUrl: String?, options: ReadableMap?, promise: Promise)
|
|
31
|
+
abstract fun clearCache(cacheDir: String?, promise: com.facebook.react.bridge.Promise?)
|
|
30
32
|
abstract fun addListener(eventName: String)
|
|
31
33
|
abstract fun removeListeners(count: Double)
|
|
32
34
|
}
|
package/ios/Compressor.mm
CHANGED
|
@@ -52,6 +52,15 @@ RCT_EXTERN_METHOD(deactivateBackgroundTask: (NSDictionary *)options
|
|
|
52
52
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
53
53
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
54
54
|
|
|
55
|
+
RCT_EXTERN_METHOD(createVideoThumbnail:(NSString *)fileUrl
|
|
56
|
+
withOptions:(NSDictionary *)options
|
|
57
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
58
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
59
|
+
|
|
60
|
+
RCT_EXTERN_METHOD(clearCache:(NSString *)cacheDir
|
|
61
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
62
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
63
|
+
|
|
55
64
|
RCT_EXTERN_METHOD(cancelCompression:(NSString *)uuid)
|
|
56
65
|
|
|
57
66
|
// Don't compile this code when we build for the old architecture.
|
|
@@ -92,5 +92,16 @@ class Compressor: RCTEventEmitter {
|
|
|
92
92
|
resolve(downloadedPath)
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
+
|
|
96
|
+
@objc(createVideoThumbnail:withOptions:withResolver:withRejecter:)
|
|
97
|
+
func createVideoThumbnail(fileUrl: String, options: NSDictionary, resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
98
|
+
let videoThumbnail=CreateVideoThumbnail()
|
|
99
|
+
videoThumbnail.create(fileUrl,options: options, resolve: resolve, rejecter: reject)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@objc(clearCache:withResolver:withRejecter:)
|
|
103
|
+
func clearCache(cacheDir: String, resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
104
|
+
CreateVideoThumbnail.cleanCacheDir(cacheDir: cacheDir,resolve: resolve,rejecter: reject)
|
|
105
|
+
}
|
|
95
106
|
|
|
96
107
|
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
//
|
|
2
|
+
// CreateVideoThumbnail.swift
|
|
3
|
+
// react-native-compressor
|
|
4
|
+
//
|
|
5
|
+
// Created by Numan on 13/09/2023.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import AVFoundation
|
|
10
|
+
import UIKit
|
|
11
|
+
|
|
12
|
+
class CreateVideoThumbnail: NSObject {
|
|
13
|
+
|
|
14
|
+
func create(_ fileUrl:String, options: NSDictionary, resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
15
|
+
let headers = options["headers"] as? [String: Any] ?? [:]
|
|
16
|
+
let format = "jpeg"
|
|
17
|
+
|
|
18
|
+
do {
|
|
19
|
+
// Prepare cache folder
|
|
20
|
+
var tempDirectory = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last ?? ""
|
|
21
|
+
tempDirectory = (tempDirectory as NSString).appendingPathComponent("thumbnails/")
|
|
22
|
+
// Create thumbnail directory if not exists
|
|
23
|
+
try FileManager.default.createDirectory(atPath: tempDirectory, withIntermediateDirectories: true, attributes: nil)
|
|
24
|
+
let fileName = "thumb-\(ProcessInfo.processInfo.globallyUniqueString).\(format)"
|
|
25
|
+
let fullPath = (tempDirectory as NSString).appendingPathComponent(fileName)
|
|
26
|
+
|
|
27
|
+
if FileManager.default.fileExists(atPath: fullPath) {
|
|
28
|
+
if let imageData = try? Data(contentsOf: URL(fileURLWithPath: fullPath)) {
|
|
29
|
+
if let thumbnail = UIImage(data: imageData) {
|
|
30
|
+
resolve([
|
|
31
|
+
"path": fullPath,
|
|
32
|
+
"size": Float(imageData.count),
|
|
33
|
+
"mime": "image/\(format)",
|
|
34
|
+
"width": Float(thumbnail.size.width),
|
|
35
|
+
"height": Float(thumbnail.size.height)
|
|
36
|
+
])
|
|
37
|
+
return
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var vidURL: URL?
|
|
43
|
+
let fileUrlLowerCase = fileUrl.lowercased()
|
|
44
|
+
|
|
45
|
+
if fileUrlLowerCase.hasPrefix("http://") || fileUrlLowerCase.hasPrefix("https://") || fileUrlLowerCase.hasPrefix("file://") {
|
|
46
|
+
vidURL = URL(string: fileUrl)
|
|
47
|
+
} else {
|
|
48
|
+
// Consider it's file url path
|
|
49
|
+
vidURL = URL(fileURLWithPath: fileUrl)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let asset = AVURLAsset(url: vidURL!, options: ["AVURLAssetHTTPHeaderFieldsKey": headers])
|
|
53
|
+
generateThumbImage(asset: asset, atTime: 0, completion: { thumbnail in
|
|
54
|
+
// Generate thumbnail
|
|
55
|
+
var data: Data? = thumbnail.jpegData(compressionQuality: 1.0)
|
|
56
|
+
|
|
57
|
+
if let data = data {
|
|
58
|
+
try? data.write(to: URL(fileURLWithPath: fullPath))
|
|
59
|
+
resolve([
|
|
60
|
+
"path": fullPath,
|
|
61
|
+
"size": Float(data.count),
|
|
62
|
+
"mime": "image/\(format)",
|
|
63
|
+
"width": Float(thumbnail.size.width),
|
|
64
|
+
"height": Float(thumbnail.size.height)
|
|
65
|
+
] as [String : Any])
|
|
66
|
+
}
|
|
67
|
+
}, failure: { error in
|
|
68
|
+
reject(error._domain, error.localizedDescription, nil)
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
} catch {
|
|
72
|
+
reject("Error", error.localizedDescription, nil)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static func cleanCacheDir(cacheDir: String, resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
77
|
+
let cachePathDir: String = cacheDir.isEmpty ? "thumbnails/" : cacheDir
|
|
78
|
+
var cacheDirectoryPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last ?? ""
|
|
79
|
+
cacheDirectoryPath = (cacheDirectoryPath as NSString).appendingPathComponent(cachePathDir)
|
|
80
|
+
|
|
81
|
+
let fm = FileManager.default
|
|
82
|
+
do {
|
|
83
|
+
let files = try fm.contentsOfDirectory(atPath: cacheDirectoryPath)
|
|
84
|
+
for file in files {
|
|
85
|
+
let filePath = (cacheDirectoryPath as NSString).appendingPathComponent(file)
|
|
86
|
+
try fm.removeItem(atPath: filePath)
|
|
87
|
+
}
|
|
88
|
+
resolve("done")
|
|
89
|
+
} catch {
|
|
90
|
+
// Handle error if necessary
|
|
91
|
+
reject("Error", error.localizedDescription, nil)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
func generateThumbImage(asset: AVURLAsset, atTime timeStamp: Int, completion: @escaping (UIImage) -> Void, failure: @escaping (Error) -> Void) {
|
|
96
|
+
let generator = AVAssetImageGenerator(asset: asset)
|
|
97
|
+
generator.appliesPreferredTrackTransform = true
|
|
98
|
+
generator.maximumSize = CGSize(width: 512, height: 512)
|
|
99
|
+
generator.requestedTimeToleranceBefore = CMTimeMake(value: 0, timescale: 1000)
|
|
100
|
+
generator.requestedTimeToleranceAfter = CMTimeMake(value: 0, timescale: 1000)
|
|
101
|
+
let time = CMTimeMake(value: Int64(timeStamp), timescale: 1000)
|
|
102
|
+
generator.generateCGImagesAsynchronously(forTimes: [NSValue(time: time)]) { _, image, _, result, error in
|
|
103
|
+
if result == .succeeded, let cgImage = image {
|
|
104
|
+
let thumbnail = UIImage(cgImage: cgImage)
|
|
105
|
+
completion(thumbnail)
|
|
106
|
+
} else if let error = error {
|
|
107
|
+
failure(error)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAoCpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -27,6 +27,18 @@ Object.defineProperty(exports, "backgroundUpload", {
|
|
|
27
27
|
return _utils.backgroundUpload;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "clearCache", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _utils.clearCache;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "createVideoThumbnail", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _utils.createVideoThumbnail;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
30
42
|
exports.default = void 0;
|
|
31
43
|
Object.defineProperty(exports, "download", {
|
|
32
44
|
enumerable: true,
|
|
@@ -86,6 +98,8 @@ var _default = {
|
|
|
86
98
|
getVideoMetaData: _utils.getVideoMetaData,
|
|
87
99
|
getFileSize: _utils.getFileSize,
|
|
88
100
|
backgroundUpload: _utils.backgroundUpload,
|
|
101
|
+
createVideoThumbnail: _utils.createVideoThumbnail,
|
|
102
|
+
clearCache: _utils.clearCache,
|
|
89
103
|
download: _utils.download
|
|
90
104
|
};
|
|
91
105
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","obj","__esModule","default","_default","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","download","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","obj","__esModule","default","_default","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","createVideoThumbnail","clearCache","download","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAWiB,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAmBF;EACbC,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,UAAU,EAAVA,iBAAU;EACVC,MAAM,EAANA,aAAM;EACNC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,oBAAoB,EAApBA,2BAAoB;EACpBC,UAAU,EAAVA,iBAAU;EACVC,QAAQ,EAARA;AACF,CAAC;AAAAC,OAAA,CAAAf,OAAA,GAAAC,QAAA"}
|
|
@@ -9,12 +9,14 @@ var _exportNames = {
|
|
|
9
9
|
generateFilePath: true,
|
|
10
10
|
getRealPath: true,
|
|
11
11
|
getVideoMetaData: true,
|
|
12
|
+
createVideoThumbnail: true,
|
|
13
|
+
clearCache: true,
|
|
12
14
|
getDetails: true,
|
|
13
15
|
checkUrlAndOptions: true,
|
|
14
16
|
getFileSize: true,
|
|
15
17
|
uuidv4: true
|
|
16
18
|
};
|
|
17
|
-
exports.uuidv4 = exports.getVideoMetaData = exports.getRealPath = exports.getFileSize = exports.getDetails = exports.generateFilePath = exports.checkUrlAndOptions = exports.DEFAULT_COMPRESS_AUDIO_OPTIONS = exports.AUDIO_BITRATE = void 0;
|
|
19
|
+
exports.uuidv4 = exports.getVideoMetaData = exports.getRealPath = exports.getFileSize = exports.getDetails = exports.generateFilePath = exports.createVideoThumbnail = exports.clearCache = exports.checkUrlAndOptions = exports.DEFAULT_COMPRESS_AUDIO_OPTIONS = exports.AUDIO_BITRATE = void 0;
|
|
18
20
|
var _Main = require("../Main");
|
|
19
21
|
var _Downloader = require("./Downloader");
|
|
20
22
|
Object.keys(_Downloader).forEach(function (key) {
|
|
@@ -68,6 +70,15 @@ const getVideoMetaData = path => {
|
|
|
68
70
|
return _Main.Compressor.getVideoMetaData(path);
|
|
69
71
|
};
|
|
70
72
|
exports.getVideoMetaData = getVideoMetaData;
|
|
73
|
+
const createVideoThumbnail = function (url) {
|
|
74
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
75
|
+
return _Main.Compressor.createVideoThumbnail(url, options);
|
|
76
|
+
};
|
|
77
|
+
exports.createVideoThumbnail = createVideoThumbnail;
|
|
78
|
+
const clearCache = cacheDir => {
|
|
79
|
+
return _Main.Compressor.clearCache(cacheDir);
|
|
80
|
+
};
|
|
81
|
+
exports.clearCache = clearCache;
|
|
71
82
|
const isValidUrl = url => /^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/.test(url);
|
|
72
83
|
const getFullFilename = path => {
|
|
73
84
|
if (typeof path === 'string') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Main","require","_Downloader","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Uploader","AUDIO_BITRATE","INCORRECT_INPUT_PATH","INCORRECT_OUTPUT_PATH","ERROR_OCCUR_WHILE_GENERATING_OUTPUT_FILE","DEFAULT_COMPRESS_AUDIO_OPTIONS","bitrate","quality","outputFilePath","generateFilePath","extension","Promise","resolve","reject","Compressor","then","result","catch","error","getRealPath","path","type","arguments","length","undefined","getVideoMetaData","
|
|
1
|
+
{"version":3,"names":["_Main","require","_Downloader","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Uploader","AUDIO_BITRATE","INCORRECT_INPUT_PATH","INCORRECT_OUTPUT_PATH","ERROR_OCCUR_WHILE_GENERATING_OUTPUT_FILE","DEFAULT_COMPRESS_AUDIO_OPTIONS","bitrate","quality","outputFilePath","generateFilePath","extension","Promise","resolve","reject","Compressor","then","result","catch","error","getRealPath","path","type","arguments","length","undefined","getVideoMetaData","createVideoThumbnail","url","options","clearCache","cacheDir","isValidUrl","test","getFullFilename","_path","includes","substring","array","split","isFileNameError","filename","getFilename","fullFilename","slice","join","isRemoteMedia","_path$split","getDetails","mediaFullPath","extesnion","Error","mediaInfo","JSON","parse","mediaInformation","getMediaProperties","bit_rate","size","Number","format","e","checkUrlAndOptions","defaultResult","isCorrect","message","getFileSize","filePath","uuidv4","replace","c","r","parseFloat","Math","random","toString","Date","getTime","v"],"sourceRoot":"../../../src","sources":["utils/index.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAoClD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import Video from './Video';
|
|
2
2
|
import Audio from './Audio';
|
|
3
3
|
import Image from './Image';
|
|
4
|
-
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, download } from './utils';
|
|
4
|
+
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, createVideoThumbnail, download, clearCache } from './utils';
|
|
5
5
|
export { Video, Audio, Image, backgroundUpload, download,
|
|
6
6
|
//type
|
|
7
|
-
getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize };
|
|
7
|
+
getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, createVideoThumbnail, clearCache, getFileSize };
|
|
8
8
|
export default {
|
|
9
9
|
Video,
|
|
10
10
|
Audio,
|
|
@@ -16,6 +16,8 @@ export default {
|
|
|
16
16
|
getVideoMetaData,
|
|
17
17
|
getFileSize,
|
|
18
18
|
backgroundUpload,
|
|
19
|
+
createVideoThumbnail,
|
|
20
|
+
clearCache,
|
|
19
21
|
download
|
|
20
22
|
};
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","download"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,SAAS;AAE3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,SACEC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,QAAQ,
|
|
1
|
+
{"version":3,"names":["Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","createVideoThumbnail","download","clearCache"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,SAAS;AAE3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,SACEC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,oBAAoB,EACpBC,QAAQ,EACRC,UAAU,QACL,SAAS;AAEhB,SACEZ,KAAK,EACLC,KAAK,EACLC,KAAK,EACLO,gBAAgB,EAChBE,QAAQ;AACR;AACAR,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBG,oBAAoB,EACpBE,UAAU,EACVJ,WAAW;AAGb,eAAe;EACbR,KAAK;EACLC,KAAK;EACLC,KAAK;EACLC,UAAU;EACVC,MAAM;EACNC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBC,oBAAoB;EACpBE,UAAU;EACVD;AACF,CAAC"}
|
|
@@ -21,6 +21,13 @@ export const getRealPath = function (path) {
|
|
|
21
21
|
export const getVideoMetaData = path => {
|
|
22
22
|
return Compressor.getVideoMetaData(path);
|
|
23
23
|
};
|
|
24
|
+
export const createVideoThumbnail = function (url) {
|
|
25
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
26
|
+
return Compressor.createVideoThumbnail(url, options);
|
|
27
|
+
};
|
|
28
|
+
export const clearCache = cacheDir => {
|
|
29
|
+
return Compressor.clearCache(cacheDir);
|
|
30
|
+
};
|
|
24
31
|
const isValidUrl = url => /^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/.test(url);
|
|
25
32
|
const getFullFilename = path => {
|
|
26
33
|
if (typeof path === 'string') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Compressor","AUDIO_BITRATE","INCORRECT_INPUT_PATH","INCORRECT_OUTPUT_PATH","ERROR_OCCUR_WHILE_GENERATING_OUTPUT_FILE","DEFAULT_COMPRESS_AUDIO_OPTIONS","bitrate","quality","outputFilePath","generateFilePath","extension","Promise","resolve","reject","then","result","catch","error","getRealPath","path","type","arguments","length","undefined","getVideoMetaData","
|
|
1
|
+
{"version":3,"names":["Compressor","AUDIO_BITRATE","INCORRECT_INPUT_PATH","INCORRECT_OUTPUT_PATH","ERROR_OCCUR_WHILE_GENERATING_OUTPUT_FILE","DEFAULT_COMPRESS_AUDIO_OPTIONS","bitrate","quality","outputFilePath","generateFilePath","extension","Promise","resolve","reject","then","result","catch","error","getRealPath","path","type","arguments","length","undefined","getVideoMetaData","createVideoThumbnail","url","options","clearCache","cacheDir","isValidUrl","test","getFullFilename","_path","includes","substring","array","split","isFileNameError","filename","getFilename","fullFilename","slice","join","isRemoteMedia","_path$split","getDetails","mediaFullPath","extesnion","Error","mediaInfo","JSON","parse","mediaInformation","getMediaProperties","bit_rate","size","Number","format","e","checkUrlAndOptions","defaultResult","isCorrect","message","getFileSize","filePath","uuidv4","replace","c","r","parseFloat","Math","random","toString","Date","getTime","v"],"sourceRoot":"../../../src","sources":["utils/index.tsx"],"mappings":"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"}
|
|
@@ -14,6 +14,14 @@ export interface Spec extends TurboModule {
|
|
|
14
14
|
getFileSize(filePath: string): Promise<string>;
|
|
15
15
|
addListener(eventName: string): void;
|
|
16
16
|
removeListeners(count: number): void;
|
|
17
|
+
createVideoThumbnail(fileUrl: string, options: Object): Promise<{
|
|
18
|
+
path: string;
|
|
19
|
+
size: number;
|
|
20
|
+
mime: string;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
}>;
|
|
24
|
+
clearCache(cacheDir: string | null): Promise<string>;
|
|
17
25
|
}
|
|
18
26
|
declare const _default: Spec;
|
|
19
27
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeCompressor.d.ts","sourceRoot":"","sources":["../../../src/Spec/NativeCompressor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5D,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeCompressor.d.ts","sourceRoot":"","sources":["../../../src/Spec/NativeCompressor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5D,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;;AAED,wBAAoE"}
|
|
@@ -2,8 +2,8 @@ import Video from './Video';
|
|
|
2
2
|
import type { VideoCompressorType } from './Video';
|
|
3
3
|
import Audio from './Audio';
|
|
4
4
|
import Image from './Image';
|
|
5
|
-
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, download } from './utils';
|
|
6
|
-
export { Video, Audio, Image, backgroundUpload, download, getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, };
|
|
5
|
+
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, createVideoThumbnail, download, clearCache } from './utils';
|
|
6
|
+
export { Video, Audio, Image, backgroundUpload, download, getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, createVideoThumbnail, clearCache, getFileSize, };
|
|
7
7
|
export type { VideoCompressorType };
|
|
8
8
|
declare const _default: {
|
|
9
9
|
Video: VideoCompressorType;
|
|
@@ -18,6 +18,8 @@ declare const _default: {
|
|
|
18
18
|
getVideoMetaData: any;
|
|
19
19
|
getFileSize: (filePath: string) => Promise<string>;
|
|
20
20
|
backgroundUpload: (url: string, fileUrl: string, options: import("./utils").FileSystemUploadOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise<any>;
|
|
21
|
+
createVideoThumbnail: any;
|
|
22
|
+
clearCache: any;
|
|
21
23
|
download: (fileUrl: string, downloadProgress?: ((progress: number) => void) | undefined, progressDivider?: number | undefined) => Promise<any>;
|
|
22
24
|
};
|
|
23
25
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,QAAQ,EAER,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,mBAAmB,EAAE,CAAC;;;;;;;;;;;;;;;;;;AACpC,wBAcE"}
|
|
@@ -17,6 +17,8 @@ export type AudioType = {
|
|
|
17
17
|
export declare const generateFilePath: any;
|
|
18
18
|
export declare const getRealPath: any;
|
|
19
19
|
export declare const getVideoMetaData: any;
|
|
20
|
+
export declare const createVideoThumbnail: any;
|
|
21
|
+
export declare const clearCache: any;
|
|
20
22
|
export declare const getDetails: (mediaFullPath: string, extesnion?: 'mp3' | 'mp4') => Promise<any | null>;
|
|
21
23
|
export declare const checkUrlAndOptions: (url: string, options: audioCompresssionType) => Promise<defaultResultType>;
|
|
22
24
|
export declare const getFileSize: (filePath: string) => Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,UAAmC,CAAC;AAC9D,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAM7C,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAI5C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,GAM9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,GAKzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,GAE9B,CAAC;AA2CF,eAAO,MAAM,UAAU,kBACN,MAAM,cACV,KAAK,GAAG,KAAK,KACvB,QAAQ,GAAG,GAAG,IAAI,CA6BpB,CAAC;AAEF,eAAO,MAAM,kBAAkB,QACxB,MAAM,WACF,qBAAqB,KAC7B,QAAQ,iBAAiB,CAsC3B,CAAC;AAEF,eAAO,MAAM,WAAW,aAAoB,MAAM,KAAG,QAAQ,MAAM,CAElE,CAAC;AAEF,eAAO,MAAM,MAAM,cAclB,CAAC;AACF,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,UAAmC,CAAC;AAC9D,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAM7C,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAI5C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,GAM9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,GAKzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,GAE9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,GAOlC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,GAExB,CAAC;AA2CF,eAAO,MAAM,UAAU,kBACN,MAAM,cACV,KAAK,GAAG,KAAK,KACvB,QAAQ,GAAG,GAAG,IAAI,CA6BpB,CAAC;AAEF,eAAO,MAAM,kBAAkB,QACxB,MAAM,WACF,qBAAqB,KAC7B,QAAQ,iBAAiB,CAsC3B,CAAC;AAEF,eAAO,MAAM,WAAW,aAAoB,MAAM,KAAG,QAAQ,MAAM,CAElE,CAAC;AAEF,eAAO,MAAM,MAAM,cAclB,CAAC;AACF,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -22,6 +22,17 @@ export interface Spec extends TurboModule {
|
|
|
22
22
|
getFileSize(filePath: string): Promise<string>;
|
|
23
23
|
addListener(eventName: string): void;
|
|
24
24
|
removeListeners(count: number): void;
|
|
25
|
+
createVideoThumbnail(
|
|
26
|
+
fileUrl: string,
|
|
27
|
+
options: Object
|
|
28
|
+
): Promise<{
|
|
29
|
+
path: string;
|
|
30
|
+
size: number;
|
|
31
|
+
mime: string;
|
|
32
|
+
width: number;
|
|
33
|
+
height: number;
|
|
34
|
+
}>;
|
|
35
|
+
clearCache(cacheDir: string | null): Promise<string>;
|
|
25
36
|
}
|
|
26
37
|
|
|
27
38
|
export default TurboModuleRegistry.getEnforcing<Spec>('Compressor');
|
package/src/index.tsx
CHANGED
|
@@ -10,7 +10,9 @@ import {
|
|
|
10
10
|
getVideoMetaData,
|
|
11
11
|
getFileSize,
|
|
12
12
|
backgroundUpload,
|
|
13
|
+
createVideoThumbnail,
|
|
13
14
|
download,
|
|
15
|
+
clearCache,
|
|
14
16
|
} from './utils';
|
|
15
17
|
|
|
16
18
|
export {
|
|
@@ -25,6 +27,8 @@ export {
|
|
|
25
27
|
generateFilePath,
|
|
26
28
|
getRealPath,
|
|
27
29
|
getVideoMetaData,
|
|
30
|
+
createVideoThumbnail,
|
|
31
|
+
clearCache,
|
|
28
32
|
getFileSize,
|
|
29
33
|
};
|
|
30
34
|
export type { VideoCompressorType };
|
|
@@ -39,5 +43,7 @@ export default {
|
|
|
39
43
|
getVideoMetaData,
|
|
40
44
|
getFileSize,
|
|
41
45
|
backgroundUpload,
|
|
46
|
+
createVideoThumbnail,
|
|
47
|
+
clearCache,
|
|
42
48
|
download,
|
|
43
49
|
};
|
package/src/utils/index.tsx
CHANGED
|
@@ -49,6 +49,19 @@ export const getVideoMetaData: any = (path: string) => {
|
|
|
49
49
|
return Compressor.getVideoMetaData(path);
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
+
export const createVideoThumbnail: any = (
|
|
53
|
+
url: string,
|
|
54
|
+
options: {
|
|
55
|
+
headers?: object;
|
|
56
|
+
} = {}
|
|
57
|
+
) => {
|
|
58
|
+
return Compressor.createVideoThumbnail(url, options);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const clearCache: any = (cacheDir?: string) => {
|
|
62
|
+
return Compressor.clearCache(cacheDir);
|
|
63
|
+
};
|
|
64
|
+
|
|
52
65
|
const isValidUrl = (url: string) =>
|
|
53
66
|
/^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/.test(url);
|
|
54
67
|
|