Enregistrez les flux audio et vidéo des canaux ARTC et stockez les enregistrements sur Object Storage Service ou ApsaraVideo VOD pour la lecture, l'archivage ou la conformité.
Présentation des fonctionnalités
L'enregistrement cloud capture les flux audio et vidéo des canaux ARTC via des tâches basées sur l'API. Principales fonctionnalités :
Modes d'enregistrement polyvalents : Enregistrez chaque utilisateur individuellement (enregistrement individuel) ou combinez plusieurs utilisateurs dans un seul fichier (enregistrement composite).
Abonnement flexible : Enregistrez des utilisateurs spécifiques ou des types de flux (caméra ou partage d'écran) au sein d'un canal.
Sortie personnalisable : Dispositions composites personnalisées, images d'arrière-plan et formats de sortie (MP4, MP3, HLS).
Stockage cloud fiable : Téléverse automatiquement les enregistrements vers OSS ou ApsaraVideo VOD.
Prérequis
-
Activez les services requis : Activez ARTC. Selon votre méthode de stockage :
-
Stockage sur OSS : Activez OSS et créez un bucket. Des frais de stockage s'appliquent. Frais de stockage.
RemarqueAccordez les autorisations de service : ARTC nécessite un accès en écriture à votre bucket OSS, accordé automatiquement lors de l'activation. Si cette autorisation est révoquée, cliquez sur Grant Cloud Resource Access Authorization pour la restaurer.
Stockage sur VOD : Activez ApsaraVideo VOD et gérez votre bucket de stockage. Des frais de stockage s'appliquent. Facturation des services de base.
ImportantCohérence des régions : Le bucket de stockage et le point de terminaison de l'API doivent se trouver dans la même région.
Génération des fichiers d'enregistrement : Une fois l'enregistrement terminé, les fichiers sont sauvegardés dans le bucket spécifié dans votre requête API.
-
-
Comprenez la facturation :
L'enregistrement cloud est activé par défaut ; aucune activation distincte n'est requise.
L'enregistrement cloud est une fonctionnalité payante. Tarifs de l'enregistrement cloud.
Concepts clés
Modes d'enregistrement
Choisissez un mode d'enregistrement adapté à votre cas d'utilisation.
-
Enregistrement individuel
Enregistre l'audio et la vidéo de chaque utilisateur dans un fichier distinct. Idéal pour l'analyse individuelle ou le post-traitement.
Par défaut, les paramètres d'enregistrement correspondent au flux d'origine.
Si un flux est interrompu, le système insère du silence, un écran noir ou la dernière image pour maintenir la continuité.
-
Enregistrement composite
Mélange l'audio et la vidéo de plusieurs utilisateurs dans un seul fichier. Convient aux scénarios multipersonnes tels que les réunions et l'enseignement en ligne.
Personnalisez la résolution vidéo de sortie, le débit binaire et la fréquence d'images.
Dispositions vidéo personnalisées (jusqu'à 17 volets) et images d'arrière-plan du canevas.
Si le flux d'un utilisateur est interrompu, son volet affiche une image d'arrière-plan prédéfinie ou un écran noir.
Cycle de vie des tâches d'enregistrement
Une tâche s'arrête automatiquement après 72 heures d'exécution (cycle de vie maximal), quel que soit son statut.
L'arrêt d'une tâche déclenche un rappel d'arrêt. Utilisez-le pour confirmer la fin de la tâche et interroger les fichiers enregistrés.
-
Si une tâche reste inactive plus longtemps que
MaxIdleTime, elle s'arrête automatiquement. Plage valide : 10 à 14 400 secondes (4 heures). Valeur par défaut : 300 secondes.En mode composite, une tâche est considérée comme inactive lorsque tous les flux abonnés cessent d'être publiés.
En mode individuel, chaque flux est suivi indépendamment. Un flux cesse d'être enregistré après l'écoulement de son propre
MaxIdleTime. La tâche ne s'arrête qu'une fois que tous les flux abonnés ont expiré.
Génération et stockage des fichiers
Formats de fichiers d'enregistrement
Audio uniquement : Prend en charge les formats MP3 et AAC.
Audio et vidéo : Prend en charge les formats MP4 et HLS.
Un fichier HLS est toujours généré, même s'il n'est pas spécifié dans la requête.
Chaque format de fichier supplémentaire entraîne des frais distincts.
Règles de nommage des fichiers
Les enregistrements sont stockés dans un répertoire TaskId situé dans le chemin OSS ou ApsaraVideo VOD que vous avez spécifié. Personnalisez les noms de fichiers avec des variables prédéfinies.
Variables de nom de fichier :
|
Paramètre |
Description |
|
|
L'ID de l'application. |
|
|
L'ID du canal. |
|
|
L'ID de l'utilisateur. Valide uniquement pour l'enregistrement individuel. |
|
|
Le mode d'enregistrement. 0 : individuel, 1 : composite. |
|
|
Le type de flux. A : audio, V : vidéo, AV : audio et vidéo. |
|
|
La source vidéo. C : caméra, S : partage d'écran. |
|
|
L'heure de début de l'enregistrement en UTC, en millisecondes. |
|
|
Le numéro d'index du fragment HLS. |
Noms de fichiers par défaut :
-
Enregistrement individuel :
Format HLS :
{AppId}_{ChannelId}_{UserId}_{StartTime}_{Sequence}Autres formats :
{AppId}_{ChannelId}_{UserId}_{StartTime}
-
Enregistrement composite :
Format HLS :
{AppId}_{ChannelId}_{StartTime}_{Sequence}Autres formats :
{AppId}_{ChannelId}_{StartTime}
Si vous vous abonnez à différentes valeurs de
StreamTypeou deSourceTypepour le mêmeUserId,{SourceType}est ajouté après{UserId}dans le nom de fichier par défaut.Lorsqu'un fichier est nommé
filename, le chemin final estTaskId/filename.M3U8. L'identifiantTaskId, généré au démarrage de la tâche, est automatiquement ajouté au début du chemin de stockage.
Stratégie de découpage des fichiers
Le découpage des fichiers divise un enregistrement en plusieurs fichiers. Définissez la durée maximale du fragment avec MaxFileDuration : 180 à 7 200 secondes (par défaut : 7 200 secondes / 2 heures).
Procédure
Le workflow d'enregistrement cloud est entièrement piloté par API. Les étapes suivantes couvrent les opérations principales avec des exemples de paramètres.
Étape 1 : Démarrer une tâche d'enregistrement
Appelez l'API Démarrer une tâche d'enregistrement cloud ARTC. Configurez les paramètres d'abonnement, d'enregistrement et de stockage dans la requête.
Paramètres clés :
Spécifiez le mode d'enregistrement : Choisissez individuel (
RecordMode: 0) ou composite (RecordMode: 1).Définissez les cibles d'abonnement : Dans
SubscribeParams, listez les valeursUserIdetStreamTypeà enregistrer.Définissez le format de sortie : Dans
RecordParams, définissez audio uniquement (StreamType: 1) ou audio et vidéo (StreamType: 0).Configurez le stockage : Dans
StorageParams, spécifiez OSS ou ApsaraVideo VOD et fournissez le bucket et le point de terminaison.
Exemples de scénarios
Enregistrement individuel audio uniquement
Scénario : Dans le canal myRoom, il y a trois utilisateurs : userA, userB et userC. Enregistrez les flux audio de userA et userB individuellement, sans enregistrer userC. Générez également des fichiers M3U8 et MP3.
Résultats de l'enregistrement : Les fichiers enregistrés sont stockés dans le bucket Object Storage Service (OSS) spécifié, my-bucket. Les fichiers au format M3U8 sont stockés dans le chemin hls/{taskId}, et les fichiers au format MP3 sont stockés dans le chemin mp3/{taskId}.
Exemple de paramètres :
{
"AppId": "my-app-id", // The AppId used for streaming
"ChannelId": "myRoom", // The channel to record
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // The user to be recorded
"StreamType": 1 // Subscribe to audio-only stream
},
{
"UserId": "userB", // The user to be recorded
"StreamType": 1 // Subscribe to audio-only stream
}
]
},
"RecordParams": {
"RecordMode": 0, // Specify individual recording mode
"StreamType": 1, // Specify audio-only output format
"MaxFileDuration": 180 // Set the file slice duration to 180 seconds (3 minutes)
},
"StorageParams": {
"StorageType": 1, // Specify storing to OSS
"FileInfo": [ // Generate M3U8 and MP3 files, storing them under "hls" and "mp3" paths respectively
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP3",
"FilePathPrefix": [
"mp3"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"NotifyUrl": "http://mytest/callback", // Optional: The URL to receive callback messages
"NotifyAuthKey": "12345678abcdefghikj" // Optional: The authentication key for callback messages
}
Enregistrement individuel audio et vidéo
Scénario : Dans le canal myRoom, il y a trois utilisateurs : userA, userB et userC. Enregistrez les flux audio et vidéo de userA et userB individuellement, sans enregistrer userC. Générez également des fichiers M3U8 et MP4.
Résultats de l'enregistrement : Les fichiers sont sauvegardés dans le bucket OSS spécifié, my-bucket. Les fichiers M3U8 sont stockés dans le chemin hls/{taskId}, et les fichiers MP4 sont stockés dans le chemin mp4/{taskId}.
Exemple de paramètres :
{
"AppId": "my-app-id", // The AppId used for streaming
"ChannelId": "myRoom", // The channel specified for streaming
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // The user to be recorded
"StreamType": 0 // Subscribe to audio and video stream
},
{
"UserId": "userB", // The user to be recorded
"StreamType": 0 // Subscribe to audio and video stream
}
]
},
"RecordParams": {
"RecordMode": 0, // Specify individual recording mode
"StreamType": 0, // Specify audio and video output format
"MaxFileDuration": 180 // Set the file slice duration to 180 seconds (3 minutes)
},
"StorageParams": {
"StorageType": 1, // Specify storing to OSS
"FileInfo": [ // Generate M3U8 and MP4 files, storing them under "hls" and "mp4" paths respectively
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP4",
"FilePathPrefix": [
"mp4"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"NotifyUrl": "http://mytest/callback", // Optional: The URL to receive callback messages
"NotifyAuthKey": "12345678abcdefghikj" // Optional: The authentication key for callback messages
}
Enregistrement composite audio uniquement
Scénario : Dans le canal myRoom, il y a trois utilisateurs : userA, userB et userC. Enregistrez la conversation entre userA et userB sous forme d'un seul flux composite, sans enregistrer userC. Générez également des fichiers M3U8 et MP3.
Résultats de l'enregistrement : Les fichiers sont sauvegardés dans le bucket OSS spécifié, my-bucket. Les fichiers M3U8 sont stockés dans le chemin hls/{taskId}, et les fichiers MP3 sont stockés dans le chemin mp3/{taskId}.
Exemple de paramètres :
{
"AppId": "my-app-id", // The AppId used for streaming
"ChannelId": "myRoom", // The channel specified for streaming
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // The user to be recorded
"StreamType": 1 // Subscribe to audio-only stream
},
{
"UserId": "userB", // The user to be recorded
"StreamType": 1 // Subscribe to audio-only stream
}
]
},
"RecordParams": {
"RecordMode": 1, // Specify composite recording mode
"StreamType": 1, // Specify audio-only output format
"MaxFileDuration": 180 // Set the file slice duration to 180 seconds (3 minutes)
},
"StorageParams": {
"StorageType": 1, // Specify storing to OSS
"FileInfo": [ // Generate M3U8 and MP3 files, storing them under "hls" and "mp3" paths respectively
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP3",
"FilePathPrefix": [
"mp3"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"MixTranscodeParams": {
"AudioBitrate": 128, // Audio bitrate
"AudioChannels": 2, // Number of audio channels
"AudioSampleRate": 44100 // Sample rate
},
"NotifyUrl": "http://mytest/callback", // Optional: The URL to receive callback messages
"NotifyAuthKey": "12345678abcdefghikj" // Optional: The authentication key for callback messages
}
Enregistrement composite audio et vidéo
Scénario : Dans le canal myRoom, il y a trois utilisateurs : userA, userB et userC. Enregistrez les flux audio et caméra de userA et userB, et uniquement le flux audio de userC. Générez également des fichiers M3U8 et MP4.
La vidéo résultante organise les volets pour userA et userB comme suit :
Résultats de l'enregistrement : Les fichiers sont stockés dans le bucket OSS spécifié my-bucket. Les fichiers M3U8 sont stockés dans le chemin hls/{taskId}, et les fichiers MP4 sont stockés dans le chemin mp4/{taskId}.
Exemple de paramètres :
{
"AppId": "my-app-id", // The AppId used for streaming
"ChannelId": "myRoom", // The channel specified for streaming
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // The user to be recorded
"StreamType": 0, // Subscribe to audio and video stream
"SourceType": 0 // Subscribe to camera stream
},
{
"UserId": "userB", // The user to be recorded
"StreamType": 0, // Subscribe to audio and video stream
"SourceType": 0 // Subscribe to camera stream
},
{
"UserId": "userC", // The user to be recorded
"StreamType": 1 // Subscribe to audio-only stream
}
]
},
"RecordParams": {
"RecordMode": 1, // Specify composite recording mode
"StreamType": 0, // Specify audio and video output format
"MaxFileDuration": 180 // Set the file slice duration to 180 seconds (3 minutes)
},
"StorageParams": {
"StorageType": 1, // Specify storing to OSS
"FileInfo": [ // Generate M3U8 and MP4 files, storing them under "hls" and "mp4" paths respectively
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP4",
"FilePathPrefix": [
"mp4"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"MixTranscodeParams": {
"AudioBitrate": 128,
"AudioChannels": 2,
"AudioSampleRate": 44100,
"VideoCodec": "H.264",
"VideoBitrate": 500,
"VideoFramerate": 30,
"VideoGop": 30,
"VideoHeight": 480, // Height of the final video
"VideoWidth": 640 // Width of the final video
},
"MixLayoutParams": {
"UserPanes": [
{
"userId": "userA",
"sourceType": 0,
"height": "1", // Occupies the full height of the canvas
"width": "0.5", // Occupies half the width of the canvas
// Positions the pane at the canvas's top-left corner
"x": "0",
"y": "0"
},
{
"userId": "userB",
"sourceType": 0,
"height": "1", // Occupies the full height of the canvas
"width": "0.5", // Occupies half the width of the canvas
// Positions the pane starting at the canvas's horizontal midpoint
"x": "0.5",
"y": "0"
}
]
},
"NotifyUrl": "http://mytest/callback", // Optional: The URL to receive callback messages
"NotifyAuthKey": "12345678abcdefghikj" // Optional: The authentication key for callback messages
}
Étape 2 (Facultatif) : Mettre à jour une tâche d'enregistrement
Appelez l'API Mettre à jour une tâche d'enregistrement cloud ARTC pour modifier les paramètres d'enregistrement pendant l'exécution d'une tâche.
Mode individuel : Seul l'abonnement peut être mis à jour.
Mode composite : L'abonnement et la disposition peuvent être mis à jour.
Étape 3 : Arrêter une tâche d'enregistrement
Pour terminer l'enregistrement, appelez l'API Arrêter une tâche d'enregistrement cloud ARTC.
Le système traite et téléverse les fichiers d'enregistrement finaux après cet appel. La tâche n'est terminée qu'après réception du rappel stop. Ne supprimez ni ne modifiez les ressources de stockage avant de l'avoir reçu.
Étape 4 : Interroger les tâches et les fichiers
Appelez l'API Interroger les fichiers d'enregistrement cloud ARTC et le statut des tâches pour vérifier le statut des tâches et les fichiers enregistrés.
Seules les tâches existantes peuvent être interrogées. L'API renvoie une erreur pour les tâches inexistantes.
Les informations sur les fichiers d'enregistrement sont disponibles pour les tâches démarrées avec succès et ayant duré moins de 72 heures. L'API renvoie une erreur après 72 heures.