human: 如何处理七牛云的实时音视频QNTypeDefines

gpt: [实时音视频](https://developer.qiniu.com/rtc) > API 文档 > iOS >QNTypeDefines

#  QNTypeDefines

最近更新时间: 2024-08-16 17:44:33

类型定义管理类

Index

Enum

  * QNRTCLogLevel
  * QNRTCErrorDomain
  * QNAudioMixErrorDomain
  * QNMediaRelayErrorDomain
  * QNMediaRecorderReasonCode
  * QNMediaPlayerReasonCode
  * QNConnectionState
  * QNAuthorizationStatus
  * QNAudioMusicMixerState
  * QNTrackKind
  * QNAudioDeviceType
  * QNRTCPolicy
  * QNDegradationPreference
  * QNAudioScene
  * QNVideoEncoderType
  * QNVideoFormatPreset
  * QNNetworkGrade
  * QNClientMode
  * QNClientRole
  * QNMediaRelayState
  * QNVideoFillModeType
  * QNTrackProfile
  * QNConnectionDisconnectedReason
  * QNMediaRecorderState
  * QNPlayerState
  * QNPlayerEvent

Block

  * QNPublishResultCallback
  * QNClientRoleResultCallback
  * QNMediaRelayResultCallback
  * QNUploadLogResultCallback
  * QNCameraSwitchResultCallback

Enum

QNRTCLogLevel

  * @typedef NS_ENUM(NSUInteger, QNRTCLogLevel)
  * 日志输出等级

code | describe | message  
---|---|---  
QNRTCLogLevelVerbose | Verbose 日志输出 | 无  
QNRTCLogLevelInfo | Info 日志输出 | 无  
QNRTCLogLevelWarning | Warning 日志输出 | 无  
QNRTCLogLevelError | Error 日志输出 | 无  
QNRTCLogLevelNone | None 日志输出 | 无  

QNRTCErrorDomain

  * NS_ERROR_ENUM(QNRTCErrorDomain)
  * 异常的错误码，指代具体出现错误的原因

code | describe | message  
---|---|---  
QNRTCErrorTokenError | 鉴权失败 | 建议用户收到此错误代码时尝试重新获取 RoomToken 后再次加入房间  
QNRTCErrorTokenExpired | RoomToken 过期 | 建议用户收到此错误代码时尝试重新获取 RoomToken 后再次加入房间  
QNRTCErrorRoomClosed | 房间被管理员关闭 | 请联系服务器  
QNRTCErrorRoomIsFull | 房间人数已超过限制 | 请联系服务器  
QNRTCErrorUserAlreadyExist | 用户已存在，该用户可能已使用其他设备进入房间 | 请确认是否已使用其他设备进入房间  
QNRTCErrorNoPermission | 当在进行踢人合流等操作没有权限时会返回此错误代码 | 请确定用户在进行操作时是否有对应权限  
QNRTCErrorInvalidParameter | 参数错误 | 请确定当前操作输入参数是否合法  
QNRTCErrorMediaCapNotSupport | 服务不可用 | SDK 内部错误。用户无需处理  
QNRTCErrorSubscribeDisconnected | 订阅失败，或订阅不存在 | 用户无需处理  
QNRTCErrorAuthFailed | 鉴权失败 | 建议用户收到此错误代码时检查网络并尝试重新获取 RoomToken 后再次加入房间  
QNRTCErrorRoomStateError | 当前房间状态不允许此操作 | 请在当前操作前，确定房间状态  
QNRTCErrorReconnectFailed | 房间重连失败 | 建议重新加入房间  
QNRTCErrorNetworkTimeout | 网络超时 | 请确认网络状态  
QNRTCErrorFatalError | 非预期错误 | SDK 内部错误。用户无需处理  
QNRTCErrorStreamNotExistError | 流不存在 | 请确认流信息  
QNRTCErrorServerUnavailable | 服务不可用 | 请重新尝试  
QNRTCErrorOperationTimeoutError | 操作超时 | 请重新尝试  
QNRTCErrorLiveStreamingClosedError | 流被服务端关闭 | 请重新转推  
QNRTCErrorSignalTimeOut | 信令超时 | 请重新尝试  
QNRTCErrorPushAudioBufferFailed | 音频重采样失败 | SDK 内部错误。用户无需处理  
QNRTCErrorFetchToken | 上传日志获取 token 失败 | 日志文件上传相关内部错误  
QNRTCErrorReadFile | 上传日志文件读取失败 | 日志文件上传相关内部错误  
QNRTCErrorInvalidDir | 上传日志路径无效 | 日志文件上传相关内部错误  
QNRTCErrorImageParserFailed | 推图片图片解析失败 | 请检查下推图片传入的源  

QNAudioMixErrorDomain

  * NS_ERROR_ENUM(QNAudioMixErrorDomain)
  * 音频混音错误

code | describe | message  
---|---|---  
QNAudioMixErrorResampleFailed | 音频混音重采样 | 请重新尝试混音操作  
QNAudioMixErrorAudioNotFound | 音频文件不存在 | 请检查音频文件是否实际存在  
QNAudioMixErrorIOException | 输入输出错误 | 请检查混音文件是否存在异常  
QNAudioMixErrorDecoderException | 解码错误 | 音频格式支持 aac、mp3、mp4、wav、m4r、caf、ogg、opus、m4a、flac  
QNAudioMixErrorSeekFailed | 跳转失败错误 | 请检查是否在开始混音前执行了 Seek 操作  
QNAudioMixErrorInvalidID | 唯一标识非法 | 请检查多音效或多音源使用的唯一标识 ID 是否可用  

QNMediaRelayErrorDomain

  * NS_ERROR_ENUM(QNMediaRelayErrorDomain)
  * 跨房媒体转发错误

code | describe | message  
---|---|---  
QNMediaRelayErrorTokenError | 跨房转推 Token 错误 | 无  
QNMediaRelayErrorAlreadyStart | 当前跨房已开始 | 无  
QNMediaRelayErrorNotStart | 当前跨房未开始 | 无  
QNMediaRelayErrorDestinationRoomNotExisted | 目标房间不存在 | 无  
QNMediaRelayErrorPlayerInDestRoom | 已在房间内 | 无  
QNMediaRelayErrorStartFailed | 开始失败 | 无  
QNRTCErrorInvalidMode | 使用场景不符 | 无  
QNRTCErrorInvalidRole | 用户角色不符 | 无  

QNMediaRecorderReasonCode

  * NS_ERROR_ENUM(QNMediaRecorderReasonCode)
  * 音视频本地录制错误

code | describe | message  
---|---|---  
QNMediaRecorderReasonCodeNoError | 一切正常 | 无  
QNMediaRecorderReasonCodeFormatFailed | 封装格式操作失败 | 无  
QNMediaRecorderReasonCodeStreamFailed | 流信息操作失败 | 无  
QNMediaRecorderReasonCodeWriteFailed | 录制过程中写入失败 | 无  
QNMediaRecorderReasonCodeResampleFailed | 录制过程中重采样操作失败 | 无  
QNMediaRecorderReasonCodeNoTrack | 没有可录制的流（采集中断或远端取消发布中断超过 5s） | 无  
QNMediaRecorderReasonCodeConfigChanged | 录制源配置被改变 | 无  
QNMediaRecorderReasonCodeOutOfMemory | 存储空间不足 | 无  
QNMediaRecorderReasonCodeScaleFailed | 录制过程中缩放操作失败 | 无  

QNMediaPlayerReasonCode

  * NS_ERROR_ENUM(QNMediaPlayerReasonCode)
  * 播放器错误码

code | describe | message  
---|---|---  
QNMediaPlayerOpenFileFailed | 打开文件失败 | 无  
QNMediaPlayerDecoderFailed | 解码失败 | 无  
QNMediaPlayerSeekFailed | seek 失败 | 无  
QNMediaPlayerInvalidState | 无效的播放状态 | 无  

QNConnectionState

  * typedef NS_ENUM(NSUInteger, QNConnectionState)
  * 房间连接状态

code | describe | message  
---|---|---  
QNConnectionStateDisconnected | 空闲状态，初始状态或者退出后都会进入该状态 | 无  
QNConnectionStateConnecting | 正在加入的状态 | 无  
QNConnectionStateConnected | 已加入的状态 | 无  
QNConnectionStateReconnecting | 正在重连的状态 | 无  
QNConnectionStateReconnected | 重连成功的状态 | 无  

QNAuthorizationStatus

  * typedef NS_ENUM(NSUInteger, QNAuthorizationStatus) 
  * 设备授权状态

code | describe | message  
---|---|---  
QNAuthorizationStatusNotDetermined | 还没有确定是否授权 | 无  
QNAuthorizationStatusRestricted | 设备受限，一般在家长模式下设备会受限 | 无  
QNAuthorizationStatusDenied | 拒绝授权 | 无  
QNAuthorizationStatusAuthorized | 已授权 | 无  

QNAudioMusicMixerState

  * typedef NS_ENUM(NSUInteger, QNAudioMusicMixerState)
  * 背景音乐混音状态

code | describe | message  
---|---|---  
QNAudioMusicMixerStateIdle | 初始状态 | 无  
QNAudioMusicMixerStateMixing | 正在混音的状态 | 无  
QNAudioMusicMixerStatePaused | 暂停混音的状态态 | 无  
QNAudioMusicMixerStateStopped | 停止混音的状态 | 无  
QNAudioMusicMixerStateCompleted | 混音完成的状态 | 无  

QNTrackKind

  * typedef NS_ENUM(NSUInteger, QNTrackKind) 
  * 定义 Track 的类型

code | describe | message  
---|---|---  
QNTrackKindAudio | 音频类型 | 无  
QNTrackKindVideo | 视频类型 | 无  

QNAudioDeviceType

  * typedef NS_ENUM(NSUInteger, QNAudioDeviceType)
  * 音频设备的类型

code | describe | message  
---|---|---  
QNAudioDeviceTypeSpeaker | 扬声器 | 无  
QNAudioDeviceTypeReceiver | 听筒 | 无  
QNAudioDeviceTypeWiredHeadphone | 有线耳机 | 无  
QNAudioDeviceTypeBluetooth | 蓝牙 | 无  

QNRTCPolicy

  * typedef NS_ENUM(NSUInteger, QNRTCPolicy)
  * 媒体流的连接方式

code | describe | message  
---|---|---  
QNRTCPolicyForceUDP | 使用 UDP | 无  
QNRTCPolicyForceTCP | 使用 TCP | 无  
QNRTCPolicyPreferUDP | 优先 UDP，不通的话自动改为 TCP | 无  

QNDegradationPreference

  * typedef NS_ENUM(NSUInteger, QNDegradationPreference)
  * 视频质量降级模式

code | describe | message  
---|---|---  
QNDegradationMaintainFrameRate | 保持帧率 | 无  
QNDegradationMaintainResolution | 保持分辨率 | 无  
QNDegradationBlanced | 平衡调节分辨率和帧率 | 无  
QNDegradationAdaptBitrateOnly | 保持分辨率和帧率，适当调节码率 | 无  
QNDegradationDefault | RTC 模式下使用 QNDegradationBlanced，Live 模式下使用 QNDegradationMaintainResolution | 无  

QNAudioScene

  * typedef NS_ENUM(NSUInteger, QNAudioScene)
  * 音频场景

code | describe | message  
---|---|---  
QNAudioSceneDefault | 默认音频场景 | 仅发布或仅订阅时为媒体模式，同时发布和订阅时自动切换到通话模式  
QNAudioSceneVoiceChat | 清晰语聊场景 | 为了人声清晰使用通话模式，环境音和音乐声会有一定抑制  
QNAudioSceneSoundEqualize | 音质均衡场景 | 平衡音质对环境音和音乐声的还原性更优，使用媒体模式  

QNVideoEncoderType

  * typedef NS_ENUM(NSUInteger, QNVideoEncoderType)
  * 音频场景

code | describe | message  
---|---|---  
QNVideoEncoderToolboxH264 | videoToolbox 编码器 | 硬件编码  
QNVideoEncoderOpenH264 | 七牛自定义 openh264 | 软件编码  

QNVideoFormatPreset

  * typedef NS_ENUM(NSUInteger, QNVideoFormatPreset)
  * 音频场景

code | describe | message  
---|---|---  
QNVideoFormatPreset320x180_15 | 分辨率 320x180, 15fps, 400kbps(RTC), 500kbps(Live) | 无  
QNVideoFormatPreset320x240_15 | 分辨率 320x240, 15fps, 500kbps(RTC), 600kbps(Live) | 无  
QNVideoFormatPreset640x360_15 | 分辨率 640x360, 15fps, 700kbps(RTC), 800kbps(Live) | 无  
QNVideoFormatPreset640x360_30 | 分辨率 640x360, 30fps, 850kbps(RTC), 1050kbps(Live) | 无  
QNVideoFormatPreset640x480_15 | 分辨率 640x480, 15fps, 800kbps(RTC), 1100kbps(Live) | 无  
QNVideoFormatPreset640x480_30 | 分辨率 640x480, 30fps, 1100kbps(RTC), 1400kbps(Live) | 无  
QNVideoFormatPreset960x540_15 | 分辨率 960x540, 15fps, 1000kbps(RTC), 1300kbps(Live) | 无  
QNVideoFormatPreset960x540_30 | 分辨率 960x540, 30fps, 1400kbps(RTC), 1700kbps(Live) | 无  
QNVideoFormatPreset960x720_15 | 分辨率 960x720, 15fps, 1300kbps(RTC), 1700kbps(Live) | 无  
QNVideoFormatPreset960x720_30 | 分辨率 960x720, 30fps, 1700kbps(RTC), 2400kbps(Live) | 无  
QNVideoFormatPreset1280x720_15 | 分辨率 1280x720, 15fps, 1600kbps(RTC), 2000kbps(Live) | 无  
QNVideoFormatPreset1280x720_30 | 分辨率 1280x720, 30fps, 2200kbps(RTC), 2900kbps(Live) | 无  
QNVideoFormatPresetNone | 无编码预设 | 默认   

QNNetworkGrade

  * typedef NS_ENUM(NSUInteger, QNNetworkGrade)
  * 网络质量等级

code | describe | message  
---|---|---  
QNNetworkGradeInvalid | 初始状态 | 无  
QNNetworkGradeExcellent | 网络优 | 无  
QNNetworkGradeGood | 网络良 | 无  
QNNetworkGradeGeneral | 网络一般 | 无  
QNNetworkGradePoor | 网络差 | 无  

QNClientMode

  * typedef NS_ENUM(NSUInteger, QNClientMode)
  * 使用场景

code | describe | message  
---|---|---  
QNClientModeRTC | 通信场景（默认） | 无  
QNClientModeLive | 直播场景 | 无  

QNClientRole

  * typedef NS_ENUM(NSUInteger, QNClientRole)
  * 用户角色

code | describe | message  
---|---|---  
QNClientRoleBroadcaster | 主播角色 | 无  
QNClientRoleAudience | 观众角色 | 无  

QNMediaRelayState

  * typedef NS_ENUM(NSUInteger, QNMediaRelayState)
  * 跨房媒体转发状态

code | describe | message  
---|---|---  
QNMediaRelayStateSuccess | 成功 | 无  
QNMediaRelayStateStopped | 主动停止 | 无  
QNMediaRelayStateInvalidToken | 无效token | 无  
QNMediaRelayStateNoRoom | 目标房间不存在 | 无  
QNMediaRelayStateRoomClosed | 目标房间已关闭 | 无  
QNMediaRelayStatePlayerExisted | 目标房间存在相同用户名 | 无  
QNMediaRelayStateUnknown | 未知状态 | 无  

QNVideoFillModeType

  * typedef enum {...}QNVideoFillModeType
  * 视频填充模式

code | describe | message  
---|---|---  
QNVideoFillModeNone | 默认 | 无  
QNVideoFillModeStretch | 拉伸以填充整个视图，这可能会使图像超出其正常纵横比 | 无  
QNVideoFillModePreserveAspectRatio | 保持源图像的纵横比，添加指定背景色的条 | 无  
QNVideoFillModePreserveAspectRatioAndFill | 保持源图像的纵横比，放大其中心以填充视图 | 无  

QNTrackProfile

  * typedef NS_ENUM(NSUInteger, QNTrackProfile)
  * 大小流等级

code | describe | message  
---|---|---  
QNTrackProfileLow | 低分辨率 | 无  
QNTrackProfileMedium | 中分辨率 | 无  
QNTrackProfileHigh | 高分辨率 | 无  

QNConnectionDisconnectedReason

  * typedef NS_ENUM(NSUInteger, QNConnectionDisconnectedReason)
  * 断联原因

code | describe | message  
---|---|---  
QNConnectionDisconnectedReasonLeave | 主动退出 | 无  
QNConnectionDisconnectedReasonKickedOut | 被踢出房间 | 无  
QNConnectionDisconnectedReasonRoomClosed | 房间被关 | 无  
QNConnectionDisconnectedReasonRoomFull | 房间人数已满 | 无  
QNConnectionDisconnectedReasonError | 发生错误异常断开 | 无  

QNMediaRecorderState

  * typedef NS_ENUM(NSUInteger, QNMediaRecorderState)
  * 录制状态

code | describe | message  
---|---|---  
QNMediaRecorderStateStopped | 停止录制 | 无  
QNMediaRecorderStateRecording | 录制中 | 无  
QNMediaRecorderStateError | 发生错误 | 无  

QNPlayerState

  * typedef NS_ENUM(NSUInteger, QNPlayerState)
  * 播放器状态

code | describe | message  
---|---|---  
QNPlayerStateIdle | 初始化，停止播放，播放失败等状态 | 无  
QNPlayerStatePrepare | 启播过程中状态 | 无  
QNPlayerStatePlaying | 播放状态 | 无  
QNPlayerStatePause | 暂停状态 | 无  

QNPlayerEvent

  * typedef NS_ENUM(NSUInteger, QNPlayerEvent)
  * 播放器事件

code | describe | message  
---|---|---  
QNPlayerEventNone | 默认值 | 无  
QNPlayerEventFirstRender | 首帧视频渲染 | 无  
QNPlayerEventOpenFileFailed | 打开文件或者直播流失败 | 无  
QNPlayerEventDecoderFailed | 初始化解码失败或者解码过程中失败 | 无  

Block

QNPublishResultCallback

  * typedef void (^QNPublishResultCallback)(BOOL onPublished, NSError *error);
  * 用户发布 Track 的 Callback

QNClientRoleResultCallback

  * typedef void (^QNClientRoleResultCallback)(QNClientRole newRole, NSError *error);
  * 设置用户角色的 Callback.

QNMediaRelayResultCallback

  * typedef void (^QNMediaRelayResultCallback)(NSDictionary *state, NSError *error);
  * 跨房间媒体转发的 Callback.

> 此接口回调的是所有跨房目标房间的状态。具体每个目标房间转发状态，需要参考回调参数中目标房间对应的 QNMediaRelayState

QNUploadLogResultCallback

  * typedef void (^QNUploadLogResultCallback)(NSString *fileName, int code, int remaining);
  * 日志文件上传结果的 Callback.

> 此接口的回调在调用 setLogConfig 设置日志文件配置之后才会有效，如有需要可关注返回的 code 值，方便定位失败原因

QNCameraSwitchResultCallback

  * typedef void (^QNCameraSwitchResultCallback)(BOOL isFrontCamera, NSString *errorMessage);
  * 切换摄像头返回结果的 Callback.

> 此接口的回调在调用 switchCamera 配置之后返回

以上内容是否对您有帮助？