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.
@@ -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;AAWpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,aAAa,CAAC","ignoreList":[]}
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":[]}
@@ -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
@@ -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;CACpB;;AAED,wBAAqE"}
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"}
@@ -4,4 +4,5 @@ export declare function concatAudioFiles(data: Array<{
4
4
  } | {
5
5
  durationMs: number;
6
6
  }>, outputPath: string): Promise<string>;
7
+ export declare function convertToM4a(inputPath: string, outputPath: string): Promise<string>;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-concat",
3
- "version": "0.7.1",
3
+ "version": "0.9.0",
4
4
  "description": "audio-concat for react-native",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -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
+ }