Référence de l'API iOS du SDK client AOQ, couvrant le cycle de vie du moteur, la gestion des périphériques audio et vidéo, la configuration des codecs, le contrôle des flux multimédias, la lecture de fichiers audio, les flux audio externes, la messagerie en temps réel, les rappels de trames, les protocoles délégués ainsi que les types de données et énumérations.
Index des API
RemarqueLe SDK AOQ fournit des API vidéo générales. Qwen-Audio-Realtime ne prend pas en charge l’entrée ni la sortie vidéo. Pour les capacités de médias des autres modèles, consultez leur documentation de connexion.
Cycle de vie du moteur
API | Description |
|---|---|
createEngine:delegate: | Créer l'instance du moteur (singleton) |
destroy | Détruire l'instance du moteur |
getVersion | Obtenir la chaîne de version du SDK |
connect: | Se connecter au serveur Relay |
disconnect | Se déconnecter du serveur |
Gestion des périphériques audio
API | Description |
|---|---|
startAudioCapture: | Ouvrir le périphérique de capture audio (microphone) |
stopAudioCapture | Fermer le périphérique de capture audio |
muteAudioCapture: | Couper ou rétablir la capture audio |
startAudioPlayer: | Démarrer la lecture audio (lire l'audio distant) |
stopAudioPlayer | Arrêter la lecture audio |
pauseAudioPlayer: | Mettre en pause la lecture audio avec fondu sortant optionnel |
resumeAudioPlayer: | Reprendre la lecture audio avec fondu entrant optionnel |
interruptAudioPlayer:fadeMs: | Interrompre le tour d'appel audio en cours |
enableSpeakerphone: | Basculer la sortie audio entre le haut-parleur et l'écouteur |
isSpeakerphoneEnabled | Vérifier si le haut-parleur est actuellement actif |
setAudioSessionRestriction: | Définir les permissions de contrôle AVAudioSession |
Configuration du codec audio
API | Description |
|---|---|
setAudioEncoderConfig: | Définir les paramètres d'encodage audio |
setAudioDecoderConfig: | Définir les paramètres de décodage audio |
Gestion des périphériques vidéo
API | Description |
|---|---|
startVideoCapture: | Ouvrir le périphérique de capture vidéo (caméra) |
stopVideoCapture | Fermer le périphérique de capture vidéo |
switchCamera: | Basculer entre les caméras avant et arrière |
setLocalView:canvas: | Définir ou supprimer la vue de rendu vidéo locale |
setRemoteView:canvas: | Définir ou supprimer la vue de rendu vidéo distante |
Encodage vidéo et entrée externe
API | Description |
|---|---|
setVideoEncoderConfig: | Définir les paramètres d'encodage vidéo |
pushExternalVideoCapturedFrame:frame: | Envoyer une trame vidéo brute capturée en externe |
pushExternalVideoEncodedFrame:frame: | Envoyer une trame vidéo encodée en externe |
Contrôle des flux multimédias
API | Description |
|---|---|
enableSendMediaStream:enable: | Activer ou désactiver l'envoi du flux multimédia local |
Lecture de fichiers audio
API | Description |
|---|---|
startAudioFile:config: | Démarrer le streaming d'un fichier audio local |
stopAudioFile: | Arrêter la lecture du fichier audio |
pauseAudioFile: | Mettre en pause la lecture du fichier audio |
resumeAudioFile: | Reprendre la lecture du fichier audio |
getAudioFileDuration: | Obtenir la durée totale du fichier audio |
getAudioFileCurrentPosition: | Obtenir la position de lecture actuelle |
setAudioFilePositionMillis:positionMillis: | Se positionner à un endroit précis du fichier audio |
setAudioFileVolume:type:volume: | Régler le volume du fichier audio |
getAudioFileVolume:type: | Obtenir le volume actuel du fichier audio |
Flux audio externes
API | Description |
|---|---|
addAudioExternalStream:config: | Ajouter un flux audio externe |
removeAudioExternalStream: | Supprimer un flux audio externe |
pushAudioExternalStreamData:data: | Envoyer des données audio PCM externes |
setAudioExternalStreamVolume:type:volume: | Définir le volume d'un flux audio externe |
getAudioExternalStreamVolume:type: | Obtenir le volume d'un flux audio externe |
clearAudioExternalStreamBuffer:fadeoutMs: | Vider le tampon d'un flux audio externe |
Messagerie en temps réel
API | Description |
|---|---|
sendDataMsg: | Envoyer un message de données en temps réel |
Rappels de trames audio
API | Description |
|---|---|
setAudioFrameObserver: | Définir le délégué de rappel des données de trames audio |
enableAudioFrameObserver:audioSource:config: | Activer ou désactiver les rappels de trames audio à un point spécifié |
Rappels de trames vidéo
API | Description |
|---|---|
setVideoFrameObserver: | Définir le délégué de rappel des données de trames vidéo |
enableVideoFrameObserver:videoSource:config: | Activer ou désactiver les rappels de trames vidéo à un point spécifié |
Rappels AoqEngineDelegate
Rappel | Description |
|---|---|
onError:message: | Rappel d'erreur du moteur |
onWarning:message: | Rappel d'avertissement du moteur |
onConnectionStatusChange: | Rappel de changement d'état de connexion |
onStats: | Rappel de statistiques |
onAudioDeviceStateChanged: | Rappel de changement d'état du périphérique audio |
onAudioDeviceRouteChanged: | Rappel de changement de route de sortie audio |
onAudioDeviceInterrupted: | Rappel d'interruption du périphérique audio |
onVideoDeviceStateChanged: | Rappel de changement d'état du périphérique vidéo |
onAudioFileState: | Rappel d'état de lecture du fichier audio |
onDataMsg: | Rappel de réception de message de données en temps réel |
AoqAudioFrameDelegate | Protocole d'écoute des données de trames audio |
AoqVideoFrameDelegate | Protocole d'écoute des données de trames vidéo |
Détails des API
Cycle de vie du moteur
createEngine:delegate:
Créez l'instance du moteur. Le SDK conserve le moteur sous forme de singleton global.
+ (instancetype _Nonnull)createEngine:(AoqCreateConfig * _Nonnull)config
delegate:(id<AoqEngineDelegate> _Nonnull)delegate;
destroy
+ (int)destroy;
getVersion
+ (NSString * _Nonnull)getVersion;
connect:
Se connecte au serveur Relay. AppServer transmet les paramètres de connexion au client. Cet appel revient immédiatement. Le résultat réel de la connexion est signalé par le callback onConnectionStatusChange:.
RemarqueDans la documentation générale de l’API SDK, AppServer attribue les paramètres de connexion via /api/v1/allocate. Pour un modèle précis, consultez Connexion AOQ Qwen-Omni-Realtime, Connexion AOQ Qwen-Audio-Realtime ou Connexion AOQ Qwen-LiveTranslate-Realtime.
- (int)connect:(AoqConnectConfig * _Nonnull)config;
disconnect
- (int)disconnect;
Gestion des périphériques audio
- (int)startAudioCapture:(AoqAudioCaptureConfig * _Nonnull)config;
- (int)stopAudioCapture;
- (int)muteAudioCapture:(BOOL)mute;
- (int)startAudioPlayer:(AoqAudioPlaybackConfig * _Nonnull)config;
- (int)stopAudioPlayer;
- (int)pauseAudioPlayer:(NSInteger)fadeMs;
- (int)resumeAudioPlayer:(NSInteger)fadeMs;
- (int)interruptAudioPlayer:(AoqTrackType)trackType fadeMs:(NSInteger)fadeMs;
- (int)enableSpeakerphone:(BOOL)enable;
- (BOOL)isSpeakerphoneEnabled;
- (int)setAudioSessionRestriction:(int)restriction;
Configuration du codec audio
- (int)setAudioEncoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
- (int)setAudioDecoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
Gestion des périphériques vidéo
- (int)startVideoCapture:(AoqVideoCaptureConfig * _Nonnull)config;
- (int)stopVideoCapture;
- (int)switchCamera:(AoqCameraDirection)direction;
- (int)setLocalView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
- (int)setRemoteView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
Transmettez AoqTrackTypeVideo comme paramètre trackType pour setLocalView et setRemoteView.
Encodage vidéo et entrée externe
- (int)setVideoEncoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
- (int)pushExternalVideoCapturedFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (int)pushExternalVideoEncodedFrame:(AoqTrackType)trackType frame:(AoqVideoEncodedFrame * _Nonnull)frame;
Transmettez AoqTrackTypeVideo comme paramètre trackType.
Contrôle des flux multimédias
- (int)enableSendMediaStream:(AoqTrackType)trackType enable:(BOOL)enable;
Le paramètre trackType accepte AoqTrackTypeAudio ou AoqTrackTypeVideo.
Lecture de fichiers audio
- (int)startAudioFile:(NSString * _Nonnull)fileId config:(AoqAudioFileMixConfig * _Nonnull)config;
- (int)stopAudioFile:(NSString * _Nonnull)fileId;
- (int)pauseAudioFile:(NSString * _Nonnull)fileId;
- (int)resumeAudioFile:(NSString * _Nonnull)fileId;
- (long long)getAudioFileDuration:(NSString * _Nonnull)fileId;
- (long long)getAudioFileCurrentPosition:(NSString * _Nonnull)fileId;
- (int)setAudioFilePositionMillis:(NSString * _Nonnull)fileId positionMillis:(long long)positionMillis;
- (int)setAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
- (int)getAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type;
Flux audio externes
- (int)addAudioExternalStream:(NSString * _Nonnull)streamId config:(AoqAudioExternalStreamConfig * _Nonnull)config;
- (int)pushAudioExternalStreamData:(NSString * _Nonnull)streamId data:(AoqAudioFrameData * _Nonnull)data;
- (int)setAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
- (int)getAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type;
- (void)clearAudioExternalStreamBuffer:(NSString * _Nonnull)streamId fadeoutMs:(NSInteger)fadeoutMs;
- (int)removeAudioExternalStream:(NSString * _Nonnull)streamId;
Messagerie en temps réel
- (int)sendDataMsg:(AoqDataMsg * _Nonnull)msg;
Rappels de trames audio
- (int)setAudioFrameObserver:(id<AoqAudioFrameDelegate> _Nullable)delegate;
- (int)enableAudioFrameObserver:(BOOL)enabled audioSource:(AoqAudioSource)audioSource config:(AoqAudioObserverConfig * _Nonnull)config;
Rappels de trames vidéo
- (int)setVideoFrameObserver:(id<AoqVideoFrameDelegate> _Nullable)delegate;
- (int)enableVideoFrameObserver:(BOOL)enabled videoSource:(AoqVideoSource)videoSource config:(AoqVideoObserverConfig * _Nonnull)config;
Rappels AoqEngineDelegate
Toutes les méthodes de rappel sont @required.
- (void)onError:(NSInteger)code message:(NSString * _Nonnull)message;
- (void)onWarning:(NSInteger)code message:(NSString * _Nonnull)message;
- (void)onConnectionStatusChange:(AoqConnectionStatus)status;
- (void)onStats:(AoqStats * _Nonnull)stats;
- (void)onAudioDeviceStateChanged:(AoqAudioDeviceState * _Nonnull)state;
- (void)onAudioDeviceRouteChanged:(NSInteger)routeType;
- (void)onAudioDeviceInterrupted:(BOOL)interrupt;
- (void)onAudioFileState:(AoqAudioFileState * _Nonnull)state;
- (void)onVideoDeviceStateChanged:(AoqVideoDeviceState * _Nonnull)state;
- (void)onDataMsg:(AoqDataMsg * _Nonnull)msg;
AoqAudioFrameDelegate (@optional)
- (void)onCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onProcessCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPublishAudioFrame:(AoqTrackType)trackType frame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPlaybackAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
AoqVideoFrameDelegate (@optional)
- (BOOL)onCapturedVideoFrame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onPreEncodeVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onRemoteVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
Types de données et énumérations
AoqErrorCode
Valeur d'énumération | Valeur | Description |
|---|---|---|
AoqErrorCodeOK | 0 | Succès |
AoqErrorCodeParamInvalid | 1 | Paramètre invalide |
AoqErrorCodeStateInvalid | 2 | État invalide |
AoqErrorCodeUnSupport | 3 | Opération non prise en charge |
AoqErrorCodeAudio | 100 | Erreur audio générique |
AoqErrorCodeAudioExternalBufferFull | 110 | Tampon audio externe plein |
AoqErrorCodeAudioDevice | 120 | Erreur générique du périphérique audio |
AoqErrorCodeAudioDeviceRecordingAuthFailed | 121 | Permission d'enregistrement non accordée |
AoqErrorCodeAudioDeviceRecordingOccupied | 122 | Périphérique d'enregistrement en cours d'utilisation |
AoqErrorCodeAudioDeviceRecordingBackgroundStart | 123 | Échec du démarrage de l'enregistrement en arrière-plan |
AoqErrorCodeAudioDeviceRecordingStartFail | 124 | Échec du démarrage de l'enregistrement |
AoqErrorCodeAudioDevicePlayoutOccupied | 125 | Périphérique de lecture en cours d'utilisation |
AoqErrorCodeAudioDevicePlayoutBackgroundStart | 126 | Échec du démarrage de la lecture en arrière-plan |
AoqErrorCodeAudioDevicePlayoutStartFail | 127 | Échec du démarrage de la lecture |
AoqErrorCodeAudioDeviceEarpieceRequiresVoipMode | 128 | L'écouteur nécessite le mode VoIP |
AoqErrorCodeVideo | 200 | Erreur vidéo générique |
AoqErrorCodeVideoExternalBufferFull | 210 | Tampon vidéo externe plein |
AoqErrorCodeVideoExternalCaptureNotEnabled | 211 | Capture vidéo externe non activée |
AoqErrorCodeVideoExternalEncoderNotEnabled | 212 | Encodeur vidéo externe non activé |
AoqErrorCodeVideoDevice | 220 | Erreur générique du périphérique vidéo |
AoqErrorCodeVideoDeviceCameraOpenFail | 221 | Échec de l'ouverture de la caméra |
AoqErrorCodeVideoDeviceCameraAuthFailed | 222 | Permission de la caméra non accordée |
AoqErrorCodeVideoDeviceCameraOccupied | 223 | Caméra en cours d'utilisation |
AoqErrorCodeVideoDeviceCameraRunningError | 224 | Erreur d'exécution de la caméra |
AoqErrorCodeVideoCodec | 230 | Erreur générique du codec vidéo |
AoqErrorCodeVideoCodecEncoderInitFail | 231 | Échec de l'initialisation de l'encodeur vidéo |
AoqErrorCodeVideoRender | 240 | Erreur générique de rendu vidéo |
AoqErrorCodeVideoRenderCreateFail | 241 | Échec de la création du moteur de rendu vidéo |
AoqErrorCodeVideoRenderDrawError | 242 | Erreur de dessin du rendu vidéo |
AoqTrackType
Valeur d'énumération | Valeur | Description |
|---|---|---|
AoqTrackTypeAudio | 0 | Piste audio |
AoqTrackTypeVideo | 1 | Piste vidéo |
AoqTrackTypeData | 2 | Piste de messagerie de données |
AoqConnectConfig
Champ | Type | Description |
|---|---|---|
token | NSString * | Jeton d'authentification |
sid | NSString * | ID de session |
certFingerprint | NSString * | Empreinte du certificat serveur |
relayEndpoints | NSArray<AoqRelayEndpoint > | Liste des endpoints Relay |
workspaceIdHash | NSString * | Hachage de l'ID de l'espace de travail |
publishTracks | NSArray<AoqTrackParam > | Pistes locales à publier |
subscribeTracks | NSArray<AoqTrackParam > | Pistes distantes auxquelles s'abonner |
AoqAudioPlaybackConfig
Champ | Type | Par défaut | Description |
|---|---|---|---|
isVoipMode | BOOL | NO | YES : active le mode VoIP (AEC matériel) ; s'applique aux appareils mobiles |
isDefaultSpeaker | BOOL | YES | YES : haut-parleur par défaut ; NO : écouteur |
isExternal | BOOL | NO | YES : sortie audio externe |
channel | NSInteger | 1 | Nombre de canaux : 1 ou 2 |
Types de statistiques
AoqStats
Champ | Type | Description |
|---|---|---|
audioPublishStats | NSArray<AoqAudioPublishStats > | Statistiques de publication audio |
videoPublishStats | NSArray<AoqVideoPublishStats > | Statistiques de publication vidéo |
dataMsgPublishStats | NSArray<AoqDataMsgPublishStats > | Statistiques de publication des messages de données |
audioSubscribeStats | NSArray<AoqAudioSubscribeStats > | Statistiques d'abonnement audio |
videoSubscribeStats | NSArray<AoqVideoSubscribeStats > | Statistiques d'abonnement vidéo |
dataMsgSubscribeStats | NSArray<AoqDataMsgSubscribeStats > | Statistiques d'abonnement aux messages de données |
networkStats | AoqNetworkStats * | Statistiques réseau |
AoqNetworkStats
Champ | Type | Description |
|---|---|---|
sendBitrate | NSUInteger | Débit binaire d'envoi (bps) |
sendBytes | NSUInteger | Octets envoyés cumulés |
recvBitrate | NSUInteger | Débit binaire de réception (bps) |
recvBytes | NSUInteger | Octets reçus cumulés |
loss | NSUInteger | Taux de perte de paquets |
rtt | NSUInteger | Temps d'aller-retour (ms) |
AoqAudioPublishStats
trackType / bitrate / bytes / encodeVolume
AoqVideoPublishStats
trackType / bitrate / bytes / encodeFps
AoqAudioSubscribeStats
trackType / bitrate / bytes / playVolume
AoqVideoSubscribeStats
trackType / bitrate / bytes / decodeFps / renderFps
AoqDataMsgPublishStats / AoqDataMsgSubscribeStats
trackType / bitrate / bytes
Différences clés avec le SDK Android
Différence | iOS | Android |
|---|---|---|
Motif de rappel | Délégué | Écouteur de classe abstraite |
Contrôle AVAudioSession |
| Aucun équivalent |
Rappel de focus audio | Aucun (utilise |
|
Format de pixel vidéo | Prend en charge CVPixelBuffer sans copie | Prend en charge TextureOES / Texture2D |
Vue de rendu vidéo | UIView | SurfaceView / TextureView |
Configuration du mode Bluetooth | Pas de |
|
Réécriture du rappel de trame vidéo | I420 / CVPixelBuffer | I420 |