當需要管理儲存成本、清理到期或違規內容時,可以使用ApsaraVideo for VOD的刪除功能。本文介紹不同類型的刪除操作及其影響,並提供通過控制台和 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"
# )刪除圖片檔案
用於刪除上傳的圖片或視頻截圖,通過刪除圖片或視頻截圖介面實現。