AMediaStream.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. //
  2. // AMediaStream.h
  3. // all
  4. //
  5. // Created by admin on 2024/3/14.
  6. //
  7. #ifndef AMediaStream_h
  8. #define AMediaStream_h
  9. #import <Foundation/Foundation.h>
  10. #import <WebRTC/RTCPeerConnection.h>
  11. #import <WebRTC/RTCDataChannel.h>
  12. #import <WebRTC/RTCStatisticsReport.h>
  13. #import <WebRTC/RTCVideoRenderer.h>
  14. #import "WebRTCPlayerView.h"
  15. RTC_OBJC_EXPORT
  16. @protocol RTC_OBJC_TYPE(MediaStreamClientEventsDelegate) <NSObject>
  17. - (void)dataChannelDidChangeFromPeerName:(NSString*)peerName State:(RTCDataChannelState)state;
  18. -(void)onChannelDataFromPeerName:(NSString*)peerName buffer:(RTC_OBJC_TYPE(RTCDataBuffer) *)buffer;
  19. -(void)onChangeConnectionStateFromPeerName:(NSString*)peerName didChangeIceConnectionState:(RTCIceConnectionState)state;
  20. -(void)onFrameResolutionChangedFromPeerName:(NSString*)peerName videoWidth:(int)videoWidth videoHeight:(int)videoHeight rotation:(int)rotation;
  21. -(void)didGetStats:(NSString*)peerName stats:(RTC_OBJC_TYPE(RTCStatisticsReport) *)stats;
  22. //code 0 成功 1失败
  23. -(void)onAuthResultFromPeerName:(NSString*)peerName code:(int)code descriptions:(NSString*)descriptions;
  24. -(void)onFirstFrameRendered:(NSString*)peerName;
  25. @optional
  26. - (void)connectionChange:(NSString*)peerName
  27. didChangeLocalCandidate:(RTC_OBJC_TYPE(RTCIceCandidate) *)local
  28. remoteCandidate:(RTC_OBJC_TYPE(RTCIceCandidate) *)remote
  29. lastReceivedMs:(int)lastDataReceivedMs
  30. changeReason:(NSString *)reason;
  31. @optional
  32. - (void)virtualMicrophoneCameraOccupiedNotify:(BOOL)microphone camera:(BOOL)camera userData:(NSString *)userData;
  33. @optional
  34. - (void)customMsgNotify:(NSString *)pusher userData:(NSString *)userData;
  35. @optional
  36. - (void)virtualMicrophoneStatusNotify:(BOOL)microphoneStatus;
  37. @optional
  38. - (void)virtualCameraStatusNotify:(BOOL)cameraStatus;
  39. @end
  40. RTC_OBJC_EXPORT
  41. @protocol RTC_OBJC_TYPE(MediaStreamClientEventsDelegateEx) <NSObject>
  42. - (void)dataChannelDidChangeFromPeerNameEx:(NSString*)peerName State:(RTCDataChannelState)state;
  43. -(void)onChangeConnectionStateFromPeerNameEx:(NSString*)peerName didChangeIceConnectionState:(RTCIceConnectionState)state;
  44. //code 0 成功 1失败
  45. -(void)onAuthResultFromPeerNameEx:(NSString*)peerName code:(int)code descriptions:(NSString*)descriptions;
  46. @end
  47. RTC_OBJC_EXPORT
  48. @interface RTC_OBJC_TYPE(AMediaStream) : NSObject
  49. +(void)globalInitialization;
  50. +(void)globalDeinitialization;
  51. +(NSString*)getSdkVersion;
  52. -(instancetype)initWithFrame:(CGRect)frame;
  53. //start 拉流前调用设置软硬编码,YES硬编码,NO软编码,不调用默认硬编码
  54. -(void)setVideoCodecHwAcceleration:(BOOL)videoCodecHwAcceleration;
  55. //start 拉流前调用设置本次拉流记录推流端日志到指定文件与记录时间 秒 单位。
  56. //filePathName = /sdcard/webrtc_box.log captureTime = 30s
  57. -(void)setCardLogToFile:(NSString*)filePathName captureTime:(NSString*)captureTime;
  58. //start 之前调用是否启用预连接
  59. -(void)setPrelinkEnable:(BOOL)enable;
  60. //start 之前调用设置中转服务器内网ip
  61. -(void) setIceInternalIp:(NSString*)internalIp;
  62. //ice ip:port
  63. -(int)start:(NSURL *)url
  64. ice:(NSString*)ice
  65. sn:(NSString*)sn
  66. direct:(NSInteger)direct
  67. fmt:(NSInteger)fmt
  68. videoWidth:(NSInteger)videoWidth
  69. videoHeight:(NSInteger)videoHeight
  70. fps:(NSInteger)fps
  71. bitrate:(NSInteger)bitrate
  72. cardWidth:(NSInteger)cardWidth
  73. cardHeight:(NSInteger)cardHeight
  74. cardDensity:(NSInteger)cardDensity
  75. token:(NSString*)token;
  76. - (int)startUploadChannel:(NSURL *)url
  77. ice:(NSString*)ice
  78. sn:(NSString*)sn
  79. token:(NSString*)token;
  80. - (void)disconnect;
  81. - (BOOL)sendData:(NSString*)strData;
  82. - (BOOL)sendBinary:(NSData*)data;
  83. - (BOOL)sendKey:(int)value;
  84. - (BOOL)pauseStream;
  85. - (BOOL)resumeStream;
  86. - (BOOL)setAudioEnable:(BOOL)enable;
  87. - (BOOL)setMaxBitrate:(NSNumber*)rate;
  88. - (BOOL)setAutoBitrateEnabled:(BOOL)enable bitrate:(NSNumber*)bitrate;
  89. - (void)setShouldGetStats:(BOOL)shouldGetStats;
  90. - (void)setVideoContentMode:(UIViewContentMode)mode;
  91. - (BOOL)setCardSize:(NSInteger)cardWidth
  92. cardHeight:(NSInteger)cardHeight
  93. cardDensity:(NSInteger)cardDensity;
  94. - (BOOL)setVideoSize:(NSInteger)videoWidth
  95. videoHeight:(NSInteger)videoHeight
  96. frameRate:(NSInteger)frameRate;
  97. - (void)enterBackground;
  98. - (void)enterForeground;
  99. - (BOOL)setPrelinkPlay;
  100. - (void)startFileRotatingStream:(NSString *)dir_path
  101. max_file_size:(NSInteger)max_file_size;
  102. - (void)stopFileRotatingStream;
  103. //订阅使用相机麦克风。拉流成功,datachannel 连接成功后才能调用
  104. - (BOOL)subscribeVirtualMicrophoneCamera:(BOOL)microphone camera:(BOOL)camera userData:(NSString *)userData;
  105. //发送自定义消息。拉流成功,datachannel 连接成功后才能调用
  106. - (BOOL)pushCustomMessages:(NSString *)pusher userData:(NSString *)userData;
  107. //设置自动码率调整区间。拉流成功,datachannel 连接成功后才能调用
  108. - (BOOL)setAutoBitrateRange:(int)minBitrateKbps maxBitrateKbps:(int)maxBitrateKbps;
  109. @property (nonatomic, weak) id <MediaStreamClientEventsDelegate> eventDelegate;
  110. @property (nonatomic, weak) id <MediaStreamClientEventsDelegateEx> eventDelegateEx;
  111. @property(nonatomic, copy, readonly) NSString *name;
  112. @property(nonatomic, assign) BOOL shouldGetStats;
  113. @property (nonatomic, strong)WebRTCPlayerView *webRTCPlayerView;
  114. @end
  115. #endif