@byteplus/react-native-live-pull 1.3.0-rc.9 → 1.3.2-rc.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.
Files changed (42) hide show
  1. package/android/build.gradle +1 -1
  2. package/ios/pictureInpicture/PictureInPictureManager.m +84 -7
  3. package/package.json +5 -5
  4. package/react-native-velive-pull.podspec +10 -3
  5. package/lib/commonjs/index.js +0 -14546
  6. package/lib/module/index.js +0 -14535
  7. package/lib/typescript/codegen/android/api.d.ts +0 -318
  8. package/lib/typescript/codegen/android/callback.d.ts +0 -206
  9. package/lib/typescript/codegen/android/errorcode.d.ts +0 -174
  10. package/lib/typescript/codegen/android/external.d.ts +0 -1
  11. package/lib/typescript/codegen/android/index.d.ts +0 -6
  12. package/lib/typescript/codegen/android/keytype.d.ts +0 -749
  13. package/lib/typescript/codegen/android/types.d.ts +0 -31
  14. package/lib/typescript/codegen/ios/api.d.ts +0 -295
  15. package/lib/typescript/codegen/ios/callback.d.ts +0 -176
  16. package/lib/typescript/codegen/ios/errorcode.d.ts +0 -160
  17. package/lib/typescript/codegen/ios/external.d.ts +0 -1
  18. package/lib/typescript/codegen/ios/index.d.ts +0 -6
  19. package/lib/typescript/codegen/ios/keytype.d.ts +0 -695
  20. package/lib/typescript/codegen/ios/types.d.ts +0 -46
  21. package/lib/typescript/codegen/pack/api.d.ts +0 -367
  22. package/lib/typescript/codegen/pack/callback.d.ts +0 -255
  23. package/lib/typescript/codegen/pack/errorcode.d.ts +0 -187
  24. package/lib/typescript/codegen/pack/external.d.ts +0 -1
  25. package/lib/typescript/codegen/pack/index.d.ts +0 -6
  26. package/lib/typescript/codegen/pack/keytype.d.ts +0 -909
  27. package/lib/typescript/codegen/pack/types.d.ts +0 -68
  28. package/lib/typescript/component.d.ts +0 -15
  29. package/lib/typescript/core/api.d.ts +0 -114
  30. package/lib/typescript/core/appState.d.ts +0 -3
  31. package/lib/typescript/core/callback.d.ts +0 -53
  32. package/lib/typescript/core/env.d.ts +0 -38
  33. package/lib/typescript/core/errorcode.d.ts +0 -1
  34. package/lib/typescript/core/index.d.ts +0 -6
  35. package/lib/typescript/core/keytype.d.ts +0 -33
  36. package/lib/typescript/core/player.d.ts +0 -16
  37. package/lib/typescript/index.d.ts +0 -2
  38. package/lib/typescript/platforms/android/extends.d.ts +0 -39
  39. package/lib/typescript/platforms/android/pictureInpicture.d.ts +0 -26
  40. package/lib/typescript/platforms/ios/extends.d.ts +0 -43
  41. package/lib/typescript/platforms/ios/pictureInpicture.d.ts +0 -32
  42. package/lib/typescript/runtime/index.d.ts +0 -1
@@ -42,7 +42,7 @@ if (volcApiEnvVersion) {
42
42
  } else if (rootProject.hasProperty('VOLC_API_ENGINE_VERSION_FOR_LIVE_PULL')) {
43
43
  volc_api_engine_version = rootProject.property('VOLC_API_ENGINE_VERSION_FOR_LIVE_PULL')
44
44
  } else {
45
- volc_api_engine_version = "1.6.4" // Default version
45
+ volc_api_engine_version = "1.6.6" // Default version
46
46
  }
47
47
 
48
48
  println "[LIVE PULL GRADLE INFO]: Using ttsdk_ttlivepull_rtc version: $ttsdk_ttlivepull_rtc_version"
@@ -24,6 +24,8 @@
24
24
  @property(nonatomic, strong)
25
25
  NSMutableDictionary<NSString *, void (^)(AVPictureInPictureController *)>
26
26
  *pipObservers;
27
+ // Add timer to refresh playback state
28
+ @property(nonatomic, strong) NSTimer *playbackStateTimer;
27
29
  @end
28
30
 
29
31
  NSString *const kObserverKey = @"pip-observer";
@@ -56,6 +58,7 @@ NSString *const kObserverKey = @"pip-observer";
56
58
 
