当需要管理存储成本、清理过期或违规内容时,可以使用视频点播的删除功能。本文介绍不同类型的删除操作及其影响,并提供通过控制台和 API/SDK 安全、高效地删除媒体文件的具体指引。
工作原理
在执行删除操作前,请务必理解其工作机制与潜在风险,以避免不可逆的数据丢失。
所有删除操作均为物理删除,文件和关联的媒资信息将被永久移除,无法恢复。若需备份请参考点播资源迁移。
删除类型 | 删除内容 | 播放影响 |
完整音视频 | 源文件、所有转码流、封面截图、雪碧图。 | 无法播放。 |
音视频流 | 指定清晰度的转码文件。 | 该清晰度无法播放,可能导致播放器报错。 |
源文件 | 原始上传文件 | 原画无法播放。 |
图片 | 图片文件。 | 作为封面的视频将无法显示封面。 |
删除点播媒体文件后,CDN节点的缓存不会被自动清除,可通过点播控制台的刷新功能,来清除CDN节点上的垃圾数据,详情请参见刷新预热。
删除音视频源文件时,若文件采用不转码即分发方式上传(作为原画播放流),则默认不可删除;如需删除,需通过调用批量删除音视频源文件并指定
Force参数。
场景一:通过控制台删除
控制台提供了直观的界面,适用于删除少量文件。
登录视频点播控制台。
在左侧导航栏选择媒资库,单击音/视频、图片或短视频素材,进入管理页面。
在管理页面,单击目标文件操作列的删除。

场景二:通过API/SDK删除
通过API/SDK删除媒体文件提供了更高的灵活性和自动化能力,是生产环境中管理大量媒资的首选方案。
删除单个或多个完整视频
此操作为最常用场景,通过删除完整视频接口实现,会删除视频的所有相关资源,包括源文件、转码流和截图。代码示例如下:
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'):
"""
安全删除一个或多个视频。
Args:
video_ids: 视频ID,多个ID用逗号分隔。
access_key: AccessKey ID。
secret_key: AccessKey Secret。
region: 地域。
Returns:
dict: 包含成功与否及错误信息的字典。
"""
try:
# 1. 初始化客户端
client = AcsClient(access_key, secret_key, region)
# 2. 创建删除请求
request = DeleteVideoRequest.DeleteVideoRequest()
request.set_VideoIds(video_ids)
# 3. 执行删除
response = client.do_action_with_exception(request)
result = json.loads(response)
print(f"视频 {video_ids} 删除请求提交成功。RequestID: {result.get('RequestId')}")
return {"success": True, "data": result}
except Exception as e:
error_msg = str(e)
print(f"删除失败: {error_msg}")
# 常见错误处理
if "InvalidVideo.NotFound" in error_msg:
return {"success": False, "error": "视频不存在或已被删除。"}
elif "Forbidden.IllegalStatus" in error_msg:
return {"success": False, "error": "视频状态不允许删除,可能正在转码中。"}
elif "Throttling" in error_msg:
return {"success": False, "error": "请求过于频繁,请稍后重试。"}
else:
return {"success": False, "error": f"未知错误: {error_msg}"}
# 使用示例
# result = delete_video_safely(
# video_ids="your-video-id-1,your-video-id-2",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )删除指定清晰度的视频流
通过删除媒体流接口实现,当仅需移除某个清晰度,但保留其他清晰度时,可使用此功能。代码示例如下:
pythonfrom aliyunsdkvod.request.v20170321 import DeleteStreamRequest
# ... (复用上面的 AcsClient 初始化)
def delete_specific_stream(video_id: str, job_ids: str, access_key: str, secret_key: str):
"""
删除指定清晰度的转码流。
Args:
video_id: 视频ID。
job_ids: 转码任务ID列表,多个用逗号分隔。
"""
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"视频 {video_id} 的指定清晰度流删除成功。")
return json.loads(response)
except Exception as e:
print(f"删除流失败: {e}")
raise
# 示例:假设已通过 GetPlayInfo 获得 '4K' 清晰度的 JobId 为 'job-id-for-4k'
# delete_specific_stream(
# video_id="your-video-id",
# job_ids="job-id-for-4k",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )强制删除源文件
通过批量删除音视频源文件接口实现,此操作仅删除原始上传文件,保留转码后的流文件。代码示例如下:
删除源文件将导致原画无法播放,且删除后无法对该视频再次发起转码。请确认不再需要源文件后使用。
pythonfrom aliyunsdkvod.request.v20170321 import DeleteMezzaninesRequest
# ... (复用上面的 AcsClient 初始化)
def force_delete_source_file(video_ids: str, access_key: str, secret_key: str):
"""
强制删除源文件。
Args:
video_ids: 视频ID列表,多个用逗号分隔。
"""
try:
client = AcsClient(access_key, secret_key, 'cn-shanghai')
request = DeleteMezzaninesRequest.DeleteMezzaninesRequest()
request.set_VideoIds(video_ids)
request.set_Force(True) # 强制删除标识
response = client.do_action_with_exception(request)
print("源文件强制删除成功。")
print("请立即刷新CDN缓存,避免原画播放出现404错误。")
return json.loads(response)
except Exception as e:
print(f"强制删除失败: {e}")
raise
# force_delete_source_file(
# video_ids="your-video-id",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )删除图片文件
用于删除上传的图片或视频截图,通过删除图片或视频截图接口实现。