ApsaraVideo VOD vous permet de supprimer des fichiers multimédias afin de maîtriser les coûts de stockage ou de retirer du contenu expiré ou non conforme. Cette rubrique décrit les différents types d'opérations de suppression et leur impact. Elle explique également comment supprimer des fichiers multimédias de manière sûre et efficace à l'aide de la console, de l'API ou du kit SDK (SDK).
Fonctionnement
Avant de supprimer des fichiers, comprenez le fonctionnement de l'opération et ses risques potentiels afin d'éviter toute perte de données irréversible.
Toutes les opérations de suppression sont physiques. Les fichiers et les informations associées aux actifs multimédias sont définitivement supprimés et ne peuvent pas être récupérés. Pour sauvegarder vos fichiers, consultez la rubrique Migration des ressources ApsaraVideo VOD.
|
Type de suppression |
Contenu supprimé |
Impact sur la lecture |
|
Fichier audio ou vidéo complet |
Le fichier source, tous les flux transcodés, les vignettes et les sprites. |
La vidéo ou l'audio ne peut pas être lu. |
|
Flux audio et vidéo |
Le fichier transcodé d'une définition spécifique. |
La définition spécifique ne peut pas être lue. Cela peut provoquer une erreur dans le lecteur. |
|
Fichier source |
Le fichier original téléchargé. |
La version en qualité originale ne peut pas être lue. |
|
Image |
Le fichier image. |
L'image ne s'affiche pas sous forme de vignette. |
Après la suppression d'un fichier multimédia d'ApsaraVideo VOD, le cache des points de présence (POP) CDN n'est pas automatiquement purgé. Utilisez la fonctionnalité de purge dans la console ApsaraVideo VOD pour effacer les données obsolètes des POP CDN. Pour plus d'informations, consultez la rubrique Actualisation et préchargement.
Par défaut, vous ne pouvez pas supprimer un fichier source audio ou vidéo téléchargé pour une distribution sans transcodage, car il sert à la lecture en qualité originale. Pour supprimer le fichier, appelez l'opération DeleteMezzanines et spécifiez le paramètre
Force.
Scénario 1 : Suppression de fichiers via la console
La console offre une interface intuitive et convient à la suppression d'un petit nombre de fichiers.
Connectez-vous à la console ApsaraVideo VOD.
Dans le volet de navigation de gauche, choisissez Media Assets, puis cliquez sur Audio/Video, Image ou Short Video Material.
Sur la page de gestion, repérez le fichier à supprimer, puis cliquez sur Delete dans la colonne Actions.
Scénario 2 : Suppression de fichiers via l'API ou le SDK
La suppression de fichiers multimédias via l'API ou le SDK offre une plus grande flexibilité et permet l'automatisation. Il s'agit de la solution privilégiée pour gérer un grand nombre d'actifs multimédias dans un environnement de production.
Assurez-vous d'avoir installé le SDK pour le langage souhaité et d'avoir initialisé le client. Pour plus d'informations, consultez la rubrique SDK côté serveur.
Lorsque vous appelez une opération d'API pour supprimer des fichiers multimédias, tenez compte de la limite de requêtes par seconde (QPS). Si cette limite est dépassée, l'appel d'API échoue. Pour plus d'informations, consultez la rubrique Limitation du débit.
Suppression d'une ou plusieurs vidéos complètes
Il s'agit du scénario le plus courant. Appelez l'opération DeleteVideo pour supprimer toutes les ressources liées à une vidéo, telles que le fichier source, les flux transcodés et les captures d'écran. Le code suivant en fournit un exemple.
pythonfrom aliyunsdkvod.request.v20170321 import DeleteVideoRequest
from aliyunsdkcore.client import AcsClient
import json
def delete_video_safely(video_ids: str, access_key: str, secret_key: str, region='cn-shanghai'):
"""
Safely delete one or more videos.
Args:
video_ids: The IDs of the videos. Separate multiple IDs with commas.
access_key: The AccessKey ID.
secret_key: The AccessKey secret.
region: The region.
Returns:
dict: A dictionary that indicates whether the call was successful and includes any error messages.
"""
try:
# 1. Initialize the client.
client = AcsClient(access_key, secret_key, region)
# 2. Create a delete request.
request = DeleteVideoRequest.DeleteVideoRequest()
request.set_VideoIds(video_ids)
# 3. Execute the deletion.
response = client.do_action_with_exception(request)
result = json.loads(response)
print(f"Delete request for videos {video_ids} submitted. RequestID: {result.get('RequestId')}")
return {"success": True, "data": result}
except Exception as e:
error_msg = str(e)
print(f"Deletion failed: {error_msg}")
# Common error handling
if "InvalidVideo.NotFound" in error_msg:
return {"success": False, "error": "The video does not exist or has been deleted."}
elif "Forbidden.IllegalStatus" in error_msg:
return {"success": False, "error": "The video cannot be deleted due to its current status. It may be undergoing transcoding."}
elif "Throttling" in error_msg:
return {"success": False, "error": "The request is too frequent. Please try again later."}
else:
return {"success": False, "error": f"Unknown error: {error_msg}"}
# Example usage
# result = delete_video_safely(
# video_ids="your-video-id-1,your-video-id-2",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )
Suppression de flux vidéo d'une définition spécifique
Appelez l'opération DeleteStream. Utilisez cette fonctionnalité lorsque vous souhaitez uniquement supprimer une définition spécifique tout en conservant les autres. Le code suivant en fournit un exemple.
pythonfrom aliyunsdkvod.request.v20170321 import DeleteStreamRequest
# ... (Reuse the AcsClient initialization from the previous example)
def delete_specific_stream(video_id: str, job_ids: str, access_key: str, secret_key: str):
"""
Delete the transcoded stream of a specific definition.
Args:
video_id: The video ID.
job_ids: The list of transcoding job IDs. Separate multiple IDs with commas.
"""
try:
client = AcsClient(access_key, secret_key, 'cn-shanghai')
request = DeleteStreamRequest.DeleteStreamRequest()
request.set_VideoId(video_id)
request.set_JobIds(job_ids)
response = client.do_action_with_exception(request)
print(f"The specified definition stream for video {video_id} was deleted.")
return json.loads(response)
except Exception as e:
print(f"Failed to delete the stream: {e}")
raise
# Example: Assume you have obtained the JobId 'job-id-for-4k' for the '4K' definition by calling GetPlayInfo.
# delete_specific_stream(
# video_id="your-video-id",
# job_ids="job-id-for-4k",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )
Suppression forcée d'un fichier source
Appelez l'opération DeleteMezzanines. Le comportement de suppression varie selon le mode de téléchargement :
Avec transcodage activé : le fichier source (mezzanine) et les flux transcodés sont stockés séparément. La suppression du fichier source conserve les flux transcodés générés, qui restent lisibles normalement.
Sans transcodage : la mezzanine correspond au fichier source lui-même. La suppression du fichier source équivaut à la suppression de la mezzanine, ce qui entraîne la suppression des flux de lecture et les rend irrécupérables.
Le code suivant en fournit un exemple.
Avec transcodage activé : après la suppression du fichier source, la lecture en qualité originale n'est plus disponible, mais les flux transcodés ne sont pas affectés. Vous ne pouvez plus transcoder la vidéo après la suppression.
Sans transcodage : après la suppression du fichier source, la mezzanine (c'est-à-dire le fichier source) est définitivement supprimée. Tous les flux de lecture sont supprimés et ne peuvent pas être récupérés. N'utilisez cette opération qu'après avoir confirmé que le fichier source n'est plus nécessaire.
pythonfrom aliyunsdkvod.request.v20170321 import DeleteMezzaninesRequest
# ... (Reuse the AcsClient initialization from the previous example)
def force_delete_source_file(video_ids: str, access_key: str, secret_key: str):
"""
Force delete the source file.
Args:
video_ids: The list of video IDs. Separate multiple IDs with commas.
"""
try:
client = AcsClient(access_key, secret_key, 'cn-shanghai')
request = DeleteMezzaninesRequest.DeleteMezzaninesRequest()
request.set_VideoIds(video_ids)
request.set_Force(True) # Force delete flag
response = client.do_action_with_exception(request)
print("Source file force deleted successfully.")
print("Purge the CDN cache immediately to prevent 404 errors during original quality playback.")
return json.loads(response)
except Exception as e:
print(f"Force deletion failed: {e}")
raise
# force_delete_source_file(
# video_ids="your-video-id",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )
L'opération DeleteMezzanines supprime uniquement le fichier source vidéo (fichier mezzanine). Une fois l'appel réussi, l'API renvoie une réponse de succès, mais l'espace réservé de la vidéo reste présent dans la liste audio/vidéo de la bibliothèque multimédia. Une réponse d'API réussie ne signifie pas que la vidéo a été retirée de la liste. Pour supprimer complètement une entrée vidéo de la bibliothèque multimédia, appelez plutôt l'opération DeleteVideo, qui supprime la vidéo entière, y compris le fichier source, les fichiers de flux transcodés et les captures d'écran.
Suppression de fichiers image
Pour supprimer des images téléchargées ou des captures d'écran vidéo, appelez l'opération DeleteImage.