123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- //
- // RCLiveSteamManager.h
- // RCLiveDemo
- //
- // Created by My Apple on 2021/11/11.
- //
- #import <Foundation/Foundation.h>
- #include <CoreVideo/CVPixelBuffer.h>
- NS_ASSUME_NONNULL_BEGIN
- typedef enum EventState {
- EventStateUnKnown = -1L,
- EventStateLandscape = 0L,
- EventStateVerticalScreen,
- EventStateTurnOnAudioThrough,
- EventStateTurnOffAudioThrough,
- EventStateTurnOnVideoThrough,
- EventStateTurnOffVideoThrough,
- EventStateScreenChange,
- EventStateTurnOnVideoFront,
- EventStateUploadFileOnLine,
- EventStateUploadFileOffLine,
- EventStateTurnOnVideoDontNeedToServer,
- EventStateTurnOnVideoFrontDontNeedToServer
- } EventState;
- typedef enum ConnectState {
- ConnectStateDestroy = 0L,
- ConnectStateConnecting,
- ConnectStateConnected,
- ConnectStateRendering,
- ConnectStateClosing,
- ConnectStateClosed,
- ConnectStateAbnormalDisconnect,
- ConnectStateVfailed,
- ConnectStatePicPushing,
- ConnectStatePicPushed,
- ConnectStatePicPushErr,
- ConnectStateMultiLogin,
- ConnectStateVerifyErr,
- ConnectStateNetRequestIFrame
- } ConnectState;
- typedef enum VirtualDataType {
- VirtualDataTypeVideo = 1L,
- VirtualDataTypeAudio,
- VirtualDataTypePicture = 9L
- } VirtualDataType;
- typedef enum VirtualRecordState {
- VirtualRecordStateTurnOnAudioThrough = 2L,
- VirtualRecordStateTurnOffAudioThrough,
- VirtualRecordStateTurnOnVideoThrough,
- VirtualRecordStateTurnOffVideoThrough,
- VirtualRecordStateAudioThroughPause,
- VirtualRecordStateVideoThroughPause
- } VirtualRecordState;
- typedef enum ConnectChannelType {
- ConnectChannelTypeUpload = 0L,
- ConnectChannelTypeUdp = 1L,
- ConnectChannelTypeTcp,
- ConnectChannelTypeKcp,
- ConnectChannelTypeUdpH265,
- ConnectChannelTypeTcpH265,
- ConnectChannelTypeWebsocket,
- ConnectChannelTypeWebsocketH265
- } ConnectChannelType;
- typedef enum VideoDecodeType {
- VideoDecodeTypeSdk,
- VideoDecodeTypeNative
- } VideoDecodeType;
- typedef enum AudioDecodeType {
- AudioDecodeTypeSdk,
- AudioDecodeTypeNative
- } AudioDecodeType;
- typedef enum VirtualThroughModel {
- VirtualThroughModelOnline = 1L,
- VirtualThroughModelOffline
- } VirtualThroughModel;
- typedef NS_CLOSED_ENUM(NSInteger, RCCloudPhoneConnectType) {
- RCCloudPhoneConnectType_udp = 0L,
- RCCloudPhoneConnectType_websocket
- };
- typedef NS_CLOSED_ENUM(NSInteger, RCCloudPhoneVideoQuality) {
- RCCloudPhoneVideoQuality_Default = 0L, //h264
- RCCloudPhoneVideoQuality_High //h265
- };
- typedef struct {
- int loss_rate_ratio; //丢包率 = loss_rate_ratio / 256 * 100
- int min_rtt; //传输延时
- int send_fps; //帧率
- int send_bytes; //码率
- int current_estimator_rate; //当前带宽
- int send_delay_ms; //发送耗时
- int encode_delay_ms; //编号耗时
- int support_resolution_level;
- } NetEstimator;
- typedef NSInteger RCStateInt;
- @class RCLiveSteamManager;
- @protocol RCLiveSteamManagerDelegate <NSObject>
- - (void)liveStreamManagerOutPut:(RCLiveSteamManager *)manager didOutPutVideoPixelBuffer:(CVPixelBufferRef)pixelBuffer;
- - (void)liveStreamManagerOutPut:(RCLiveSteamManager *)manager didOutPutAudioData:(NSData *)pcmData;
- - (void)liveStreamManager:(RCLiveSteamManager *)manager connectState:(ConnectState)state;
- - (void)liveStreamManager:(RCLiveSteamManager *)manager didReceiveEvent:(EventState)event;
- - (void)liveStreamManager:(RCLiveSteamManager *)manager didReceiveMessage:(NSString *)message;
- - (void)liveStreamManager:(RCLiveSteamManager *)manager didReceiNetEstimator:(NetEstimator)estimator;
- - (void)liveStreamManager:(RCLiveSteamManager *)manager didReceiveJitterDelay:(int)jitterDelayMs;
- @end
- @interface RCLiveStreamConfigure : NSObject
- @property (nonatomic, strong) NSString *ipAdress;
- @property (nonatomic, assign) NSInteger port;
- @property (nonatomic, assign) RCCloudPhoneConnectType connectType;
- @property (nonatomic, assign) RCCloudPhoneVideoQuality videoQuality;
-
- @end
- @interface RCLiveSteamManager : NSObject
- @property (nonatomic, weak) id <RCLiveSteamManagerDelegate> delegate;
- - (RCStateInt)rc_openWithConfigure:(RCLiveStreamConfigure *)configure verify:(nullable NSString *)verify;
- - (RCStateInt)rc_openWithIp:(nonnull NSString *)ip
- port:(NSInteger)port
- connectType:(RCCloudPhoneConnectType)connectType
- videoQuality:(RCCloudPhoneVideoQuality)videoQuality
- verify:(nullable NSString *)verify
- streamAESKey:(nullable NSString *)aesKey;
- - (void)rc_requestIDFrame;
- - (void)rc_disconnect;
- - (void)rc_release;
- - (void)rc_sendTransportData:(const char *)buffer length:(int)length dataType:(VirtualDataType)type;
- - (void)rc_sendTransportRecordState:(VirtualRecordState)state;
- - (void)rc_setMediaTransportModel:(VirtualThroughModel)model;
- - (void)rc_sendJsonData:(const char *)data;
- - (void)rc_setDecodeVideoDelay:(int)delay;
- @end
- NS_ASSUME_NONNULL_END
|