react-native-compressor 1.8.1 → 1.8.3
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 -1
- package/android/build.gradle +5 -2
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.kt +2 -2
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +3 -3
- package/android/src/main/java/com/reactnativecompressor/Utils/Uploader.kt +11 -11
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.kt +42 -36
- package/android/src/main/java/com/reactnativecompressor/Utils/createVideoThumbnail.kt +1 -1
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/CompressionInterface.kt +73 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/VideoCompressorClass.kt +148 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/compressor/Compressor.kt +562 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/utils/Atoms.kt +55 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/utils/CompressorUtils.kt +196 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/utils/NumbersUtils.kt +47 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/utils/StreamableVideo.kt +209 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/InputSurface.kt +128 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/MP4Builder.kt +388 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Mdat.kt +74 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Mp4Movie.kt +54 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/OutputSurface.kt +102 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Result.kt +9 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Sample.kt +3 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/TextureRenderer.kt +214 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Track.kt +286 -0
- package/android/src/oldarch/CompressorSpec.kt +2 -2
- package/lib/commonjs/utils/index.js +2 -2
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/utils/index.js +2 -2
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/index.d.ts +13 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +16 -3
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/index.tsx +22 -8
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
package com.reactnativecompressor.Video.VideoCompressor.video
|
|
2
|
+
|
|
3
|
+
import android.graphics.SurfaceTexture
|
|
4
|
+
import android.opengl.GLES11Ext
|
|
5
|
+
import android.opengl.GLES20
|
|
6
|
+
import android.opengl.Matrix
|
|
7
|
+
import java.nio.ByteBuffer
|
|
8
|
+
import java.nio.ByteOrder
|
|
9
|
+
import java.nio.FloatBuffer
|
|
10
|
+
|
|
11
|
+
class TextureRenderer {
|
|
12
|
+
|
|
13
|
+
private val floatSizeBytes = 4
|
|
14
|
+
private val triangleVerticesDataStrideBytes = 5 * floatSizeBytes
|
|
15
|
+
private val triangleVerticesDataPosOffset = 0
|
|
16
|
+
private val triangleVerticesDataUvOffset = 3
|
|
17
|
+
private var mTriangleVertices: FloatBuffer
|
|
18
|
+
|
|
19
|
+
private val vertexShader = """uniform mat4 uMVPMatrix;
|
|
20
|
+
uniform mat4 uSTMatrix;
|
|
21
|
+
attribute vec4 aPosition;
|
|
22
|
+
attribute vec4 aTextureCoord;
|
|
23
|
+
varying vec2 vTextureCoord;
|
|
24
|
+
void main() {
|
|
25
|
+
gl_Position = uMVPMatrix * aPosition;
|
|
26
|
+
vTextureCoord = (uSTMatrix * aTextureCoord).xy;
|
|
27
|
+
}
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
private val fragmentShader = """#extension GL_OES_EGL_image_external : require
|
|
31
|
+
precision mediump float;
|
|
32
|
+
varying vec2 vTextureCoord;
|
|
33
|
+
uniform samplerExternalOES sTexture;
|
|
34
|
+
void main() {
|
|
35
|
+
gl_FragColor = texture2D(sTexture, vTextureCoord);
|
|
36
|
+
}
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
private val mMVPMatrix = FloatArray(16)
|
|
40
|
+
private val mSTMatrix = FloatArray(16)
|
|
41
|
+
|
|
42
|
+
private var mProgram = 0
|
|
43
|
+
private var mTextureID = -12345
|
|
44
|
+
private var muMVPMatrixHandle = 0
|
|
45
|
+
private var muSTMatrixHandle = 0
|
|
46
|
+
private var maPositionHandle = 0
|
|
47
|
+
private var maTextureHandle = 0
|
|
48
|
+
|
|
49
|
+
init {
|
|
50
|
+
val mTriangleVerticesData = floatArrayOf( // X, Y, Z, U, V
|
|
51
|
+
-1.0f, -1.0f, 0f, 0f, 0f,
|
|
52
|
+
1.0f, -1.0f, 0f, 1f, 0f,
|
|
53
|
+
-1.0f, 1.0f, 0f, 0f, 1f,
|
|
54
|
+
1.0f, 1.0f, 0f, 1f, 1f
|
|
55
|
+
)
|
|
56
|
+
mTriangleVertices = ByteBuffer.allocateDirect(
|
|
57
|
+
mTriangleVerticesData.size * floatSizeBytes
|
|
58
|
+
)
|
|
59
|
+
.order(ByteOrder.nativeOrder()).asFloatBuffer()
|
|
60
|
+
mTriangleVertices.put(mTriangleVerticesData).position(0)
|
|
61
|
+
|
|
62
|
+
Matrix.setIdentityM(mSTMatrix, 0)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fun getTextureId(): Int = mTextureID
|
|
66
|
+
|
|
67
|
+
fun drawFrame(st: SurfaceTexture) {
|
|
68
|
+
checkGlError("onDrawFrame start")
|
|
69
|
+
st.getTransformMatrix(mSTMatrix)
|
|
70
|
+
|
|
71
|
+
GLES20.glClearColor(0.0f, 1.0f, 0.0f, 1.0f)
|
|
72
|
+
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT or GLES20.GL_COLOR_BUFFER_BIT)
|
|
73
|
+
|
|
74
|
+
GLES20.glUseProgram(mProgram)
|
|
75
|
+
checkGlError("glUseProgram")
|
|
76
|
+
|
|
77
|
+
GLES20.glActiveTexture(GLES20.GL_TEXTURE0)
|
|
78
|
+
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTextureID)
|
|
79
|
+
|
|
80
|
+
mTriangleVertices.position(triangleVerticesDataPosOffset)
|
|
81
|
+
GLES20.glVertexAttribPointer(
|
|
82
|
+
maPositionHandle, 3, GLES20.GL_FLOAT, false,
|
|
83
|
+
triangleVerticesDataStrideBytes, mTriangleVertices
|
|
84
|
+
)
|
|
85
|
+
checkGlError("glVertexAttribPointer maPosition")
|
|
86
|
+
GLES20.glEnableVertexAttribArray(maPositionHandle)
|
|
87
|
+
checkGlError("glEnableVertexAttribArray maPositionHandle")
|
|
88
|
+
|
|
89
|
+
mTriangleVertices.position(triangleVerticesDataUvOffset)
|
|
90
|
+
GLES20.glVertexAttribPointer(
|
|
91
|
+
maTextureHandle, 2, GLES20.GL_FLOAT, false,
|
|
92
|
+
triangleVerticesDataStrideBytes, mTriangleVertices
|
|
93
|
+
)
|
|
94
|
+
checkGlError("glVertexAttribPointer maTextureHandle")
|
|
95
|
+
GLES20.glEnableVertexAttribArray(maTextureHandle)
|
|
96
|
+
checkGlError("glEnableVertexAttribArray maTextureHandle")
|
|
97
|
+
|
|
98
|
+
Matrix.setIdentityM(mMVPMatrix, 0)
|
|
99
|
+
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0)
|
|
100
|
+
GLES20.glUniformMatrix4fv(muSTMatrixHandle, 1, false, mSTMatrix, 0)
|
|
101
|
+
|
|
102
|
+
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4)
|
|
103
|
+
checkGlError("glDrawArrays")
|
|
104
|
+
GLES20.glFinish()
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Initializes GL state. Call this after the EGL surface has been created and made current.
|
|
109
|
+
*/
|
|
110
|
+
fun surfaceCreated() {
|
|
111
|
+
mProgram = createProgram()
|
|
112
|
+
if (mProgram == 0) {
|
|
113
|
+
throw RuntimeException("failed creating program")
|
|
114
|
+
}
|
|
115
|
+
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition")
|
|
116
|
+
checkGlError("glGetAttribLocation aPosition")
|
|
117
|
+
if (maPositionHandle == -1) {
|
|
118
|
+
throw RuntimeException("Could not get attrib location for aPosition")
|
|
119
|
+
}
|
|
120
|
+
maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord")
|
|
121
|
+
checkGlError("glGetAttribLocation aTextureCoord")
|
|
122
|
+
if (maTextureHandle == -1) {
|
|
123
|
+
throw RuntimeException("Could not get attrib location for aTextureCoord")
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix")
|
|
127
|
+
checkGlError("glGetUniformLocation uMVPMatrix")
|
|
128
|
+
if (muMVPMatrixHandle == -1) {
|
|
129
|
+
throw RuntimeException("Could not get attrib location for uMVPMatrix")
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
muSTMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uSTMatrix")
|
|
133
|
+
checkGlError("glGetUniformLocation uSTMatrix")
|
|
134
|
+
if (muSTMatrixHandle == -1) {
|
|
135
|
+
throw RuntimeException("Could not get attrib location for uSTMatrix")
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
val textures = IntArray(1)
|
|
139
|
+
GLES20.glGenTextures(1, textures, 0)
|
|
140
|
+
mTextureID = textures[0]
|
|
141
|
+
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTextureID)
|
|
142
|
+
checkGlError("glBindTexture mTextureID")
|
|
143
|
+
|
|
144
|
+
GLES20.glTexParameterf(
|
|
145
|
+
GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
|
|
146
|
+
GLES20.GL_NEAREST.toFloat()
|
|
147
|
+
)
|
|
148
|
+
GLES20.glTexParameterf(
|
|
149
|
+
GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
|
|
150
|
+
GLES20.GL_LINEAR.toFloat()
|
|
151
|
+
)
|
|
152
|
+
GLES20.glTexParameteri(
|
|
153
|
+
GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
|
|
154
|
+
GLES20.GL_CLAMP_TO_EDGE
|
|
155
|
+
)
|
|
156
|
+
GLES20.glTexParameteri(
|
|
157
|
+
GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
|
|
158
|
+
GLES20.GL_CLAMP_TO_EDGE
|
|
159
|
+
)
|
|
160
|
+
checkGlError("glTexParameter")
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
private fun loadShader(shaderType: Int, source: String): Int {
|
|
164
|
+
var shader = GLES20.glCreateShader(shaderType)
|
|
165
|
+
checkGlError("glCreateShader type=$shaderType")
|
|
166
|
+
GLES20.glShaderSource(shader, source)
|
|
167
|
+
GLES20.glCompileShader(shader)
|
|
168
|
+
val compiled = IntArray(1)
|
|
169
|
+
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0)
|
|
170
|
+
if (compiled[0] == 0) {
|
|
171
|
+
GLES20.glDeleteShader(shader)
|
|
172
|
+
shader = 0
|
|
173
|
+
}
|
|
174
|
+
return shader
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
private fun createProgram(): Int {
|
|
178
|
+
val vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShader)
|
|
179
|
+
if (vertexShader == 0) {
|
|
180
|
+
return 0
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
val pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShader)
|
|
184
|
+
if (pixelShader == 0) {
|
|
185
|
+
return 0
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
var program = GLES20.glCreateProgram()
|
|
189
|
+
checkGlError("glCreateProgram")
|
|
190
|
+
if (program == 0) {
|
|
191
|
+
return 0
|
|
192
|
+
}
|
|
193
|
+
GLES20.glAttachShader(program, vertexShader)
|
|
194
|
+
checkGlError("glAttachShader")
|
|
195
|
+
GLES20.glAttachShader(program, pixelShader)
|
|
196
|
+
checkGlError("glAttachShader")
|
|
197
|
+
GLES20.glLinkProgram(program)
|
|
198
|
+
val linkStatus = IntArray(1)
|
|
199
|
+
GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0)
|
|
200
|
+
if (linkStatus[0] != GLES20.GL_TRUE) {
|
|
201
|
+
GLES20.glDeleteProgram(program)
|
|
202
|
+
program = 0
|
|
203
|
+
}
|
|
204
|
+
return program
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
fun checkGlError(op: String) {
|
|
208
|
+
var error: Int
|
|
209
|
+
if (GLES20.glGetError().also { error = it } != GLES20.GL_NO_ERROR) {
|
|
210
|
+
throw RuntimeException("$op: glError $error")
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
}
|
package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Track.kt
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
package com.reactnativecompressor.Video.VideoCompressor.video
|
|
2
|
+
|
|
3
|
+
import android.media.MediaCodec
|
|
4
|
+
import android.media.MediaCodecInfo
|
|
5
|
+
import android.media.MediaFormat
|
|
6
|
+
import com.coremedia.iso.boxes.SampleDescriptionBox
|
|
7
|
+
import com.coremedia.iso.boxes.sampleentry.AudioSampleEntry
|
|
8
|
+
import com.coremedia.iso.boxes.sampleentry.VisualSampleEntry
|
|
9
|
+
import com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox
|
|
10
|
+
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.AudioSpecificConfig
|
|
11
|
+
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.DecoderConfigDescriptor
|
|
12
|
+
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.ESDescriptor
|
|
13
|
+
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.SLConfigDescriptor
|
|
14
|
+
import com.mp4parser.iso14496.part15.AvcConfigurationBox
|
|
15
|
+
import java.util.*
|
|
16
|
+
|
|
17
|
+
class Track(id: Int, format: MediaFormat, audio: Boolean) {
|
|
18
|
+
|
|
19
|
+
private var trackId: Long = 0
|
|
20
|
+
private val samples = ArrayList<Sample>()
|
|
21
|
+
private var duration: Long = 0
|
|
22
|
+
private var handler: String
|
|
23
|
+
private var sampleDescriptionBox: SampleDescriptionBox
|
|
24
|
+
private var syncSamples: LinkedList<Int>? = null
|
|
25
|
+
private var timeScale = 0
|
|
26
|
+
private val creationTime = Date()
|
|
27
|
+
private var height = 0
|
|
28
|
+
private var width = 0
|
|
29
|
+
private var volume = 0f
|
|
30
|
+
private val sampleDurations = ArrayList<Long>()
|
|
31
|
+
private val isAudio = audio
|
|
32
|
+
private var samplingFrequencyIndexMap: Map<Int, Int> = HashMap()
|
|
33
|
+
private var lastPresentationTimeUs: Long = 0
|
|
34
|
+
private var first = true
|
|
35
|
+
|
|
36
|
+
init {
|
|
37
|
+
samplingFrequencyIndexMap = mapOf(
|
|
38
|
+
96000 to 0x0,
|
|
39
|
+
88200 to 0x1,
|
|
40
|
+
64000 to 0x2,
|
|
41
|
+
48000 to 0x3,
|
|
42
|
+
44100 to 0x4,
|
|
43
|
+
32000 to 0x5,
|
|
44
|
+
24000 to 0x6,
|
|
45
|
+
22050 to 0x7,
|
|
46
|
+
16000 to 0x8,
|
|
47
|
+
12000 to 0x9,
|
|
48
|
+
11025 to 0xa,
|
|
49
|
+
8000 to 0xb,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
trackId = id.toLong()
|
|
53
|
+
if (!isAudio) {
|
|
54
|
+
sampleDurations.add(3015.toLong())
|
|
55
|
+
duration = 3015
|
|
56
|
+
width = format.getInteger(MediaFormat.KEY_WIDTH)
|
|
57
|
+
height = format.getInteger(MediaFormat.KEY_HEIGHT)
|
|
58
|
+
timeScale = 90000
|
|
59
|
+
syncSamples = LinkedList()
|
|
60
|
+
handler = "vide"
|
|
61
|
+
|
|
62
|
+
sampleDescriptionBox = SampleDescriptionBox()
|
|
63
|
+
val mime = format.getString(MediaFormat.KEY_MIME)
|
|
64
|
+
if (mime == "video/avc") {
|
|
65
|
+
val visualSampleEntry =
|
|
66
|
+
VisualSampleEntry(VisualSampleEntry.TYPE3).setup(width, height)
|
|
67
|
+
|
|
68
|
+
val avcConfigurationBox = AvcConfigurationBox()
|
|
69
|
+
if (format.getByteBuffer("csd-0") != null) {
|
|
70
|
+
val spsArray = ArrayList<ByteArray>()
|
|
71
|
+
val spsBuff = format.getByteBuffer("csd-0")
|
|
72
|
+
spsBuff!!.position(4)
|
|
73
|
+
|
|
74
|
+
val spsBytes = ByteArray(spsBuff.remaining())
|
|
75
|
+
spsBuff[spsBytes]
|
|
76
|
+
spsArray.add(spsBytes)
|
|
77
|
+
|
|
78
|
+
val ppsArray = ArrayList<ByteArray>()
|
|
79
|
+
val ppsBuff = format.getByteBuffer("csd-1")
|
|
80
|
+
ppsBuff?.let {
|
|
81
|
+
it.position(4)
|
|
82
|
+
|
|
83
|
+
val ppsBytes = ByteArray(it.remaining())
|
|
84
|
+
it[ppsBytes]
|
|
85
|
+
|
|
86
|
+
ppsArray.add(ppsBytes)
|
|
87
|
+
avcConfigurationBox.sequenceParameterSets = spsArray
|
|
88
|
+
avcConfigurationBox.pictureParameterSets = ppsArray
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (format.containsKey("level")) {
|
|
93
|
+
when (format.getInteger("level")) {
|
|
94
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel1 -> {
|
|
95
|
+
avcConfigurationBox.avcLevelIndication = 1
|
|
96
|
+
}
|
|
97
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel2 -> {
|
|
98
|
+
avcConfigurationBox.avcLevelIndication = 2
|
|
99
|
+
}
|
|
100
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel11 -> {
|
|
101
|
+
avcConfigurationBox.avcLevelIndication = 11
|
|
102
|
+
}
|
|
103
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel12 -> {
|
|
104
|
+
avcConfigurationBox.avcLevelIndication = 12
|
|
105
|
+
}
|
|
106
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel13 -> {
|
|
107
|
+
avcConfigurationBox.avcLevelIndication = 13
|
|
108
|
+
}
|
|
109
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel21 -> {
|
|
110
|
+
avcConfigurationBox.avcLevelIndication = 21
|
|
111
|
+
}
|
|
112
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel22 -> {
|
|
113
|
+
avcConfigurationBox.avcLevelIndication = 22
|
|
114
|
+
}
|
|
115
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel3 -> {
|
|
116
|
+
avcConfigurationBox.avcLevelIndication = 3
|
|
117
|
+
}
|
|
118
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel31 -> {
|
|
119
|
+
avcConfigurationBox.avcLevelIndication = 31
|
|
120
|
+
}
|
|
121
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel32 -> {
|
|
122
|
+
avcConfigurationBox.avcLevelIndication = 32
|
|
123
|
+
}
|
|
124
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel4 -> {
|
|
125
|
+
avcConfigurationBox.avcLevelIndication = 4
|
|
126
|
+
}
|
|
127
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel41 -> {
|
|
128
|
+
avcConfigurationBox.avcLevelIndication = 41
|
|
129
|
+
}
|
|
130
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel42 -> {
|
|
131
|
+
avcConfigurationBox.avcLevelIndication = 42
|
|
132
|
+
}
|
|
133
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel5 -> {
|
|
134
|
+
avcConfigurationBox.avcLevelIndication = 5
|
|
135
|
+
}
|
|
136
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel51 -> {
|
|
137
|
+
avcConfigurationBox.avcLevelIndication = 51
|
|
138
|
+
}
|
|
139
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel52 -> {
|
|
140
|
+
avcConfigurationBox.avcLevelIndication = 52
|
|
141
|
+
}
|
|
142
|
+
MediaCodecInfo.CodecProfileLevel.AVCLevel1b -> {
|
|
143
|
+
avcConfigurationBox.avcLevelIndication = 0x1b
|
|
144
|
+
}
|
|
145
|
+
else -> avcConfigurationBox.avcLevelIndication = 13
|
|
146
|
+
}
|
|
147
|
+
} else {
|
|
148
|
+
avcConfigurationBox.avcLevelIndication = 13
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
avcConfigurationBox.avcProfileIndication = 100
|
|
152
|
+
avcConfigurationBox.bitDepthLumaMinus8 = -1
|
|
153
|
+
avcConfigurationBox.bitDepthChromaMinus8 = -1
|
|
154
|
+
avcConfigurationBox.chromaFormat = -1
|
|
155
|
+
avcConfigurationBox.configurationVersion = 1
|
|
156
|
+
avcConfigurationBox.lengthSizeMinusOne = 3
|
|
157
|
+
avcConfigurationBox.profileCompatibility = 0
|
|
158
|
+
|
|
159
|
+
visualSampleEntry.addBox(avcConfigurationBox)
|
|
160
|
+
sampleDescriptionBox.addBox(visualSampleEntry)
|
|
161
|
+
|
|
162
|
+
} else if (mime == "video/mp4v") {
|
|
163
|
+
val visualSampleEntry =
|
|
164
|
+
VisualSampleEntry(VisualSampleEntry.TYPE1).setup(width, height)
|
|
165
|
+
sampleDescriptionBox.addBox(visualSampleEntry)
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
sampleDurations.add(1024.toLong())
|
|
169
|
+
duration = 1024
|
|
170
|
+
volume = 1f
|
|
171
|
+
timeScale = format.getInteger(MediaFormat.KEY_SAMPLE_RATE)
|
|
172
|
+
handler = "soun"
|
|
173
|
+
sampleDescriptionBox = SampleDescriptionBox()
|
|
174
|
+
|
|
175
|
+
val audioSampleEntry = AudioSampleEntry(AudioSampleEntry.TYPE3).setup(format)
|
|
176
|
+
|
|
177
|
+
val esds = ESDescriptorBox()
|
|
178
|
+
|
|
179
|
+
val descriptor = ESDescriptor()
|
|
180
|
+
descriptor.esId = 0
|
|
181
|
+
|
|
182
|
+
val slConfigDescriptor = SLConfigDescriptor()
|
|
183
|
+
slConfigDescriptor.predefined = 2
|
|
184
|
+
descriptor.slConfigDescriptor = slConfigDescriptor
|
|
185
|
+
|
|
186
|
+
val decoderConfigDescriptor = DecoderConfigDescriptor().setup()
|
|
187
|
+
|
|
188
|
+
val audioSpecificConfig = AudioSpecificConfig()
|
|
189
|
+
audioSpecificConfig.setAudioObjectType(2)
|
|
190
|
+
audioSpecificConfig.setSamplingFrequencyIndex(
|
|
191
|
+
samplingFrequencyIndexMap[audioSampleEntry.sampleRate.toInt()]!!
|
|
192
|
+
)
|
|
193
|
+
audioSpecificConfig.setChannelConfiguration(audioSampleEntry.channelCount)
|
|
194
|
+
decoderConfigDescriptor.audioSpecificInfo = audioSpecificConfig
|
|
195
|
+
descriptor.decoderConfigDescriptor = decoderConfigDescriptor
|
|
196
|
+
|
|
197
|
+
val data = descriptor.serialize()
|
|
198
|
+
esds.esDescriptor = descriptor
|
|
199
|
+
esds.data = data
|
|
200
|
+
audioSampleEntry.addBox(esds)
|
|
201
|
+
sampleDescriptionBox.addBox(audioSampleEntry)
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
fun getTrackId(): Long = trackId
|
|
206
|
+
|
|
207
|
+
fun addSample(offset: Long, bufferInfo: MediaCodec.BufferInfo) {
|
|
208
|
+
val isSyncFrame = !isAudio && bufferInfo.flags and MediaCodec.BUFFER_FLAG_KEY_FRAME != 0
|
|
209
|
+
|
|
210
|
+
samples.add(Sample(offset, bufferInfo.size.toLong()))
|
|
211
|
+
|
|
212
|
+
if (syncSamples != null && isSyncFrame) {
|
|
213
|
+
syncSamples?.add(samples.size)
|
|
214
|
+
}
|
|
215
|
+
var delta = bufferInfo.presentationTimeUs - lastPresentationTimeUs
|
|
216
|
+
lastPresentationTimeUs = bufferInfo.presentationTimeUs
|
|
217
|
+
delta = (delta * timeScale + 500000L) / 1000000L
|
|
218
|
+
if (!first) {
|
|
219
|
+
sampleDurations.add(sampleDurations.size - 1, delta)
|
|
220
|
+
duration += delta
|
|
221
|
+
}
|
|
222
|
+
first = false
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
fun getSamples(): ArrayList<Sample> = samples
|
|
226
|
+
|
|
227
|
+
fun getDuration(): Long = duration
|
|
228
|
+
|
|
229
|
+
fun getHandler(): String = handler
|
|
230
|
+
|
|
231
|
+
fun getSampleDescriptionBox(): SampleDescriptionBox = sampleDescriptionBox
|
|
232
|
+
|
|
233
|
+
fun getSyncSamples(): LongArray? {
|
|
234
|
+
if (syncSamples == null || syncSamples!!.isEmpty()) {
|
|
235
|
+
return null
|
|
236
|
+
}
|
|
237
|
+
val returns = LongArray(syncSamples!!.size)
|
|
238
|
+
for (i in syncSamples!!.indices) {
|
|
239
|
+
returns[i] = syncSamples!![i].toLong()
|
|
240
|
+
}
|
|
241
|
+
return returns
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
fun getTimeScale(): Int = timeScale
|
|
245
|
+
|
|
246
|
+
fun getCreationTime(): Date = creationTime
|
|
247
|
+
|
|
248
|
+
fun getWidth(): Int = width
|
|
249
|
+
|
|
250
|
+
fun getHeight(): Int = height
|
|
251
|
+
|
|
252
|
+
fun getVolume(): Float = volume
|
|
253
|
+
|
|
254
|
+
fun getSampleDurations(): ArrayList<Long> = sampleDurations
|
|
255
|
+
|
|
256
|
+
fun isAudio(): Boolean = isAudio
|
|
257
|
+
|
|
258
|
+
private fun DecoderConfigDescriptor.setup(): DecoderConfigDescriptor = apply {
|
|
259
|
+
objectTypeIndication = 0x40
|
|
260
|
+
streamType = 5
|
|
261
|
+
bufferSizeDB = 1536
|
|
262
|
+
maxBitRate = 96000
|
|
263
|
+
avgBitRate = 96000
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
private fun VisualSampleEntry.setup(w: Int, h: Int): VisualSampleEntry = apply {
|
|
267
|
+
dataReferenceIndex = 1
|
|
268
|
+
depth = 24
|
|
269
|
+
frameCount = 1
|
|
270
|
+
horizresolution = 72.0
|
|
271
|
+
vertresolution = 72.0
|
|
272
|
+
width = w
|
|
273
|
+
height = h
|
|
274
|
+
compressorname = "AVC Coding"
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
private fun AudioSampleEntry.setup(format: MediaFormat): AudioSampleEntry = apply {
|
|
278
|
+
channelCount =
|
|
279
|
+
if (format.getInteger(MediaFormat.KEY_CHANNEL_COUNT) == 1) 2 else format.getInteger(
|
|
280
|
+
MediaFormat.KEY_CHANNEL_COUNT
|
|
281
|
+
)
|
|
282
|
+
sampleRate = format.getInteger(MediaFormat.KEY_SAMPLE_RATE).toLong()
|
|
283
|
+
dataReferenceIndex = 1
|
|
284
|
+
sampleSize = 16
|
|
285
|
+
}
|
|
286
|
+
}
|
|
@@ -27,8 +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
|
|
31
|
-
abstract fun clearCache(cacheDir: String?, promise:
|
|
30
|
+
abstract fun createVideoThumbnail(fileUrl: String, options: ReadableMap, promise: Promise)
|
|
31
|
+
abstract fun clearCache(cacheDir: String?, promise: Promise)
|
|
32
32
|
abstract fun addListener(eventName: String)
|
|
33
33
|
abstract fun removeListeners(count: Double)
|
|
34
34
|
}
|
|
@@ -70,9 +70,9 @@ const getVideoMetaData = path => {
|
|
|
70
70
|
return _Main.Compressor.getVideoMetaData(path);
|
|
71
71
|
};
|
|
72
72
|
exports.getVideoMetaData = getVideoMetaData;
|
|
73
|
-
const createVideoThumbnail = function (
|
|
73
|
+
const createVideoThumbnail = function (fileUrl) {
|
|
74
74
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
75
|
-
return _Main.Compressor.createVideoThumbnail(
|
|
75
|
+
return _Main.Compressor.createVideoThumbnail(fileUrl, options);
|
|
76
76
|
};
|
|
77
77
|
exports.createVideoThumbnail = createVideoThumbnail;
|
|
78
78
|
const clearCache = cacheDir => {
|
|
@@ -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","createVideoThumbnail","
|
|
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","fileUrl","options","clearCache","cacheDir","isValidUrl","url","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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"}
|
|
@@ -21,9 +21,9 @@ export const getRealPath = function (path) {
|
|
|
21
21
|
export const getVideoMetaData = path => {
|
|
22
22
|
return Compressor.getVideoMetaData(path);
|
|
23
23
|
};
|
|
24
|
-
export const createVideoThumbnail = function (
|
|
24
|
+
export const createVideoThumbnail = function (fileUrl) {
|
|
25
25
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
26
|
-
return Compressor.createVideoThumbnail(
|
|
26
|
+
return Compressor.createVideoThumbnail(fileUrl, options);
|
|
27
27
|
};
|
|
28
28
|
export const clearCache = cacheDir => {
|
|
29
29
|
return Compressor.clearCache(cacheDir);
|
|
@@ -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","createVideoThumbnail","
|
|
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","fileUrl","options","clearCache","cacheDir","isValidUrl","url","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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"}
|
|
@@ -15,11 +15,21 @@ declare const _default: {
|
|
|
15
15
|
uuidv4: () => string;
|
|
16
16
|
generateFilePath: any;
|
|
17
17
|
getRealPath: any;
|
|
18
|
-
getVideoMetaData:
|
|
18
|
+
getVideoMetaData: (filePath: string) => Promise<string>;
|
|
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:
|
|
22
|
-
|
|
21
|
+
createVideoThumbnail: (fileUrl: string, options?: {
|
|
22
|
+
headers?: {
|
|
23
|
+
[key: string]: string;
|
|
24
|
+
} | undefined;
|
|
25
|
+
} | undefined) => Promise<{
|
|
26
|
+
path: string;
|
|
27
|
+
size: number;
|
|
28
|
+
mime: string;
|
|
29
|
+
width: number;
|
|
30
|
+
height: number;
|
|
31
|
+
}>;
|
|
32
|
+
clearCache: (cacheDir?: string | undefined) => Promise<string>;
|
|
23
33
|
download: (fileUrl: string, downloadProgress?: ((progress: number) => void) | undefined, progressDivider?: number | undefined) => Promise<any>;
|
|
24
34
|
};
|
|
25
35
|
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,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
|
|
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"}
|