Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Référence de l’API du SDK client AOQ pour iOS

Dernière mise à jour :Nov 06, 2026

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é @protocol

Écouteur de classe abstraite

Contrôle AVAudioSession

setAudioSessionRestriction: (iOS uniquement)

Aucun équivalent

Rappel de focus audio

Aucun (utilise onAudioDeviceInterrupted: à la place)

onAudioDeviceFocusChanged

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 isBTScoMode (géré par l'OS)

AoqCreateConfig.isBTScoMode

Réécriture du rappel de trame vidéo

I420 / CVPixelBuffer

I420