57
59
  - (void)dealloc {
58
60
  [self disableVideoFrameObserver];
61
+ [self stopPlaybackStateTimer];
59
62
 
60
63
  if (self.pipController) {
61
64
  self.pipController.delegate = nil;
@@ -65,6 +68,45 @@ NSString *const kObserverKey = @"pip-observer";
65
68
  [[VeLivePlayerMultiObserver sharedInstance] removeObserver:kObserverKey];
66
69
  }
67
70
 
71
+ // Start playback state refresh timer
72
+ - (void)startPlaybackStateTimer {
73
+ [self stopPlaybackStateTimer];
74
+
75
+ if (self.pipController && [self.pipController pictureInPictureController]) {
76
+ // Use main thread timer to ensure UI updates on main thread
77
+ self.playbackStateTimer = [NSTimer
78
+ scheduledTimerWithTimeInterval:1.0
79
+ target:self
80
+ selector:@selector(invalidatePlaybackState)
81
+ userInfo:nil
82
+ repeats:YES];
83
+ // Add timer to main run loop
84
+ [[NSRunLoop mainRunLoop] addTimer:self.playbackStateTimer
85
+ forMode:NSRunLoopCommonModes];
86
+ NSLog(@"PIP: Started playback state timer");
87
+ }
88
+ }
89
+
90
+ // Stop playback state refresh timer
91
+ - (void)stopPlaybackStateTimer {
92
+ if (self.playbackStateTimer) {
93
+ [self.playbackStateTimer invalidate];
94
+ self.playbackStateTimer = nil;
95
+ NSLog(@"PIP: Stopped playback state timer");
96
+ }
97
+ }
98
+
99
+ // Timer callback: refresh playback state
100
+ - (void)invalidatePlaybackState {
101
+ if (self.pipController && [self.pipController pictureInPictureController]) {
102
+ AVPictureInPictureController *controller =
103
+ [self.pipController pictureInPictureController];
104
+ if (controller.isPictureInPictureActive) {
105
+ [controller invalidatePlaybackState];
106
+ }
107
+ }
108
+ }
109
+
68
110
  - (void)setupPlayer:(TVLManager *)player {
69
111
  [self ensurePipControllerReady:player completion:nil];
70
112
  }
@@ -159,9 +201,10 @@ NSString *const kObserverKey = @"pip-observer";
159
201
 
160
202
  - (void)updatePipController:(nullable void (^)(void))completion {
161
203
  VeLivePlayerVideoStreamInfo *info = [self.player getVideoStreamInfo];
162
-
204
+
163
205
  if (!CGSizeEqualToSize(CGSizeZero, CGSizeMake(info.width, info.height))) {
164
- [self.pipController setVideoSize:CGSizeMake(info.width, info.height) completion:nil];
206
+ [self.pipController setVideoSize:CGSizeMake(info.width, info.height)
207
+ completion:nil];
165
208
  }
166
209
 
167
210
  [self.pipController setContentView:self.contentView
@@ -169,7 +212,7 @@ NSString *const kObserverKey = @"pip-observer";
169
212
  if (completion) {
170
213
  completion();
171
214
  }
172
- }];
215
+ }];
173
216
  }
174
217
 
175
218
  // Notify all observers
@@ -305,11 +348,32 @@ NSString *const kObserverKey = @"pip-observer";
305
348
  _listener = listener;
306
349
  }
307
350
 
351
+ #pragma mark - AVPictureInPictureSampleBufferPlaybackDelegate
352
+ - (BOOL)pictureInPictureControllerIsPlaybackPaused:
353
+ (nonnull AVPictureInPictureController *)pictureInPictureController {
354
+ if (self.player) {
355
+ return ![[self.player valueForKey:@"isPlaying"] boolValue];
356
+ }
357
+ NSLog(@"PIP: No player, returning YES (paused)");
358
+ return YES;
359
+ }
360
+
361
+ - (void)pictureInPictureController:
362
+ (AVPictureInPictureController *)pictureInPictureController
363
+ setPlaying:(BOOL)playing {
364
+ if (playing) {
365
+ [self.player play];
366
+ } else {
367
+ [self.player pause];
368
+ }
369
+ }
370
+
308
371
  // MARK: - VeLiveVideoFrameListener
309
372
  - (void)onRenderVideoFrame:(TVLManager *_Nonnull)player
