react-native-unified-player 0.3.3 → 0.3.5
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/UnifiedPlayer.podspec +1 -1
- package/android/src/main/java/com/unifiedplayer/UnifiedPlayerEventEmitter.kt +1 -1
- package/android/src/main/java/com/unifiedplayer/UnifiedPlayerModule.kt +1 -1
- package/android/src/main/java/com/unifiedplayer/UnifiedPlayerPackage.kt +1 -1
- package/android/src/main/java/com/unifiedplayer/UnifiedPlayerView.kt +1 -1
- package/android/src/main/java/com/unifiedplayer/UnifiedPlayerViewManager.kt +1 -1
- package/ios/UnifiedPlayerModule.h +5 -1
- package/ios/UnifiedPlayerModule.m +31 -22
- package/ios/UnifiedPlayerUIView.h +43 -0
- package/ios/UnifiedPlayerViewManager.m +71 -44
- package/lib/module/index.js +20 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +6 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +29 -0
package/UnifiedPlayer.podspec
CHANGED
|
@@ -10,7 +10,7 @@ Pod::Spec.new do |s|
|
|
|
10
10
|
s.license = package["license"]
|
|
11
11
|
s.authors = package["author"]
|
|
12
12
|
|
|
13
|
-
s.platforms = { :ios => "
|
|
13
|
+
s.platforms = { :ios => "13.0" }
|
|
14
14
|
s.source = { :git => "https://github.com/blueromans/react-native-unified-player.git", :tag => "#{s.version}" }
|
|
15
15
|
|
|
16
16
|
s.source_files = "ios/**/*.{h,m,mm}"
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
#import <React/RCTEventEmitter.h>
|
|
2
2
|
#import <React/RCTBridgeModule.h>
|
|
3
|
+
#import <MobileVLCKit/MobileVLCKit.h> // Import MobileVLCKit
|
|
4
|
+
|
|
5
|
+
// Forward declaration for UnifiedPlayerUIView
|
|
6
|
+
@class UnifiedPlayerUIView;
|
|
3
7
|
|
|
4
8
|
@interface UnifiedPlayerModule : RCTEventEmitter <RCTBridgeModule>
|
|
5
|
-
@end
|
|
9
|
+
@end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#import "UnifiedPlayerModule.h"
|
|
2
|
+
#import "UnifiedPlayerUIView.h"
|
|
2
3
|
#import <React/RCTLog.h>
|
|
3
4
|
#import <React/RCTBridgeModule.h>
|
|
4
5
|
#import <React/RCTEventEmitter.h>
|
|
@@ -175,35 +176,43 @@ RCT_EXPORT_METHOD(getCurrentTime:(nonnull NSNumber *)reactTag
|
|
|
175
176
|
// Get video duration
|
|
176
177
|
RCT_EXPORT_METHOD(getDuration:(nonnull NSNumber *)reactTag
|
|
177
178
|
resolver:(RCTPromiseResolveBlock)resolve
|
|
178
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
179
|
-
|
|
179
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
180
|
+
{
|
|
181
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
180
182
|
UIView *view = viewRegistry[reactTag];
|
|
181
|
-
if (!view) {
|
|
182
|
-
|
|
183
|
-
|
|
183
|
+
if (![view isKindOfClass:[UnifiedPlayerUIView class]]) {
|
|
184
|
+
RCTLogError(@"Invalid view returned from registry, expecting UnifiedPlayerUIView, got: %@", view);
|
|
185
|
+
reject(@"E_INVALID_VIEW", @"Expected UnifiedPlayerUIView", nil);
|
|
186
|
+
} else {
|
|
187
|
+
UnifiedPlayerUIView *playerView = (UnifiedPlayerUIView *)view;
|
|
188
|
+
float duration = [playerView getDuration];
|
|
189
|
+
resolve(@(duration));
|
|
184
190
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
191
|
+
}];
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
RCT_EXPORT_METHOD(capture:(nonnull NSNumber *)reactTag
|
|
195
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
196
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
197
|
+
{
|
|
198
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
199
|
+
UIView *view = viewRegistry[reactTag];
|
|
200
|
+
if (![view isKindOfClass:[UnifiedPlayerUIView class]]) {
|
|
201
|
+
RCTLogError(@"Invalid view returned from registry, expecting UnifiedPlayerUIView, got: %@", view);
|
|
202
|
+
reject(@"E_INVALID_VIEW", @"Expected UnifiedPlayerUIView", nil);
|
|
190
203
|
return;
|
|
191
204
|
}
|
|
192
205
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
duration = player.media.length.intValue / 1000.0f;
|
|
200
|
-
resolve(@(duration));
|
|
206
|
+
UnifiedPlayerUIView *playerView = (UnifiedPlayerUIView *)view;
|
|
207
|
+
[playerView captureFrameWithCompletion:^(NSString * _Nullable base64String, NSError * _Nullable error) {
|
|
208
|
+
if (error) {
|
|
209
|
+
reject(@"E_CAPTURE_FAILED", error.localizedDescription, error);
|
|
210
|
+
} else if (base64String) {
|
|
211
|
+
resolve(base64String);
|
|
201
212
|
} else {
|
|
202
|
-
reject(@"
|
|
213
|
+
reject(@"E_CAPTURE_FAILED", @"Unknown capture error", nil);
|
|
203
214
|
}
|
|
204
|
-
}
|
|
205
|
-
reject(@"error", [NSString stringWithFormat:@"Error getting duration: %@", exception.reason], nil);
|
|
206
|
-
}
|
|
215
|
+
}];
|
|
207
216
|
}];
|
|
208
217
|
}
|
|
209
218
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#import <UIKit/UIKit.h>
|
|
2
|
+
#import <React/RCTView.h>
|
|
3
|
+
#import <React/RCTComponent.h>
|
|
4
|
+
#import <MobileVLCKit/MobileVLCKit.h>
|
|
5
|
+
|
|
6
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
7
|
+
|
|
8
|
+
@interface UnifiedPlayerUIView : UIView <VLCMediaPlayerDelegate>
|
|
9
|
+
|
|
10
|
+
@property (nonatomic, strong) VLCMediaPlayer *player;
|
|
11
|
+
@property (nonatomic, copy) NSString *videoUrlString;
|
|
12
|
+
@property (nonatomic, assign) BOOL autoplay;
|
|
13
|
+
@property (nonatomic, assign) BOOL loop;
|
|
14
|
+
@property (nonatomic, assign) BOOL isPaused;
|
|
15
|
+
@property (nonatomic, strong) NSArray *mediaOptions;
|
|
16
|
+
@property (nonatomic, weak) RCTBridge *bridge;
|
|
17
|
+
@property (nonatomic, assign) VLCMediaPlayerState previousState;
|
|
18
|
+
@property (nonatomic, assign) BOOL hasRenderedVideo;
|
|
19
|
+
@property (nonatomic, assign) BOOL readyEventSent;
|
|
20
|
+
|
|
21
|
+
// Event callbacks
|
|
22
|
+
@property (nonatomic, copy) RCTDirectEventBlock onLoadStart;
|
|
23
|
+
@property (nonatomic, copy) RCTDirectEventBlock onReadyToPlay;
|
|
24
|
+
@property (nonatomic, copy) RCTDirectEventBlock onError;
|
|
25
|
+
@property (nonatomic, copy) RCTDirectEventBlock onProgress;
|
|
26
|
+
@property (nonatomic, copy) RCTDirectEventBlock onPlaybackComplete;
|
|
27
|
+
@property (nonatomic, copy) RCTDirectEventBlock onPlaybackStalled;
|
|
28
|
+
@property (nonatomic, copy) RCTDirectEventBlock onPlaybackResumed;
|
|
29
|
+
@property (nonatomic, copy) RCTDirectEventBlock onPlaying;
|
|
30
|
+
@property (nonatomic, copy) RCTDirectEventBlock onPaused;
|
|
31
|
+
|
|
32
|
+
// Method declarations
|
|
33
|
+
- (void)setupWithVideoUrlString:(NSString *)videoUrlString;
|
|
34
|
+
- (void)play;
|
|
35
|
+
- (void)pause;
|
|
36
|
+
- (void)seekToTime:(NSNumber *)timeNumber;
|
|
37
|
+
- (float)getCurrentTime;
|
|
38
|
+
- (float)getDuration;
|
|
39
|
+
- (void)captureFrameWithCompletion:(void (^)(NSString * _Nullable base64String, NSError * _Nullable error))completion;
|
|
40
|
+
|
|
41
|
+
@end
|
|
42
|
+
|
|
43
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -8,37 +8,7 @@
|
|
|
8
8
|
#import <React/RCTComponent.h>
|
|
9
9
|
#import <MobileVLCKit/MobileVLCKit.h>
|
|
10
10
|
#import "UnifiedPlayerModule.h"
|
|
11
|
-
|
|
12
|
-
// Forward declarations
|
|
13
|
-
@interface UnifiedPlayerUIView : UIView <VLCMediaPlayerDelegate>
|
|
14
|
-
@property (nonatomic, strong) VLCMediaPlayer *player;
|
|
15
|
-
@property (nonatomic, copy) NSString *videoUrlString;
|
|
16
|
-
@property (nonatomic, assign) BOOL autoplay;
|
|
17
|
-
@property (nonatomic, assign) BOOL loop;
|
|
18
|
-
@property (nonatomic, assign) BOOL isPaused;
|
|
19
|
-
@property (nonatomic, strong) NSArray *mediaOptions;
|
|
20
|
-
@property (nonatomic, weak) RCTBridge *bridge;
|
|
21
|
-
@property (nonatomic, assign) VLCMediaPlayerState previousState;
|
|
22
|
-
@property (nonatomic, assign) BOOL hasRenderedVideo;
|
|
23
|
-
|
|
24
|
-
// Event callbacks
|
|
25
|
-
@property (nonatomic, copy) RCTDirectEventBlock onLoadStart;
|
|
26
|
-
@property (nonatomic, copy) RCTDirectEventBlock onReadyToPlay;
|
|
27
|
-
@property (nonatomic, copy) RCTDirectEventBlock onError;
|
|
28
|
-
@property (nonatomic, copy) RCTDirectEventBlock onProgress;
|
|
29
|
-
@property (nonatomic, copy) RCTDirectEventBlock onPlaybackComplete;
|
|
30
|
-
@property (nonatomic, copy) RCTDirectEventBlock onPlaybackStalled;
|
|
31
|
-
@property (nonatomic, copy) RCTDirectEventBlock onPlaybackResumed;
|
|
32
|
-
@property (nonatomic, copy) RCTDirectEventBlock onPlaying;
|
|
33
|
-
@property (nonatomic, copy) RCTDirectEventBlock onPaused;
|
|
34
|
-
|
|
35
|
-
- (void)setupWithVideoUrlString:(NSString *)videoUrlString;
|
|
36
|
-
- (void)play;
|
|
37
|
-
- (void)pause;
|
|
38
|
-
- (void)seekToTime:(NSNumber *)timeNumber;
|
|
39
|
-
- (float)getCurrentTime;
|
|
40
|
-
- (float)getDuration;
|
|
41
|
-
@end
|
|
11
|
+
#import "UnifiedPlayerUIView.h"
|
|
42
12
|
|
|
43
13
|
// Main player view implementation
|
|
44
14
|
@implementation UnifiedPlayerUIView
|
|
@@ -49,6 +19,7 @@
|
|
|
49
19
|
|
|
50
20
|
// Initialize properties
|
|
51
21
|
_hasRenderedVideo = NO;
|
|
22
|
+
_readyEventSent = NO;
|
|
52
23
|
|
|
53
24
|
// Create the player
|
|
54
25
|
_player = [[VLCMediaPlayer alloc] init];
|
|
@@ -179,13 +150,15 @@
|
|
|
179
150
|
self.onPlaying(body);
|
|
180
151
|
} else if ([eventName isEqualToString:@"onPaused"] && self.onPaused) {
|
|
181
152
|
self.onPaused(body);
|
|
153
|
+
} else {
|
|
154
|
+
RCTLogInfo(@"[UnifiedPlayerViewManager] No direct event block found for event: %@", eventName);
|
|
182
155
|
}
|
|
183
156
|
|
|
184
|
-
//
|
|
185
|
-
UnifiedPlayerModule *eventEmitter = [self.bridge moduleForClass:[UnifiedPlayerModule class]];
|
|
186
|
-
if (eventEmitter != nil) {
|
|
187
|
-
|
|
188
|
-
}
|
|
157
|
+
// Removed the redundant event sending via UnifiedPlayerModule emitter
|
|
158
|
+
// UnifiedPlayerModule *eventEmitter = [self.bridge moduleForClass:[UnifiedPlayerModule class]];
|
|
159
|
+
// if (eventEmitter != nil) {
|
|
160
|
+
// [eventEmitter sendEventWithName:eventName body:body];
|
|
161
|
+
// }
|
|
189
162
|
}
|
|
190
163
|
|
|
191
164
|
- (void)setupWithVideoUrlString:(NSString *)videoUrlString {
|
|
@@ -210,8 +183,9 @@
|
|
|
210
183
|
self.window ? @"YES" : @"NO",
|
|
211
184
|
self.superview ? @"YES" : @"NO");
|
|
212
185
|
|
|
213
|
-
// Reset the
|
|
186
|
+
// Reset the flags
|
|
214
187
|
_hasRenderedVideo = NO;
|
|
188
|
+
_readyEventSent = NO;
|
|
215
189
|
|
|
216
190
|
// Make sure we're in the main thread
|
|
217
191
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
@@ -369,11 +343,49 @@
|
|
|
369
343
|
}
|
|
370
344
|
|
|
371
345
|
- (float)getCurrentTime {
|
|
372
|
-
|
|
346
|
+
if (_player) {
|
|
347
|
+
return _player.time.intValue / 1000.0f;
|
|
348
|
+
}
|
|
349
|
+
return 0.0f;
|
|
373
350
|
}
|
|
374
351
|
|
|
375
352
|
- (float)getDuration {
|
|
376
|
-
|
|
353
|
+
if (_player && _player.media) {
|
|
354
|
+
return _player.media.length.intValue / 1000.0f;
|
|
355
|
+
}
|
|
356
|
+
return 0.0f;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
- (void)captureFrameWithCompletion:(void (^)(NSString * _Nullable base64String, NSError * _Nullable error))completion {
|
|
360
|
+
if (!_player || !_player.drawable) {
|
|
361
|
+
NSError *error = [NSError errorWithDomain:@"UnifiedPlayerUIView" code:100 userInfo:@{NSLocalizedDescriptionKey: @"Player not initialized"}];
|
|
362
|
+
if (completion) {
|
|
363
|
+
completion(nil, error);
|
|
364
|
+
}
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// Create a snapshot of the current view
|
|
369
|
+
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);
|
|
370
|
+
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
|
|
371
|
+
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
|
372
|
+
UIGraphicsEndImageContext();
|
|
373
|
+
|
|
374
|
+
if (!image) {
|
|
375
|
+
NSError *error = [NSError errorWithDomain:@"UnifiedPlayerUIView" code:101 userInfo:@{NSLocalizedDescriptionKey: @"Failed to capture frame"}];
|
|
376
|
+
if (completion) {
|
|
377
|
+
completion(nil, error);
|
|
378
|
+
}
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// Convert to base64
|
|
383
|
+
NSData *imageData = UIImageJPEGRepresentation(image, 0.8);
|
|
384
|
+
NSString *base64String = [imageData base64EncodedStringWithOptions:0];
|
|
385
|
+
|
|
386
|
+
if (completion) {
|
|
387
|
+
completion(base64String, nil);
|
|
388
|
+
}
|
|
377
389
|
}
|
|
378
390
|
|
|
379
391
|
- (void)setAutoplay:(BOOL)autoplay {
|
|
@@ -406,6 +418,12 @@
|
|
|
406
418
|
float currentTime = [self getCurrentTime];
|
|
407
419
|
float duration = [self getDuration];
|
|
408
420
|
|
|
421
|
+
// Avoid sending progress events for invalid durations
|
|
422
|
+
if (duration > 0 && !isnan(duration)) {
|
|
423
|
+
[self sendProgressEvent:currentTime duration:duration];
|
|
424
|
+
}
|
|
425
|
+
RCTLogInfo(@"[UnifiedPlayerViewManager] mediaPlayerTimeChanged - CurrentTime: %f, Duration: %f", currentTime, duration); // Added Log
|
|
426
|
+
|
|
409
427
|
// Avoid sending progress events for invalid durations
|
|
410
428
|
if (duration > 0 && !isnan(duration)) {
|
|
411
429
|
[self sendProgressEvent:currentTime duration:duration];
|
|
@@ -414,6 +432,20 @@
|
|
|
414
432
|
|
|
415
433
|
- (void)mediaPlayerStateChanged:(NSNotification *)notification {
|
|
416
434
|
VLCMediaPlayerState state = _player.state;
|
|
435
|
+
RCTLogInfo(@"[UnifiedPlayerViewManager] mediaPlayerStateChanged - New State: %d", state); // Added Log
|
|
436
|
+
|
|
437
|
+
// Check if media is ready to play
|
|
438
|
+
if ((state == VLCMediaPlayerStateBuffering || state == VLCMediaPlayerStatePlaying || state == VLCMediaPlayerStatePaused) && !_readyEventSent) {
|
|
439
|
+
// Check if we have video tracks
|
|
440
|
+
NSArray *videoTracks = [_player.media tracksInformation];
|
|
441
|
+
if (videoTracks.count > 0 || _player.hasVideoOut) {
|
|
442
|
+
RCTLogInfo(@"[UnifiedPlayerViewManager] Media is ready to play - Video tracks found: %lu", (unsigned long)videoTracks.count);
|
|
443
|
+
|
|
444
|
+
// Send ready event when media is ready, regardless of autoplay
|
|
445
|
+
[self sendEvent:@"onReadyToPlay" body:@{}];
|
|
446
|
+
_readyEventSent = YES;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
417
449
|
|
|
418
450
|
// Debug information for video output
|
|
419
451
|
if (state == VLCMediaPlayerStatePlaying) {
|
|
@@ -427,11 +459,6 @@
|
|
|
427
459
|
if (videoTracks.count > 0) {
|
|
428
460
|
RCTLogInfo(@"[UnifiedPlayerViewManager] Video tracks found: %lu", (unsigned long)videoTracks.count);
|
|
429
461
|
|
|
430
|
-
// Send ready event the first time we start playing
|
|
431
|
-
if (!_hasRenderedVideo) {
|
|
432
|
-
[self sendEvent:@"onReadyToPlay" body:@{}];
|
|
433
|
-
}
|
|
434
|
-
|
|
435
462
|
// Send playing event when we actually start playing
|
|
436
463
|
[self sendEvent:@"onPlaying" body:@{}];
|
|
437
464
|
|
package/lib/module/index.js
CHANGED
|
@@ -143,6 +143,26 @@ export const UnifiedPlayer = {
|
|
|
143
143
|
console.log('Error calling getDuration:', error instanceof Error ? error.message : String(error));
|
|
144
144
|
return Promise.reject(error);
|
|
145
145
|
}
|
|
146
|
+
},
|
|
147
|
+
/**
|
|
148
|
+
* Capture the current video frame as a base64 encoded image
|
|
149
|
+
* @param viewTag - The tag of the player view
|
|
150
|
+
* @returns Promise resolving to the base64 encoded image string
|
|
151
|
+
*/
|
|
152
|
+
capture: viewTag => {
|
|
153
|
+
try {
|
|
154
|
+
console.log('UnifiedPlayer.capture called with viewTag:', viewTag);
|
|
155
|
+
return UnifiedPlayerModule.capture(viewTag).then(base64String => {
|
|
156
|
+
console.log('Native capture method called successfully');
|
|
157
|
+
return base64String;
|
|
158
|
+
}).catch(error => {
|
|
159
|
+
console.log('Error calling capture:', error instanceof Error ? error.message : String(error));
|
|
160
|
+
throw error;
|
|
161
|
+
});
|
|
162
|
+
} catch (error) {
|
|
163
|
+
console.log('Error calling capture:', error instanceof Error ? error.message : String(error));
|
|
164
|
+
return Promise.reject(error);
|
|
165
|
+
}
|
|
146
166
|
}
|
|
147
167
|
};
|
|
148
168
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","requireNativeComponent","UIManager","NativeModules","Platform","jsx","_jsx","LINKING_ERROR","select","ios","default","getViewManagerConfig","UnifiedPlayer","Error","NativeUnifiedPlayerView","UnifiedPlayerModule","UnifiedPlayerEventTypes","LOAD_START","READY","ERROR","PROGRESS","COMPLETE","STALLED","RESUMED","PLAYING","PAUSED","UnifiedPlayerEvents","UnifiedPlayerView","props","ref","play","viewTag","console","log","then","result","catch","error","message","String","Promise","reject","pause","seekTo","time","getCurrentTime","getDuration"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["forwardRef","requireNativeComponent","UIManager","NativeModules","Platform","jsx","_jsx","LINKING_ERROR","select","ios","default","getViewManagerConfig","UnifiedPlayer","Error","NativeUnifiedPlayerView","UnifiedPlayerModule","UnifiedPlayerEventTypes","LOAD_START","READY","ERROR","PROGRESS","COMPLETE","STALLED","RESUMED","PLAYING","PAUSED","UnifiedPlayerEvents","UnifiedPlayerView","props","ref","play","viewTag","console","log","then","result","catch","error","message","String","Promise","reject","pause","seekTo","time","getCurrentTime","getDuration","capture","base64String"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -69,5 +69,11 @@ export declare const UnifiedPlayer: {
|
|
|
69
69
|
* @returns Promise resolving to duration in seconds
|
|
70
70
|
*/
|
|
71
71
|
getDuration: (viewTag: number) => Promise<number>;
|
|
72
|
+
/**
|
|
73
|
+
* Capture the current video frame as a base64 encoded image
|
|
74
|
+
* @param viewTag - The tag of the player view
|
|
75
|
+
* @returns Promise resolving to the base64 encoded image string
|
|
76
|
+
*/
|
|
77
|
+
capture: (viewTag: number) => Promise<string>;
|
|
72
78
|
};
|
|
73
79
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAkBtB,MAAM,MAAM,kBAAkB,GAAG;IAE/B,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAGzB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAG3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAG/B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAGhC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAGvE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAG/B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAG/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAYF,eAAO,MAAM,uBAAuB;;;;;;;;;;CAUnC,CAAC;AAGF,eAAO,MAAM,mBAAmB,KAA8B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,iBAAiB,8LAK5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;;;OAIG;oBACa,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;IAwBzC;;;;OAIG;qBACc,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;IAwB1C;;;;;OAKG;sBACe,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;IA6BzD;;;;OAIG;8BACuB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;IAalD;;;;OAIG;2BACoB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAkBtB,MAAM,MAAM,kBAAkB,GAAG;IAE/B,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAGzB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAG3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAG/B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAGhC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAGvE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAG/B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAG/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAYF,eAAO,MAAM,uBAAuB;;;;;;;;;;CAUnC,CAAC;AAGF,eAAO,MAAM,mBAAmB,KAA8B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,iBAAiB,8LAK5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;;;OAIG;oBACa,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;IAwBzC;;;;OAIG;qBACc,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;IAwB1C;;;;;OAKG;sBACe,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;IA6BzD;;;;OAIG;8BACuB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;IAalD;;;;OAIG;2BACoB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;IAa/C;;;;OAIG;uBACgB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;CAuB5C,CAAC"}
|
package/package.json
CHANGED
package/src/index.tsx
CHANGED
|
@@ -234,4 +234,33 @@ export const UnifiedPlayer = {
|
|
|
234
234
|
return Promise.reject(error);
|
|
235
235
|
}
|
|
236
236
|
},
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Capture the current video frame as a base64 encoded image
|
|
240
|
+
* @param viewTag - The tag of the player view
|
|
241
|
+
* @returns Promise resolving to the base64 encoded image string
|
|
242
|
+
*/
|
|
243
|
+
capture: (viewTag: number): Promise<string> => {
|
|
244
|
+
try {
|
|
245
|
+
console.log('UnifiedPlayer.capture called with viewTag:', viewTag);
|
|
246
|
+
return UnifiedPlayerModule.capture(viewTag)
|
|
247
|
+
.then((base64String: string) => {
|
|
248
|
+
console.log('Native capture method called successfully');
|
|
249
|
+
return base64String;
|
|
250
|
+
})
|
|
251
|
+
.catch((error: any) => {
|
|
252
|
+
console.log(
|
|
253
|
+
'Error calling capture:',
|
|
254
|
+
error instanceof Error ? error.message : String(error)
|
|
255
|
+
);
|
|
256
|
+
throw error;
|
|
257
|
+
});
|
|
258
|
+
} catch (error) {
|
|
259
|
+
console.log(
|
|
260
|
+
'Error calling capture:',
|
|
261
|
+
error instanceof Error ? error.message : String(error)
|
|
262
|
+
);
|
|
263
|
+
return Promise.reject(error);
|
|
264
|
+
}
|
|
265
|
+
},
|
|
237
266
|
};
|