room.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'dart:collection';
  2. import 'package:fis_common/event/event_type.dart';
  3. import 'package:fis_lib_media_rt/interface/player.dart';
  4. import 'package:fis_lib_media_rt/interface/publisher.dart';
  5. import 'member.dart';
  6. /// 会话房间接口
  7. abstract class IRoom {
  8. /// 房间号
  9. String get roomId;
  10. /// 远端成员集合
  11. UnmodifiableListView<IMember> get remoteMembers;
  12. /// 本地成员
  13. IMember get localMember;
  14. /// 是否已进入房间
  15. bool get isEntered;
  16. /// 成员加入事件
  17. late final FEventHandler<IMember> memberJoined;
  18. /// 成员离开事件
  19. late final FEventHandler<IMember> memberLeaved;
  20. /// 已退出房间事件
  21. late final FEventHandler<void> exited;
  22. /// 已进入房间事件
  23. late final FEventHandler<void> entered;
  24. /// 错误发送事件
  25. late final FEventHandler<Object> errorOccurred;
  26. /// 装载本地成员
  27. void loadLocalMember(ILocalMemberParams params);
  28. /// 进入房间
  29. Future<void> enter();
  30. /// 退出房间
  31. Future<void> exit();
  32. /// 开启屏幕共享
  33. Future<void> startScreenCapture(String userId, String userSign);
  34. /// 关闭屏幕共享
  35. Future<void> stopScreenCapture();
  36. /// 截取某位成员的视频帧
  37. ///
  38. /// [userId] `null`表示截屏本地视频。对于本地视频,只能截取摄像头图像(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG)。
  39. ///
  40. /// [streamType] 视频流类型。支持相机图片(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG)和屏幕分享图片(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_SUB)。
  41. ///
  42. /// [sourceType] 视频图像源,可以是视频流图像(TRTCSnapshotSourceTypeStream,一般为较高清晰度),也可以是视频渲染图像(TRTCSnapshotSourceTypeView)
  43. ///
  44. /// [path] 图片保存路径,支持 PNG 和 JPEG 格式,需要精确到后缀,且确保可访问。
  45. Future<void> captureVideoFrame(
  46. String? userId,
  47. int streamType,
  48. int sourceType,
  49. String path,
  50. );
  51. /// 将指定成员踢出房间(权限限制)
  52. ///
  53. /// [memberId] 成员ID
  54. Future<void> kickMember(String memberId);
  55. /// 创建
  56. IPublisher createPublisher();
  57. /// 创建播放器
  58. IPlayer createPlayer();
  59. }