310
373
  videoFrame:(VeLivePlayerVideoFrame *_Nonnull)videoFrame {
311
374
  @autoreleasepool {
312
- // 确保 pipController 存在且有效,避免在销毁过程中继续处理 buffer
375
+ // Ensure pipController exists and is valid, avoid processing buffer during
376
+ // destruction
313
377
  if (!self.pipController || !self.enableVideoObserver) {
314
378
  return;
315
379
  }
@@ -335,6 +399,16 @@ NSString *const kObserverKey = @"pip-observer";
335
399
  NSLog(@"VeLiveQuickStartDemo: Error %ld, %@", error.code, error.errorMsg);
336
400
  }
337
401
 
402
+ // MARK: - VeLivePlayerObserver
403
+ - (void)onPlayerStatusUpdate:(TVLManager *)player status:(NSInteger)status {
404
+ // Refresh picture-in-picture playback state when player status changes
405
+ if (self.pipController && [self.pipController pictureInPictureController]) {
406
+ [[self.pipController pictureInPictureController] invalidatePlaybackState];
407
+ }
408
+ NSLog(@"PIP: Player status updated to %ld, invalidated playback state",
409
+ (long)status);
410
+ }
411
+
338
412
  /// MARK: - VePictureInPictureDelegate
339
413
  - (void)pictureInPictureController:
340
414
  (VePictureInPictureController *)pictureInPictureController
@@ -357,6 +431,8 @@ NSString *const kObserverKey = @"pip-observer";
357
431
  if (self.listener) {
358
432
  [self.listener onStartPictureInPicture];
359
433
  }
434
+ // Start timer to refresh playback state
435
+ [self startPlaybackStateTimer];
360
436
  break;
361
437
  case VePictureInPictureStatusWillChange: {
362
438
 
@@ -374,9 +450,8 @@ NSString *const kObserverKey = @"pip-observer";
374
450
  if (self.listener) {
375
451
  [self.listener onStopPictureInPicture];
376
452
  }
377
- if (self.player) {
378
- [self.player pause];
379
- }
453
+ // Stop timer
454
+ [self stopPlaybackStateTimer];
380
455
  if (@available(iOS 14.2, *)) {
381
456
  if (!self.canStartPictureInPictureAutomaticallyFromInline) {
382
457
  [self destroyPictureInPicture];
@@ -388,6 +463,8 @@ NSString *const kObserverKey = @"pip-observer";
388
463
  [self.listener onError:pictureInPictureController.error.code
389
464
  extraData:pictureInPictureController.error.userInfo];
390
465
  }
466
+ // Stop timer
467
+ [self stopPlaybackStateTimer];
391
468
  } break;
392
469
  }
393
470
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@byteplus/react-native-live-pull",
3
- "version": "1.3.0-rc.9",
3
+ "version": "1.3.2-rc.0",
4
4
  "peerDependencies": {
5
5
  "react": "*",
6
6
  "react-native": "*"
@@ -33,12 +33,12 @@
33
33
  },
34
34
  "nativeVersion": {
35
35
  "volc": {
36
- "android": "1.46.3.6",
37
- "ios": "1.46.3.9-premium"
36
+ "android": "1.47.3.6",
37
+ "ios": "1.46.3.10-premium"
38
38
  },
39
39
  "byteplus": {
40
- "android": "1.46.300.2",
41
- "ios": "1.46.300.6-alpha1-premium"
40
+ "android": "1.47.300.2",
41
+ "ios": "1.46.300.7-premium"
42
42
  }
43
43
  }
44
44
  }
@@ -52,10 +52,17 @@ Pod::Spec.new do |s|
52
52
  # Version configuration through environment variables
53
53
  volc_api_engine_version = ENV['VOLC_API_ENGINE_VERSION_FOR_LIVE_PULL'] || '1.6.5'
54
54
  ttsdk_framework_version = ENV['TTSDK_FRAMEWORK_VERSION_FOR_LIVE_PULL'] || (is_bp ? package['nativeVersion']['byteplus']['ios'] : package['nativeVersion']['volc']['ios'])
55
+
56
+ use_rtc = ENV['USE_RTC_FOR_LIVE_PULL'] || 'true'
55
57
 
56
58
  s.dependency 'VolcApiEngine', volc_api_engine_version
57
59
  s.dependency 'TTSDKFramework/Core', ttsdk_framework_version
58
- s.dependency 'TTSDKFramework/LivePull-RTS', ttsdk_framework_version
60
+
61
+ if use_rtc == 'true'
62
+ s.dependency 'TTSDKFramework/LivePull-RTS', ttsdk_framework_version
63
+ else
64
+ s.dependency 'TTSDKFramework/LivePull', ttsdk_framework_version
65
+ end
59
66
 
60
- puts("[LIVE PULL POD INSTALL INFO]: volc_api_engine_version: #{volc_api_engine_version} / ttsdk_framework_version: #{ttsdk_framework_version}")
61
- end
67
+ puts("[LIVE PULL POD INSTALL INFO]: volc_api_engine_version: #{volc_api_engine_version} / ttsdk_framework_version: #{ttsdk_framework_version} / use_rtc: #{use_rtc}")
68
+ end