// // AMediaStream.h // all // // Created by admin on 2024/3/14. // #ifndef AMediaStream_h #define AMediaStream_h #import #import #import #import #import #import "WebRTCPlayerView.h" RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE(MediaStreamClientEventsDelegate) - (void)dataChannelDidChangeFromPeerName:(NSString*)peerName State:(RTCDataChannelState)state; -(void)onChannelDataFromPeerName:(NSString*)peerName buffer:(RTC_OBJC_TYPE(RTCDataBuffer) *)buffer; -(void)onChangeConnectionStateFromPeerName:(NSString*)peerName didChangeIceConnectionState:(RTCIceConnectionState)state; -(void)onFrameResolutionChangedFromPeerName:(NSString*)peerName videoWidth:(int)videoWidth videoHeight:(int)videoHeight rotation:(int)rotation; -(void)didGetStats:(NSString*)peerName stats:(RTC_OBJC_TYPE(RTCStatisticsReport) *)stats; //code 0 成功 1失败 -(void)onAuthResultFromPeerName:(NSString*)peerName code:(int)code descriptions:(NSString*)descriptions; -(void)onFirstFrameRendered:(NSString*)peerName; @optional - (void)connectionChange:(NSString*)peerName didChangeLocalCandidate:(RTC_OBJC_TYPE(RTCIceCandidate) *)local remoteCandidate:(RTC_OBJC_TYPE(RTCIceCandidate) *)remote lastReceivedMs:(int)lastDataReceivedMs changeReason:(NSString *)reason; @optional - (void)virtualMicrophoneCameraOccupiedNotify:(BOOL)microphone camera:(BOOL)camera userData:(NSString *)userData; @optional - (void)customMsgNotify:(NSString *)pusher userData:(NSString *)userData; @optional - (void)virtualMicrophoneStatusNotify:(BOOL)microphoneStatus; @optional - (void)virtualCameraStatusNotify:(BOOL)cameraStatus; @end RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE(MediaStreamClientEventsDelegateEx) - (void)dataChannelDidChangeFromPeerNameEx:(NSString*)peerName State:(RTCDataChannelState)state; -(void)onChangeConnectionStateFromPeerNameEx:(NSString*)peerName didChangeIceConnectionState:(RTCIceConnectionState)state; //code 0 成功 1失败 -(void)onAuthResultFromPeerNameEx:(NSString*)peerName code:(int)code descriptions:(NSString*)descriptions; @end RTC_OBJC_EXPORT @interface RTC_OBJC_TYPE(AMediaStream) : NSObject +(void)globalInitialization; +(void)globalDeinitialization; +(NSString*)getSdkVersion; -(instancetype)initWithFrame:(CGRect)frame; //start 拉流前调用设置软硬编码,YES硬编码,NO软编码,不调用默认硬编码 -(void)setVideoCodecHwAcceleration:(BOOL)videoCodecHwAcceleration; //start 拉流前调用设置本次拉流记录推流端日志到指定文件与记录时间 秒 单位。 //filePathName = /sdcard/webrtc_box.log captureTime = 30s -(void)setCardLogToFile:(NSString*)filePathName captureTime:(NSString*)captureTime; //start 之前调用是否启用预连接 -(void)setPrelinkEnable:(BOOL)enable; //start 之前调用设置中转服务器内网ip -(void) setIceInternalIp:(NSString*)internalIp; //ice ip:port -(int)start:(NSURL *)url ice:(NSString*)ice sn:(NSString*)sn direct:(NSInteger)direct fmt:(NSInteger)fmt videoWidth:(NSInteger)videoWidth videoHeight:(NSInteger)videoHeight fps:(NSInteger)fps bitrate:(NSInteger)bitrate cardWidth:(NSInteger)cardWidth cardHeight:(NSInteger)cardHeight cardDensity:(NSInteger)cardDensity token:(NSString*)token; - (int)startUploadChannel:(NSURL *)url ice:(NSString*)ice sn:(NSString*)sn token:(NSString*)token; - (void)disconnect; - (BOOL)sendData:(NSString*)strData; - (BOOL)sendBinary:(NSData*)data; - (BOOL)sendKey:(int)value; - (BOOL)pauseStream; - (BOOL)resumeStream; - (BOOL)setAudioEnable:(BOOL)enable; - (BOOL)setMaxBitrate:(NSNumber*)rate; - (BOOL)setAutoBitrateEnabled:(BOOL)enable bitrate:(NSNumber*)bitrate; - (void)setShouldGetStats:(BOOL)shouldGetStats; - (void)setVideoContentMode:(UIViewContentMode)mode; - (BOOL)setCardSize:(NSInteger)cardWidth cardHeight:(NSInteger)cardHeight cardDensity:(NSInteger)cardDensity; - (BOOL)setVideoSize:(NSInteger)videoWidth videoHeight:(NSInteger)videoHeight frameRate:(NSInteger)frameRate; - (void)enterBackground; - (void)enterForeground; - (BOOL)setPrelinkPlay; - (void)startFileRotatingStream:(NSString *)dir_path max_file_size:(NSInteger)max_file_size; - (void)stopFileRotatingStream; //订阅使用相机麦克风。拉流成功,datachannel 连接成功后才能调用 - (BOOL)subscribeVirtualMicrophoneCamera:(BOOL)microphone camera:(BOOL)camera userData:(NSString *)userData; //发送自定义消息。拉流成功,datachannel 连接成功后才能调用 - (BOOL)pushCustomMessages:(NSString *)pusher userData:(NSString *)userData; //设置自动码率调整区间。拉流成功,datachannel 连接成功后才能调用 - (BOOL)setAutoBitrateRange:(int)minBitrateKbps maxBitrateKbps:(int)maxBitrateKbps; @property (nonatomic, weak) id eventDelegate; @property (nonatomic, weak) id eventDelegateEx; @property(nonatomic, copy, readonly) NSString *name; @property(nonatomic, assign) BOOL shouldGetStats; @property (nonatomic, strong)WebRTCPlayerView *webRTCPlayerView; @end #endif