全部產品
Search
文件中心

ApsaraVideo VOD:刪除媒體檔案

更新時間:Feb 11, 2026

當需要管理儲存成本、清理到期或違規內容時,可以使用ApsaraVideo for VOD的刪除功能。本文介紹不同類型的刪除操作及其影響,並提供通過控制台和 API/SDK 安全、高效地刪除媒體檔案的具體指引。

工作原理

在執行刪除操作前,請務必理解其工作機制與潛在風險,以避免無法復原的資料丟失。

警告

所有刪除操作均為物理刪除,檔案和關聯的媒資資訊將被永久移除,無法恢複。若需備份請參考點播資源遷移

刪除類型

刪除內容

播放影響

完整音視頻

源檔案、所有轉碼流、封面截圖、雪碧圖。

無法播放。

音視頻流

指定清晰度的轉碼檔案。

該清晰度無法播放,可能導致播放器報錯。

源檔案

原始上傳檔案

原畫無法播放。

圖片

圖片檔案。

作為封面的視頻將無法顯示封面。

說明
  • 刪除點播媒體檔案後,CDN節點的緩衝不會被自動清除,可通過點播控制台的重新整理功能,來清除CDN節點上的垃圾資料,詳情請參見重新整理預熱

  • 刪除音視頻源檔案時,若檔案採用不轉碼即分發方式上傳(作為原畫播放流),則預設不可刪除;如需刪除,需通過調用大量刪除音視頻源檔案並指定Force參數。

情境一:通過控制台刪除

控制台提供了直觀的介面,適用於刪除少量檔案。

  1. 登入ApsaraVideo for VOD控制台

  2. 在左側導覽列選擇媒資庫,單擊音/視頻圖片短視頻素材,進入管理頁面。

  3. 在管理頁面,單擊目標檔案操作列的刪除。

    刪除

情境二:通過API/SDK刪除

通過API/SDK刪除媒體檔案提供了更高的靈活性和自動化能力,是生產環境中管理大量媒資的首選方案。

說明
  • 請確保已安裝相應語言的SDK,並已初始化用戶端。詳情請參見服務端SDK

  • 調用API進行刪除媒體檔案時,需注意QPS限制。超出QPS限制時,API將調用報錯,詳情請參見流控資訊

刪除單個或多個完整視頻

此操作為最常用情境,通過刪除完整視頻介面實現,會刪除視頻的所有相關資源,包括源檔案、轉碼流和截圖。程式碼範例如下:

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"
# )

刪除圖片檔案

用於刪除上傳的圖片或視頻截圖,通過刪除圖片或視頻截圖介面實現。