react-native-audio-concat 0.7.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/android/build.gradle +1 -0
- package/android/src/main/java/com/audioconcat/AudioConcatModule.kt +93 -1792
- package/ios/AudioConcat.mm +60 -0
- package/lib/module/NativeAudioConcat.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/NativeAudioConcat.d.ts +1 -0
- package/lib/typescript/src/NativeAudioConcat.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeAudioConcat.ts +1 -0
- package/src/index.tsx +7 -0
package/ios/AudioConcat.mm
CHANGED
|
@@ -90,6 +90,66 @@
|
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
- (void)convertToM4a:(NSString *)inputPath
|
|
94
|
+
outputPath:(NSString *)outputPath
|
|
95
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
96
|
+
reject:(RCTPromiseRejectBlock)reject
|
|
97
|
+
{
|
|
98
|
+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
99
|
+
@try {
|
|
100
|
+
NSURL *inputURL = [NSURL fileURLWithPath:inputPath];
|
|
101
|
+
|
|
102
|
+
// Check if input file exists
|
|
103
|
+
if (![[NSFileManager defaultManager] fileExistsAtPath:inputPath]) {
|
|
104
|
+
reject(@"ERR_INPUT_NOT_FOUND", [NSString stringWithFormat:@"Input file does not exist: %@", inputPath], nil);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Load the input audio file
|
|
109
|
+
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
|
|
110
|
+
NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeAudio];
|
|
111
|
+
|
|
112
|
+
if (tracks.count == 0) {
|
|
113
|
+
reject(@"ERR_NO_AUDIO_TRACK", [NSString stringWithFormat:@"No audio track found in file: %@", inputPath], nil);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Setup output URL
|
|
118
|
+
NSURL *outputURL = [NSURL fileURLWithPath:outputPath];
|
|
119
|
+
|
|
120
|
+
// Remove existing file if it exists
|
|
121
|
+
[[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
|
|
122
|
+
|
|
123
|
+
// Create export session
|
|
124
|
+
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset
|
|
125
|
+
presetName:AVAssetExportPresetAppleM4A];
|
|
126
|
+
exportSession.outputURL = outputURL;
|
|
127
|
+
exportSession.outputFileType = AVFileTypeAppleM4A;
|
|
128
|
+
|
|
129
|
+
// Start export
|
|
130
|
+
[exportSession exportAsynchronouslyWithCompletionHandler:^{
|
|
131
|
+
switch (exportSession.status) {
|
|
132
|
+
case AVAssetExportSessionStatusCompleted:
|
|
133
|
+
resolve(outputPath);
|
|
134
|
+
break;
|
|
135
|
+
case AVAssetExportSessionStatusFailed:
|
|
136
|
+
reject(@"ERR_CONVERSION_FAILED", exportSession.error.localizedDescription, exportSession.error);
|
|
137
|
+
break;
|
|
138
|
+
case AVAssetExportSessionStatusCancelled:
|
|
139
|
+
reject(@"ERR_CONVERSION_CANCELLED", @"Conversion was cancelled", nil);
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
reject(@"ERR_CONVERSION_UNKNOWN", @"Unknown conversion error", nil);
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
}];
|
|
146
|
+
|
|
147
|
+
} @catch (NSException *exception) {
|
|
148
|
+
reject(@"ERR_EXCEPTION", exception.reason, nil);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
93
153
|
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
94
154
|
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
95
155
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAudioConcat.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAudioConcat.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAYpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,aAAa,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -4,4 +4,7 @@ import AudioConcat from "./NativeAudioConcat.js";
|
|
|
4
4
|
export function concatAudioFiles(data, outputPath) {
|
|
5
5
|
return AudioConcat.concatAudioFiles(data, outputPath);
|
|
6
6
|
}
|
|
7
|
+
export function convertToM4a(inputPath, outputPath) {
|
|
8
|
+
return AudioConcat.convertToM4a(inputPath, outputPath);
|
|
9
|
+
}
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AudioConcat","concatAudioFiles","data","outputPath"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,WAAW,MAAM,wBAAqB;AAI7C,OAAO,SAASC,gBAAgBA,CAC9BC,IAA0D,EAC1DC,UAAkB,EACD;EACjB,OAAOH,WAAW,CAACC,gBAAgB,CAACC,IAAI,EAAEC,UAAU,CAAC;AACvD","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["AudioConcat","concatAudioFiles","data","outputPath","convertToM4a","inputPath"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,WAAW,MAAM,wBAAqB;AAI7C,OAAO,SAASC,gBAAgBA,CAC9BC,IAA0D,EAC1DC,UAAkB,EACD;EACjB,OAAOH,WAAW,CAACC,gBAAgB,CAACC,IAAI,EAAEC,UAAU,CAAC;AACvD;AAEA,OAAO,SAASC,YAAYA,CAC1BC,SAAiB,EACjBF,UAAkB,EACD;EACjB,OAAOH,WAAW,CAACI,YAAY,CAACC,SAAS,EAAEF,UAAU,CAAC;AACxD","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ export type AudioDataOrSilence = {
|
|
|
6
6
|
};
|
|
7
7
|
export interface Spec extends TurboModule {
|
|
8
8
|
concatAudioFiles(data: AudioDataOrSilence[], outputPath: string): Promise<string>;
|
|
9
|
+
convertToM4a(inputPath: string, outputPath: string): Promise<string>;
|
|
9
10
|
}
|
|
10
11
|
declare const _default: Spec;
|
|
11
12
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAudioConcat.d.ts","sourceRoot":"","sources":["../../../src/NativeAudioConcat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,gBAAgB,CACd,IAAI,EAAE,kBAAkB,EAAE,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeAudioConcat.d.ts","sourceRoot":"","sources":["../../../src/NativeAudioConcat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,gBAAgB,CACd,IAAI,EAAE,kBAAkB,EAAE,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;;AAED,wBAAqE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
package/package.json
CHANGED
package/src/NativeAudioConcat.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface Spec extends TurboModule {
|
|
|
7
7
|
data: AudioDataOrSilence[],
|
|
8
8
|
outputPath: string
|
|
9
9
|
): Promise<string>;
|
|
10
|
+
convertToM4a(inputPath: string, outputPath: string): Promise<string>;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export default TurboModuleRegistry.getEnforcing<Spec>('AudioConcat');
|
package/src/index.tsx
CHANGED
|
@@ -8,3 +8,10 @@ export function concatAudioFiles(
|
|
|
8
8
|
): Promise<string> {
|
|
9
9
|
return AudioConcat.concatAudioFiles(data, outputPath);
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
export function convertToM4a(
|
|
13
|
+
inputPath: string,
|
|
14
|
+
outputPath: string
|
|
15
|
+
): Promise<string> {
|
|
16
|
+
return AudioConcat.convertToM4a(inputPath, outputPath);
|
|
17
|
+
}
|