O ApsaraVideo VOD permite excluir arquivos de mídia para gerenciar custos de armazenamento ou remover conteúdo expirado ou não compatível. Este tópico descreve os diferentes tipos de operações de exclusão e seus impactos, além de fornecer instruções sobre como excluir arquivos de mídia com segurança e eficiência pelo console, API ou kit de desenvolvimento de software (SDK).
Como funciona
Antes de excluir arquivos, entenda o funcionamento da operação e seus riscos potenciais para evitar perda irreversível de dados.
Todas as operações de exclusão são físicas. O sistema remove permanentemente os arquivos e as informações de ativos de mídia associadas, sem possibilidade de recuperação. Para fazer backup dos seus arquivos, consulte Migrar recursos do ApsaraVideo VOD.
|
Tipo de exclusão |
Conteúdo excluído |
Impacto na reprodução |
|
Áudio ou vídeo completo |
Arquivo source, todos os streams transcodificados, miniaturas e sprites. |
Impossibilidade de reproduzir o vídeo ou áudio. |
|
Streams de áudio e vídeo |
Arquivo transcodificado de uma definição específica. |
Impossibilidade de reproduzir a definição específica. Pode causar erro no player. |
|
Arquivo source |
Arquivo original enviado. |
Impossibilidade de reproduzir a versão com qualidade original. |
|
Imagem |
Arquivo de imagem. |
Impossibilidade de exibir um vídeo como miniatura. |
Após a exclusão de um arquivo de mídia do ApsaraVideo VOD, o cache nos pontos de presença (POPs) da CDN não é limpo automaticamente. Use o recurso de limpeza no console do ApsaraVideo VOD para remover dados obsoletos dos POPs da CDN. Para obter mais informações, consulte Atualizar e pré-carregar.
Por padrão, não é possível excluir um arquivo source de áudio ou vídeo enviado para distribuição sem transcodificação, pois ele é usado para reprodução com qualidade original. Para excluir o arquivo, chame a operação DeleteMezzanines e especifique o parâmetro
Force.
Cenário 1: Exclua arquivos pelo console
O console oferece uma interface intuitiva, ideal para excluir poucos arquivos.
Faça login no console do ApsaraVideo VOD.
No painel de navegação à esquerda, escolha Media Assets e clique em Audio/Video, Image ou Short Video Material.
-
Na página de gerenciamento, localize o arquivo desejado e clique em Delete na coluna Actions.

Cenário 2: Exclua arquivos via API ou SDK
Excluir arquivos de mídia pela API ou pelo SDK proporciona maior flexibilidade e automação. Esta é a solução recomendada para gerenciar muitos ativos de mídia em ambientes de produção.
Verifique se você instalou o SDK para a linguagem desejada e inicializou o cliente. Para obter mais informações, consulte SDKs do lado do servidor.
Ao chamar uma operação de API para excluir arquivos de mídia, observe o limite de consultas por segundo (QPS). Se o limite de QPS for excedido, a chamada de API falhará. Para obter mais informações, consulte Limitação de taxa.
Exclua um ou mais vídeos completos
Este é o cenário mais comum. Chame a operação DeleteVideo para excluir todos os recursos relacionados a um vídeo, como arquivo source, streams transcodificados e snapshots. O código a seguir fornece um exemplo.
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"
# )
Exclua streams de vídeo de uma definição específica
Chame a operação DeleteStream. Use este recurso quando precisar remover apenas uma definição específica e manter as demais. O código a seguir fornece um exemplo.
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"
# )
Forçar exclusão de um arquivo source
Chame a operação DeleteMezzanines. Esta operação exclui apenas o arquivo original enviado, mas mantém os arquivos de stream transcodificados. O código a seguir fornece um exemplo.
A exclusão do arquivo source torna a reprodução com qualidade original indisponível. Após a exclusão, não é possível transcodificar o vídeo novamente. Use esta operação somente após confirmar que o arquivo source não é mais necessário.
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"
# )
Exclua arquivos de imagem
Para excluir imagens enviadas ou snapshots de vídeo, chame a operação DeleteImage.