diff --git a/react-native/README.md b/react-native/README.md
index 049a6fa..194b66d 100644
--- a/react-native/README.md
+++ b/react-native/README.md
@@ -1,16 +1,13 @@
-# FFmpegKit for React Native
+# FFmpeg Kit for React Native (Android Only Fork)
### 1. Features
- Includes both `FFmpeg` and `FFprobe`
- Supports
- - Both `Android` and `iOS`
+ - Android only in this fork
- FFmpeg `v6.0`
- `arm-v7a`, `arm-v7a-neon`, `arm64-v8a`, `x86` and `x86_64` architectures on Android
- `Android API Level 24` or later
- `API Level 16` on LTS releases
- - `armv7`, `armv7s`, `arm64`, `arm64-simulator`, `i386`, `x86_64`, `x86_64-mac-catalyst` and `arm64-mac-catalyst` architectures on iOS
- - `iOS SDK 12.1` or later
- - `iOS SDK 10` on LTS releases
- Can process Storage Access Framework (SAF) Uris on Android
- 25 external libraries
@@ -21,11 +18,13 @@
`vid.stab`, `x264`, `x265`, `xvidcore`
- `zlib` and `MediaCodec` Android system libraries
- - `bzip2`, `iconv`, `libuuid`, `zlib` system libraries and `AudioToolbox`, `VideoToolbox`, `AVFoundation` system frameworks on iOS
- Includes Typescript definitions
- Licensed under `LGPL 3.0` by default, some packages licensed by `GPL v3.0` effectively
+### Important Note
+This is a fork of the original FFmpeg Kit for React Native that removes iOS support to reduce package size. If you need iOS support, please use the original package.
+
### 2. Installation
```sh
@@ -47,24 +46,21 @@ packages and external libraries included in each one of them.
##### 2.1.1 Package Names
-The following table shows all package names and their respective API levels, iOS deployment targets defined in
-`ffmpeg-kit-react-native`.
+The following table shows all package names and their respective API levels defined in `ffmpeg-kit-react-native`.
Package |
-Main Release |
-LTS Release |
+Main Release |
+LTS Release |
|
Name |
Android API Level |
-iOS Minimum Deployment Target |
Name |
Android API Level |
-iOS Minimum Deployment Target |
@@ -72,73 +68,57 @@ The following table shows all package names and their respective API levels, iOS
min |
min |
24 |
-12.1 |
min-lts |
16 |
-10 |
min-gpl |
min-gpl |
24 |
-12.1 |
min-gpl-lts |
16 |
-10 |
https |
(*) https |
24 |
-12.1 |
https-lts |
16 |
-10 |
https-gpl |
https-gpl |
24 |
-12.1 |
https-gpl-lts |
16 |
-10 |
audio |
audio |
24 |
-12.1 |
audio-lts |
16 |
-10 |
video |
video |
24 |
-12.1 |
video-lts |
16 |
-10 |
full |
full |
24 |
-12.1 |
full-lts |
16 |
-10 |
full-gpl |
full-gpl |
24 |
-12.1 |
full-gpl-lts |
16 |
-10 |
diff --git a/react-native/ffmpeg-kit-react-native.podspec b/react-native/ffmpeg-kit-react-native.podspec
index 889d3e8..a20a34d 100644
--- a/react-native/ffmpeg-kit-react-native.podspec
+++ b/react-native/ffmpeg-kit-react-native.podspec
@@ -5,131 +5,19 @@ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
Pod::Spec.new do |s|
s.name = package["name"]
s.version = package["version"]
- s.summary = package["description"]
+ s.summary = package["description"] + " (Android only)"
s.homepage = package["homepage"]
s.license = package["license"]
s.authors = package["author"]
s.platform = :ios
+ s.source = { :git => "https://github.com/arthenica/ffmpeg-kit.git", :tag => "react.native.v#{s.version}" }
+ s.source_files = "ios/*.{h,m}"
s.requires_arc = true
- s.static_framework = true
-
- s.source = { :git => "https://github.com/arthenica/ffmpeg-kit.git", :tag => "react.native.v#{s.version}" }
-
- s.default_subspec = 'https'
s.dependency "React-Core"
- s.subspec 'min' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-min', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'min-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-min', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'min-gpl' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-min-gpl', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'min-gpl-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-min-gpl', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'https' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-https', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'https-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-https', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'https-gpl' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-https-gpl', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'https-gpl-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-https-gpl', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'audio' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-audio', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'audio-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-audio', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'video' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-video', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'video-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-video', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'full' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-full', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'full-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-full', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
- s.subspec 'full-gpl' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-full-gpl', "6.0"
- ss.ios.deployment_target = '12.1'
- end
-
- s.subspec 'full-gpl-lts' do |ss|
- ss.source_files = '**/FFmpegKitReactNativeModule.m',
- '**/FFmpegKitReactNativeModule.h'
- ss.dependency 'ffmpeg-kit-ios-full-gpl', "6.0.LTS"
- ss.ios.deployment_target = '10'
- end
-
+ # This is a placeholder podspec that doesn't include any actual FFmpeg dependencies
+ # iOS support has been removed from this fork
+ s.ios.deployment_target = '12.1'
end
diff --git a/react-native/ios/FFmpegKitReactNativeModule.h b/react-native/ios/FFmpegKitReactNativeModule.h
index 51458f9..7ff347d 100644
--- a/react-native/ios/FFmpegKitReactNativeModule.h
+++ b/react-native/ios/FFmpegKitReactNativeModule.h
@@ -17,10 +17,11 @@
* along with FFmpegKit. If not, see .
*/
-#import
-#import
#import
#import
-@interface FFmpegKitReactNativeModule : RCTEventEmitter
+@interface FFmpegKitReactNativeModule : RCTEventEmitter
+
+// This is a stub implementation that indicates iOS is not supported
+
@end
diff --git a/react-native/ios/FFmpegKitReactNativeModule.m b/react-native/ios/FFmpegKitReactNativeModule.m
index 6b3895b..8cdc29e 100644
--- a/react-native/ios/FFmpegKitReactNativeModule.m
+++ b/react-native/ios/FFmpegKitReactNativeModule.m
@@ -71,7 +71,7 @@ extern int const AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit;
dispatch_queue_t asyncDispatchQueue;
}
-RCT_EXPORT_MODULE(FFmpegKitReactNativeModule);
+RCT_EXPORT_MODULE()
- (instancetype)init {
self = [super init];
@@ -86,14 +86,8 @@ RCT_EXPORT_MODULE(FFmpegKitReactNativeModule);
return self;
}
-- (NSArray*)supportedEvents {
- NSMutableArray *array = [NSMutableArray array];
-
- [array addObject:EVENT_LOG_CALLBACK_EVENT];
- [array addObject:EVENT_STATISTICS_CALLBACK_EVENT];
- [array addObject:EVENT_COMPLETE_CALLBACK_EVENT];
-
- return array;
+- (NSArray *)supportedEvents {
+ return @[@"FFmpegKitLogCallbackEvent", @"FFmpegKitStatisticsCallbackEvent", @"FFmpegKitCompleteCallbackEvent"];
}
- (void)registerGlobalCallbacks {
@@ -387,15 +381,15 @@ RCT_EXPORT_METHOD(closeFFmpegPipe:(NSString*)ffmpegPipePath resolver:(RCTPromise
}
RCT_EXPORT_METHOD(getFFmpegVersion:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitConfig getFFmpegVersion]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(isLTSBuild:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([NSNumber numberWithInt:[FFmpegKitConfig isLTSBuild]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getBuildDate:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitConfig getBuildDate]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(setEnvironmentVariable:(NSString*)variableName with:(NSString*)variableValue resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
@@ -514,21 +508,19 @@ RCT_EXPORT_METHOD(asyncMediaInformationSessionExecute:(int)sessionId withTimeout
}
RCT_EXPORT_METHOD(getLogLevel:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([NSNumber numberWithInt:[FFmpegKitConfig getLogLevel]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(setLogLevel:(int)level resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- [FFmpegKitConfig setLogLevel:level];
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getSessionHistorySize:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([NSNumber numberWithInt:[FFmpegKitConfig getSessionHistorySize]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(setSessionHistorySize:(int)sessionHistorySize resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- [FFmpegKitConfig setSessionHistorySize:sessionHistorySize];
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getSession:(int)sessionId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
@@ -541,160 +533,95 @@ RCT_EXPORT_METHOD(getSession:(int)sessionId resolver:(RCTPromiseResolveBlock)res
}
RCT_EXPORT_METHOD(getLastSession:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionDictionary:[FFmpegKitConfig getLastSession]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getLastCompletedSession:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionDictionary:[FFmpegKitConfig getLastCompletedSession]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getSessions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionArray:[FFmpegKitConfig getSessions]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(clearSessions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- [FFmpegKitConfig clearSessions];
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getSessionsByState:(int)sessionState resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionArray:[FFmpegKitConfig getSessionsByState:sessionState]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getLogRedirectionStrategy:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule logRedirectionStrategyToNumber:[FFmpegKitConfig getLogRedirectionStrategy]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(setLogRedirectionStrategy:(int)logRedirectionStrategy resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- [FFmpegKitConfig setLogRedirectionStrategy:logRedirectionStrategy];
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(messagesInTransmit:(int)sessionId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([NSNumber numberWithInt:[FFmpegKitConfig messagesInTransmit:sessionId]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getPlatform:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve(PLATFORM_NAME);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(writeToPipe:(NSString*)inputPath onPipe:(NSString*)namedPipePath resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- dispatch_async(asyncDispatchQueue, ^{
-
- NSLog(@"Starting copy %@ to pipe %@ operation.\n", inputPath, namedPipePath);
-
- NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath: inputPath];
- if (fileHandle == nil) {
- NSLog(@"Failed to open file %@.\n", inputPath);
- reject(@"Copy failed", [NSString stringWithFormat:@"Failed to open file %@.", inputPath], nil);
- return;
- }
-
- NSFileHandle *pipeHandle = [NSFileHandle fileHandleForWritingAtPath: namedPipePath];
- if (pipeHandle == nil) {
- NSLog(@"Failed to open pipe %@.\n", namedPipePath);
- reject(@"Copy failed", [NSString stringWithFormat:@"Failed to open pipe %@.", namedPipePath], nil);
- [fileHandle closeFile];
- return;
- }
-
- int BUFFER_SIZE = 4096;
- unsigned long readBytes = 0;
- unsigned long totalBytes = 0;
- double startTime = CACurrentMediaTime();
-
- @try {
- [fileHandle seekToFileOffset: 0];
-
- do {
- NSData *data = [fileHandle readDataOfLength:BUFFER_SIZE];
- readBytes = [data length];
- if (readBytes > 0) {
- totalBytes += readBytes;
- [pipeHandle writeData:data];
- }
- } while (readBytes > 0);
-
- double endTime = CACurrentMediaTime();
-
- NSLog(@"Copying %@ to pipe %@ operation completed successfully. %lu bytes copied in %f seconds.\n", inputPath, namedPipePath, totalBytes, (endTime - startTime)/1000);
-
- resolve(0);
-
- } @catch (NSException *e) {
- NSLog(@"Copy failed %@.\n", [e reason]);
- reject(@"Copy failed", [NSString stringWithFormat:@"Copy %@ to %@ failed with error %@.", inputPath, namedPipePath, [e reason]], nil);
- } @finally {
- [fileHandle closeFile];
- [pipeHandle closeFile];
- }
- });
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(selectDocument:(BOOL)writable title:(NSString*)title type:(NSString*)type array:(NSArray*)extraTypes resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- reject(@"Not Supported", @"Not supported on iOS platform.", nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getSafParameter:(NSString*)uriString mode:(NSString*)openMode resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- reject(@"Not Supported", @"Not supported on iOS platform.", nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
// FFmpegKit
RCT_EXPORT_METHOD(cancel:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- [FFmpegKit cancel];
-
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(cancelSession:(int)sessionId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- [FFmpegKit cancel:sessionId];
-
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getFFmpegSessions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionArray:[FFmpegKit listSessions]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
// FFprobeKit
RCT_EXPORT_METHOD(getFFprobeSessions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionArray:[FFprobeKit listFFprobeSessions]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getMediaInformationSessions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([FFmpegKitReactNativeModule toSessionArray:[FFprobeKit listMediaInformationSessions]]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
// MediaInformationSession
RCT_EXPORT_METHOD(getMediaInformation:(int)sessionId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- AbstractSession* session = (AbstractSession*)[FFmpegKitConfig getSession:sessionId];
- if (session == nil) {
- reject(@"SESSION_NOT_FOUND", @"Session not found.", nil);
- } else {
- if ([session isMediaInformation]) {
- MediaInformationSession *mediaInformationSession = (MediaInformationSession*)session;
- resolve([FFmpegKitReactNativeModule toMediaInformationDictionary:[mediaInformationSession getMediaInformation]]);
- } else {
- reject(@"NOT_MEDIA_INFORMATION_SESSION", @"A session is found but it does not have the correct type.", nil);
- }
- }
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
// Packages
RCT_EXPORT_METHOD(getPackageName:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([Packages getPackageName]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(getExternalLibraries:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve([Packages getExternalLibraries]);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
RCT_EXPORT_METHOD(uninit:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
- resolve(nil);
+ reject(@"not_supported", @"iOS platform is not supported in this version", nil);
}
- (void)enableLogs {
diff --git a/react-native/package.json b/react-native/package.json
index e39cec3..1d6cffc 100644
--- a/react-native/package.json
+++ b/react-native/package.json
@@ -1,7 +1,7 @@
{
"name": "ffmpeg-kit-react-native",
"version": "6.0.2",
- "description": "FFmpeg Kit for React Native",
+ "description": "FFmpeg Kit for React Native (Android only)",
"main": "src/index",
"types": "src/index.d.ts",
"react-native": "src/index",
@@ -15,8 +15,7 @@
"react-native",
"android",
"ffmpeg",
- "ffmpeg-kit",
- "ios"
+ "ffmpeg-kit"
],
"repository": "https://github.com/arthenica/ffmpeg-kit",
"author": "ARTHENICA (https://www.arthenica.com)",
diff --git a/react-native/src/index.js b/react-native/src/index.js
index 3789aa8..f6a0da0 100644
--- a/react-native/src/index.js
+++ b/react-native/src/index.js
@@ -1,7 +1,12 @@
-import {NativeEventEmitter, NativeModules} from 'react-native';
+import {NativeEventEmitter, NativeModules, Platform} from 'react-native';
const {FFmpegKitReactNativeModule} = NativeModules;
+// Check if the platform is iOS and warn the user
+if (Platform.OS === 'ios') {
+ console.warn('FFmpeg Kit: iOS platform is not supported in this version. All iOS-specific calls will fail.');
+}
+
const ffmpegSessionCompleteCallbackMap = new Map()
const ffprobeSessionCompleteCallbackMap = new Map()
const mediaInformationSessionCompleteCallbackMap = new Map()