@tencentcloud/sdk-mcp 1.2.8 → 1.2.9

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 (30) hide show
  1. package/package.json +1 -1
  2. package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +334 -0
  3. package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +434 -0
  4. package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +685 -0
  5. package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +712 -0
  6. package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +284 -0
  7. package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +849 -0
  8. package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +1046 -0
  9. package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +460 -0
  10. package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +558 -0
  11. package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +879 -0
  12. package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +668 -0
  13. package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +456 -0
  14. package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +332 -0
  15. package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +748 -0
  16. package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +328 -0
  17. package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +505 -0
  18. package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +507 -0
  19. package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +676 -0
  20. package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +284 -0
  21. package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +820 -0
  22. package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +1065 -0
  23. package/tools/definitions/get_native_live_api_def.js +22 -0
  24. package/tools/definitions/get_native_live_api_def.js.map +1 -0
  25. package/tools/index.js +4 -0
  26. package/tools/index.js.map +1 -1
  27. package/tools/native_live/get-native-live-api.js +31 -0
  28. package/tools/native_live/get-native-live-api.js.map +1 -0
  29. package/utils/report-cls-client.js +1 -1
  30. package/utils/report-es-client.js +1 -1
@@ -0,0 +1,507 @@
1
+ # 腾讯云直播SDK V2TXLivePlayerObserver 直播播放器回调接口
2
+
3
+ ## 概述
4
+
5
+ `V2TXLivePlayerObserver.h` 是腾讯云直播SDK iOS/macOS平台的播放器回调接口定义文件,包含了播放器状态、音视频事件、统计数据、错误处理等所有回调方法的定义。
6
+
7
+ **平台支持**: iOS, macOS
8
+ **功能范围**: 播放器状态监控、音视频事件、统计数据、错误处理、本地录制等
9
+
10
+ ## 📋 目录结构
11
+
12
+ ### 1. [错误和警告回调](#错误和警告回调)
13
+ ### 2. [连接状态回调](#连接状态回调)
14
+ ### 3. [音视频播放事件](#音视频播放事件)
15
+ ### 4. [统计数据回调](#统计数据回调)
16
+ ### 5. [高级功能回调](#高级功能回调)
17
+ ### 6. [本地录制回调](#本地录制回调)
18
+ ### 7. [画中画状态回调](#画中画状态回调)
19
+ ### 8. [使用示例](#使用示例)
20
+
21
+ ## 1. 错误和警告回调
22
+
23
+ ### 🔴 onError - 播放器错误通知
24
+
25
+ ```objc
26
+ - (void)onError:(id<V2TXLivePlayer>)player
27
+ code:(V2TXLiveCode)code
28
+ message:(NSString *)msg
29
+ extraInfo:(NSDictionary *)extraInfo;
30
+ ```
31
+
32
+ **功能**: 播放器出现错误时回调
33
+
34
+ **参数说明**:
35
+ - `player`: 触发回调的播放器对象
36
+ - `code`: 错误码,参考 `V2TXLiveCode` 枚举
37
+ - `msg`: 详细的错误信息描述
38
+ - `extraInfo`: 扩展信息字典,包含额外错误上下文
39
+
40
+ **使用场景**:
41
+ - 网络连接失败
42
+ - 流地址无效
43
+ - 解码器错误
44
+ - 播放器内部错误
45
+
46
+ ### ⚠️ onWarning - 播放器警告通知
47
+
48
+ ```objc
49
+ - (void)onWarning:(id<V2TXLivePlayer>)player
50
+ code:(V2TXLiveCode)code
51
+ message:(NSString *)msg
52
+ extraInfo:(NSDictionary *)extraInfo;
53
+ ```
54
+
55
+ **功能**: 播放器出现警告时回调
56
+
57
+ **参数说明**:
58
+ - `player`: 触发回调的播放器对象
59
+ - `code`: 警告码,参考 `V2TXLiveCode` 枚举
60
+ - `msg`: 警告信息描述
61
+ - `extraInfo`: 扩展信息字典
62
+
63
+ **使用场景**:
64
+ - 网络状况不佳
65
+ - 解码性能问题
66
+ - 播放缓冲警告
67
+
68
+ ## 2. 连接状态回调
69
+
70
+ ### 🔗 onConnected - 连接成功回调
71
+
72
+ ```objc
73
+ - (void)onConnected:(id<V2TXLivePlayer>)player
74
+ extraInfo:(NSDictionary *)extraInfo;
75
+ ```
76
+
77
+ **功能**: 播放器成功连接到服务器时回调
78
+
79
+ **参数说明**:
80
+ - `player`: 触发回调的播放器对象
81
+ - `extraInfo`: 连接相关的扩展信息
82
+
83
+ **触发时机**:
84
+ - 调用 `startPlay` 后成功建立连接
85
+ - 网络重连成功后
86
+
87
+ ### 📺 onVideoResolutionChanged - 分辨率变化回调
88
+
89
+ ```objc
90
+ - (void)onVideoResolutionChanged:(id<V2TXLivePlayer>)player
91
+ width:(NSInteger)width
92
+ height:(NSInteger)height;
93
+ ```
94
+
95
+ **功能**: 视频分辨率发生变化时回调
96
+
97
+ **参数说明**:
98
+ - `player`: 触发回调的播放器对象
99
+ - `width`: 新的视频宽度
100
+ - `height`: 新的视频高度
101
+
102
+ **使用场景**:
103
+ - 流切换时分辨率变化
104
+ - 云端混流输出分辨率变化
105
+ - 自适应码率调整分辨率
106
+
107
+ ## 3. 音视频播放事件
108
+
109
+ ### 🎬 onVideoPlaying - 视频播放事件
110
+
111
+ ```objc
112
+ - (void)onVideoPlaying:(id<V2TXLivePlayer>)player
113
+ firstPlay:(BOOL)firstPlay
114
+ extraInfo:(NSDictionary *)extraInfo;
115
+ ```
116
+
117
+ **功能**: 视频开始播放时回调
118
+
119
+ **参数说明**:
120
+ - `player`: 触发回调的播放器对象
121
+ - `firstPlay`: 是否为首次播放标志
122
+ - `extraInfo`: 播放相关的扩展信息
123
+
124
+ **触发时机**:
125
+ - 首次成功播放视频
126
+ - 恢复播放后
127
+
128
+ ### 🔊 onAudioPlaying - 音频播放事件
129
+
130
+ ```objc
131
+ - (void)onAudioPlaying:(id<V2TXLivePlayer>)player
132
+ firstPlay:(BOOL)firstPlay
133
+ extraInfo:(NSDictionary *)extraInfo;
134
+ ```
135
+
136
+ **功能**: 音频开始播放时回调
137
+
138
+ **参数说明**:
139
+ - `player`: 触发回调的播放器对象
140
+ - `firstPlay`: 是否为首次播放标志
141
+ - `extraInfo`: 播放相关的扩展信息
142
+
143
+ ### ⏳ onVideoLoading - 视频加载事件
144
+
145
+ ```objc
146
+ - (void)onVideoLoading:(id<V2TXLivePlayer>)player
147
+ extraInfo:(NSDictionary *)extraInfo;
148
+ ```
149
+
150
+ **功能**: 视频加载缓冲时回调
151
+
152
+ **参数说明**:
153
+ - `player`: 触发回调的播放器对象
154
+ - `extraInfo`: 加载相关的扩展信息
155
+
156
+ **触发时机**:
157
+ - 网络缓冲开始
158
+ - 播放器准备数据
159
+
160
+ ### ⏳ onAudioLoading - 音频加载事件
161
+
162
+ ```objc
163
+ - (void)onAudioLoading:(id<V2TXLivePlayer>)player
164
+ extraInfo:(NSDictionary *)extraInfo;
165
+ ```
166
+
167
+ **功能**: 音频加载缓冲时回调
168
+
169
+ ## 4. 统计数据回调
170
+
171
+ ### 📊 onStatisticsUpdate - 统计数据回调
172
+
173
+ ```objc
174
+ - (void)onStatisticsUpdate:(id<V2TXLivePlayer>)player
175
+ statistics:(V2TXLivePlayerStatistics *)statistics;
176
+ ```
177
+
178
+ **功能**: 播放器统计数据定期回调
179
+
180
+ **参数说明**:
181
+ - `player`: 触发回调的播放器对象
182
+ - `statistics`: 播放器统计数据对象
183
+
184
+ **统计信息包含**:
185
+ - 视频宽度、高度、帧率、码率
186
+ - 音频码率、丢包率
187
+ - 卡顿时长、卡顿率
188
+ - 网络往返延时、下载速度
189
+
190
+ **回调频率**: 默认2秒一次
191
+
192
+ ### 🔊 onPlayoutVolumeUpdate - 音量大小回调
193
+
194
+ ```objc
195
+ - (void)onPlayoutVolumeUpdate:(id<V2TXLivePlayer>)player
196
+ volume:(NSInteger)volume;
197
+ ```
198
+
199
+ **功能**: 播放音量大小实时回调
200
+
201
+ **参数说明**:
202
+ - `player`: 触发回调的播放器对象
203
+ - `volume`: 当前播放音量大小(0-100)
204
+
205
+ **启用条件**: 需要调用 `enableVolumeEvaluation` 开启音量评估
206
+
207
+ **回调频率**: 100ms一次
208
+
209
+ ## 5. 高级功能回调
210
+
211
+ ### 📸 onSnapshotComplete - 截图完成回调
212
+
213
+ ```objc
214
+ - (void)onSnapshotComplete:(id<V2TXLivePlayer>)player
215
+ image:(nullable TXImage *)image;
216
+ ```
217
+
218
+ **功能**: 截图操作完成时回调
219
+
220
+ **参数说明**:
221
+ - `player`: 触发回调的播放器对象
222
+ - `image`: 截取的视频画面图像,失败时为nil
223
+
224
+ **触发时机**: 调用 `snapshot` 方法后
225
+
226
+ ### 🎨 onRenderVideoFrame - 自定义视频渲染回调
227
+
228
+ ```objc
229
+ - (void)onRenderVideoFrame:(id<V2TXLivePlayer>)player
230
+ frame:(V2TXLiveVideoFrame *)videoFrame;
231
+ ```
232
+
233
+ **功能**: 自定义视频渲染回调,获取解码后的视频帧
234
+
235
+ **参数说明**:
236
+ - `player`: 触发回调的播放器对象
237
+ - `videoFrame`: 视频帧数据对象
238
+
239
+ **启用条件**: 需要调用 `enableObserveVideoFrame` 开启回调
240
+
241
+ **使用场景**:
242
+ - 自定义视频处理
243
+ - 视频滤镜应用
244
+ - 视频分析处理
245
+
246
+ ### 🎵 onPlayoutAudioFrame - 音频数据回调
247
+
248
+ ```objc
249
+ - (void)onPlayoutAudioFrame:(id<V2TXLivePlayer>)player
250
+ frame:(V2TXLiveAudioFrame *)audioFrame;
251
+ ```
252
+
253
+ **功能**: 音频数据回调,获取播放的音频帧
254
+
255
+ **参数说明**:
256
+ - `player`: 触发回调的播放器对象
257
+ - `audioFrame`: 音频帧数据对象
258
+
259
+ **启用条件**: 需要调用 `enableObserveAudioFrame` 开启回调
260
+
261
+ **使用场景**:
262
+ - 音频实时处理
263
+ - 音频分析
264
+ - 音频特效应用
265
+
266
+ ### 📨 onReceiveSeiMessage - SEI消息接收回调
267
+
268
+ ```objc
269
+ - (void)onReceiveSeiMessage:(id<V2TXLivePlayer>)player
270
+ payloadType:(int)payloadType
271
+ data:(NSData *)data;
272
+ ```
273
+
274
+ **功能**: 接收SEI(补充增强信息)消息回调
275
+
276
+ **参数说明**:
277
+ - `player`: 触发回调的播放器对象
278
+ - `payloadType`: SEI消息的payload类型
279
+ - `data`: SEI消息数据
280
+
281
+ **启用条件**: 需要调用 `enableReceiveSeiMessage` 开启接收
282
+
283
+ **使用场景**:
284
+ - 时间同步信息
285
+ - 场景描述信息
286
+ - 自定义业务数据
287
+
288
+ ### 🔄 onStreamSwitched - 流切换回调
289
+
290
+ ```objc
291
+ - (void)onStreamSwitched:(id<V2TXLivePlayer>)player
292
+ url:(NSString *)url
293
+ code:(NSInteger)code;
294
+ ```
295
+
296
+ **功能**: 分辨率无缝切换结果回调
297
+
298
+ **参数说明**:
299
+ - `player`: 触发回调的播放器对象
300
+ - `url`: 切换后的播放地址
301
+ - `code`: 切换状态码
302
+ - `0`: 成功
303
+ - `-1`: 切换超时
304
+ - `-2`: 服务端错误
305
+ - `-3`: 客户端错误
306
+
307
+ **触发时机**: 调用 `switchStream` 方法后
308
+
309
+ ## 6. 本地录制回调
310
+
311
+ ### 🎬 onLocalRecordBegin - 录制开始回调
312
+
313
+ ```objc
314
+ - (void)onLocalRecordBegin:(id<V2TXLivePlayer>)player
315
+ errCode:(NSInteger)errCode
316
+ storagePath:(NSString *)storagePath;
317
+ ```
318
+
319
+ **功能**: 本地录制任务开始事件回调
320
+
321
+ **参数说明**:
322
+ - `player`: 触发回调的播放器对象
323
+ - `errCode`: 录制开始状态码
324
+ - `0`: 启动成功
325
+ - `-1`: 内部错误
326
+ - `-2`: 文件格式不支持
327
+ - `-6`: 录制已启动
328
+ - `-7`: 文件已存在
329
+ - `-8`: 目录无写入权限
330
+ - `storagePath`: 录制文件存储路径
331
+
332
+ **触发时机**: 调用 `startLocalRecording` 后
333
+
334
+ ### ⏱️ onLocalRecording - 录制进行中回调
335
+
336
+ ```objc
337
+ - (void)onLocalRecording:(id<V2TXLivePlayer>)player
338
+ durationMs:(NSInteger)durationMs
339
+ storagePath:(NSString *)storagePath;
340
+ ```
341
+
342
+ **功能**: 录制任务进行中的进展回调
343
+
344
+ **参数说明**:
345
+ - `player`: 触发回调的播放器对象
346
+ - `durationMs`: 当前录制时长(毫秒)
347
+ - `storagePath`: 录制文件存储路径
348
+
349
+ **启用条件**: 需要在 `startLocalRecording` 时设置回调间隔
350
+ **默认状态**: 不回调
351
+
352
+ ### ✅ onLocalRecordComplete - 录制完成回调
353
+
354
+ ```objc
355
+ - (void)onLocalRecordComplete:(id<V2TXLivePlayer>)player
356
+ errCode:(NSInteger)errCode
357
+ storagePath:(NSString *)storagePath;
358
+ ```
359
+
360
+ **功能**: 录制任务结束事件回调
361
+
362
+ **参数说明**:
363
+ - `player`: 触发回调的播放器对象
364
+ - `errCode`: 录制结束状态码
365
+ - `0`: 结束成功
366
+ - `-1`: 录制失败
367
+ - `-2`: 分辨率/横竖屏切换导致结束
368
+ - `-3`: 录制时间太短或无数据
369
+ - `storagePath`: 录制文件存储路径
370
+
371
+ **触发时机**: 调用 `stopLocalRecording` 后
372
+
373
+ ## 7. 画中画状态回调
374
+
375
+ ### 🖼️ onPictureInPictureStateUpdate - 画中画状态变更回调
376
+
377
+ ```objc
378
+ - (void)onPictureInPictureStateUpdate:(id<V2TXLivePlayer>)player
379
+ state:(V2TXLivePictureInPictureState)state
380
+ message:(NSString *)msg
381
+ extraInfo:(NSDictionary *)extraInfo;
382
+ ```
383
+
384
+ **功能**: 画中画状态变化时回调
385
+
386
+ **参数说明**:
387
+ - `player`: 触发回调的播放器对象
388
+ - `state`: 画中画状态,参考 `V2TXLivePictureInPictureState`
389
+ - `msg`: 状态描述信息
390
+ - `extraInfo`: 扩展信息
391
+
392
+ **支持状态**:
393
+ - `V2TXLivePictureInPictureStateWillStart`: 将要开始
394
+ - `V2TXLivePictureInPictureStateDidStart`: 已经开始
395
+ - `V2TXLivePictureInPictureStateWillStop`: 将要停止
396
+ - `V2TXLivePictureInPictureStateDidStop`: 已经停止
397
+ - `V2TXLivePictureInPictureStateRestoreUI`: 恢复用户界面
398
+
399
+ **启用条件**: 需要调用 `enablePictureInPicture` 开启画中画
400
+
401
+ ## 8. 使用示例
402
+
403
+ ### 🔧 基础播放器实现
404
+
405
+ ```objc
406
+ @interface MyPlayerObserver : NSObject <V2TXLivePlayerObserver>
407
+ @end
408
+
409
+ @implementation MyPlayerObserver
410
+
411
+ #pragma mark - 错误处理
412
+ - (void)onError:(id<V2TXLivePlayer>)player code:(V2TXLiveCode)code message:(NSString *)msg extraInfo:(NSDictionary *)extraInfo {
413
+ NSLog(@"播放器错误: %@, 错误码: %ld", msg, (long)code);
414
+ // 处理播放错误
415
+ }
416
+
417
+ #pragma mark - 连接状态
418
+ - (void)onConnected:(id<V2TXLivePlayer>)player extraInfo:(NSDictionary *)extraInfo {
419
+ NSLog(@"播放器连接成功");
420
+ }
421
+
422
+ #pragma mark - 播放事件
423
+ - (void)onVideoPlaying:(id<V2TXLivePlayer>)player firstPlay:(BOOL)firstPlay extraInfo:(NSDictionary *)extraInfo {
424
+ if (firstPlay) {
425
+ NSLog(@"视频首次播放成功");
426
+ }
427
+ }
428
+
429
+ #pragma mark - 统计数据
430
+ - (void)onStatisticsUpdate:(id<V2TXLivePlayer>)player statistics:(V2TXLivePlayerStatistics *)statistics {
431
+ NSLog(@"视频帧率: %ld, 码率: %ld Kbps", statistics.fps, statistics.videoBitrate);
432
+ }
433
+
434
+ @end
435
+ ```
436
+
437
+ ### 📊 音量监控实现
438
+
439
+ ```objc
440
+ // 开启音量评估
441
+ [player enableVolumeEvaluation:100]; // 100ms回调一次
442
+
443
+ // 音量回调实现
444
+ - (void)onPlayoutVolumeUpdate:(id<V2TXLivePlayer>)player volume:(NSInteger)volume {
445
+ // 更新UI音量指示器
446
+ [self updateVolumeIndicator:volume];
447
+ }
448
+ ```
449
+
450
+ ### 🎬 本地录制实现
451
+
452
+ ```objc
453
+ // 开始录制
454
+ V2TXLiveLocalRecordingParams *params = [[V2TXLiveLocalRecordingParams alloc] init];
455
+ params.filePath = @"/path/to/record.mp4";
456
+ params.recordMode = V2TXLiveRecordModeBoth;
457
+ params.interval = 1000; // 1秒回调一次录制进度
458
+
459
+ [player startLocalRecording:params];
460
+
461
+ // 录制回调实现
462
+ - (void)onLocalRecording:(id<V2TXLivePlayer>)player durationMs:(NSInteger)durationMs storagePath:(NSString *)storagePath {
463
+ NSLog(@"录制进度: %.1f秒", durationMs / 1000.0);
464
+ }
465
+
466
+ - (void)onLocalRecordComplete:(id<V2TXLivePlayer>)player errCode:(NSInteger)errCode storagePath:(NSString *)storagePath {
467
+ if (errCode == 0) {
468
+ NSLog(@"录制完成,文件路径: %@", storagePath);
469
+ } else {
470
+ NSLog(@"录制失败,错误码: %ld", (long)errCode);
471
+ }
472
+ }
473
+ ```
474
+
475
+ ### 🎨 自定义视频处理
476
+
477
+ ```objc
478
+ // 开启视频帧回调
479
+ [player enableObserveVideoFrame:YES pixelFormat:V2TXLivePixelFormatNV12];
480
+
481
+ // 视频帧处理回调
482
+ - (void)onRenderVideoFrame:(id<V2TXLivePlayer>)player frame:(V2TXLiveVideoFrame *)videoFrame {
483
+ // 自定义视频处理逻辑
484
+ [self processVideoFrame:videoFrame];
485
+ }
486
+ ```
487
+
488
+ ## 📋 最佳实践
489
+
490
+ ### 🔧 回调处理建议
491
+
492
+ 1. **错误处理**: 在 `onError` 中实现完善的错误恢复机制
493
+ 2. **性能监控**: 利用 `onStatisticsUpdate` 监控播放质量
494
+ 3. **用户体验**: 通过播放事件回调优化用户界面反馈
495
+ 4. **资源管理**: 及时释放回调中使用的资源
496
+
497
+ ### ⚡ 性能优化
498
+
499
+ 1. **回调频率**: 合理设置统计数据和音量回调频率
500
+ 2. **线程安全**: 确保回调方法中的UI操作在主线程执行
501
+ 3. **内存管理**: 避免在回调中创建大量临时对象
502
+
503
+ ### 🔒 异常处理
504
+
505
+ 1. **网络异常**: 实现自动重连和降级策略
506
+ 2. **解码异常**: 准备备用解码方案
507
+ 3. **录制异常**: 处理文件权限和存储空间问题