ApsaraVideo VOD memungkinkan Anda menghapus file media untuk mengelola biaya penyimpanan atau menghapus konten yang telah kedaluwarsa atau tidak sesuai. Topik ini menjelaskan berbagai jenis operasi penghapusan beserta dampaknya, serta memberikan panduan tentang cara menghapus file media secara aman dan efisien menggunakan Konsol, API, atau software development kit (SDK).
Cara kerja
Sebelum menghapus file, pahami terlebih dahulu mekanisme operasi tersebut dan risiko potensialnya guna mencegah kehilangan data yang tidak dapat dikembalikan.
Semua operasi penghapusan bersifat fisik. File dan informasi aset medianya terkait akan dihapus secara permanen dan tidak dapat dipulihkan. Untuk membuat cadangan file Anda, lihat Migrasi sumber daya ApsaraVideo VOD.
Jenis penghapusan | Konten yang dihapus | Dampak pada pemutaran |
Audio atau video lengkap | File sumber, semua aliran yang telah dikodekan ulang, gambar mini, dan sprite. | Video atau audio tidak dapat diputar. |
Aliran audio dan video | File hasil transkoding dengan definisi tertentu. | Definisi tertentu tidak dapat diputar. Hal ini dapat menyebabkan error pada pemutar. |
File sumber | File asli yang diunggah. | Versi kualitas asli tidak dapat diputar. |
Gambar | File gambar. | Video tidak dapat ditampilkan sebagai gambar mini. |
Setelah Anda menghapus file media dari ApsaraVideo VOD, cache pada CDN points of presence (POPs) tidak secara otomatis di-purge. Anda dapat menggunakan fitur purge di Konsol ApsaraVideo VOD untuk menghapus data lama dari CDN POPs. Untuk informasi selengkapnya, lihat Refresh dan pra-ambil.
Secara default, Anda tidak dapat menghapus file sumber audio atau video yang diunggah untuk distribusi tanpa transkoding karena file tersebut digunakan untuk pemutaran kualitas asli. Untuk menghapus file tersebut, panggil operasi DeleteMezzanines dan tentukan parameter
Force.
Skenario 1: Hapus file menggunakan Konsol
Konsol menyediakan antarmuka yang intuitif dan cocok untuk menghapus jumlah file yang terbatas.
Masuk ke Konsol ApsaraVideo VOD.
Pada panel navigasi di sebelah kiri, pilih Media Assets, lalu klik Audio/Video, Image, atau Short Video Material.
Pada halaman manajemen, temukan file yang ingin Anda hapus, lalu klik Delete di kolom Actions.

Skenario 2: Hapus file menggunakan API atau SDK
Menghapus file media melalui API atau SDK memberikan fleksibilitas dan kemampuan otomatisasi yang lebih tinggi, sehingga lebih direkomendasikan untuk mengelola banyak aset media di lingkungan produksi.
Pastikan Anda telah menginstal SDK untuk bahasa pemrograman yang diinginkan dan menginisialisasi client. Untuk informasi selengkapnya, lihat Server-side SDKs.
Saat memanggil operasi API untuk menghapus file media, perhatikan batas permintaan per detik (QPS). Jika batas QPS terlampaui, panggilan API akan gagal. Untuk informasi selengkapnya, lihat Throttling.
Hapus satu atau beberapa video lengkap
Ini adalah skenario paling umum. Panggil operasi DeleteVideo untuk menghapus semua sumber daya yang terkait dengan video, seperti file sumber, aliran hasil transkoding, dan snapshot. Kode berikut memberikan contohnya.
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'):
"""
Hapus satu atau beberapa video secara aman.
Args:
video_ids: ID video. Pisahkan beberapa ID dengan koma.
access_key: ID AccessKey.
secret_key: Rahasia AccessKey.
region: Wilayah.
Returns:
dict: Kamus yang menunjukkan apakah panggilan berhasil dan mencakup pesan error apa pun.
"""
try:
# 1. Inisialisasi client.
client = AcsClient(access_key, secret_key, region)
# 2. Buat permintaan penghapusan.
request = DeleteVideoRequest.DeleteVideoRequest()
request.set_VideoIds(video_ids)
# 3. Jalankan penghapusan.
response = client.do_action_with_exception(request)
result = json.loads(response)
print(f"Permintaan penghapusan untuk video {video_ids} telah dikirim. RequestID: {result.get('RequestId')}")
return {"success": True, "data": result}
except Exception as e:
error_msg = str(e)
print(f"Penghapusan gagal: {error_msg}")
# Penanganan error umum
if "InvalidVideo.NotFound" in error_msg:
return {"success": False, "error": "Video tidak ditemukan atau telah dihapus."}
elif "Forbidden.IllegalStatus" in error_msg:
return {"success": False, "error": "Video tidak dapat dihapus karena statusnya saat ini. Mungkin sedang dalam proses transkoding."}
elif "Throttling" in error_msg:
return {"success": False, "error": "Permintaan terlalu sering. Silakan coba lagi nanti."}
else:
return {"success": False, "error": f"Error tidak dikenal: {error_msg}"}
# Contoh penggunaan
# result = delete_video_safely(
# video_ids="your-video-id-1,your-video-id-2",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )Hapus aliran video dengan definisi tertentu
Panggil operasi DeleteStream. Fitur ini berguna ketika Anda hanya perlu menghapus definisi tertentu namun tetap ingin mempertahankan definisi lainnya. Kode berikut memberikan contohnya.
pythonfrom aliyunsdkvod.request.v20170321 import DeleteStreamRequest
# ... (Gunakan kembali inisialisasi AcsClient dari contoh sebelumnya)
def delete_specific_stream(video_id: str, job_ids: str, access_key: str, secret_key: str):
"""
Hapus aliran hasil transkoding dengan definisi tertentu.
Args:
video_id: ID video.
job_ids: Daftar ID pekerjaan transkoding. Pisahkan beberapa ID dengan koma.
"""
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"Aliran definisi tertentu untuk video {video_id} telah dihapus.")
return json.loads(response)
except Exception as e:
print(f"Gagal menghapus aliran: {e}")
raise
# Contoh: Misalkan Anda telah memperoleh JobId 'job-id-for-4k' untuk definisi '4K' dengan memanggil 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"
# )Hapus paksa file sumber
Panggil operasi DeleteMezzanines. Operasi ini hanya menghapus file asli yang diunggah, tetapi mempertahankan file aliran hasil transkoding. Kode berikut memberikan contohnya.
Menghapus file sumber menyebabkan pemutaran kualitas asli tidak tersedia. Setelah dihapus, Anda tidak dapat melakukan transkoding ulang pada video tersebut. Gunakan operasi ini hanya setelah memastikan bahwa file sumber tidak lagi diperlukan.
pythonfrom aliyunsdkvod.request.v20170321 import DeleteMezzaninesRequest
# ... (Gunakan kembali inisialisasi AcsClient dari contoh sebelumnya)
def force_delete_source_file(video_ids: str, access_key: str, secret_key: str):
"""
Hapus paksa file sumber.
Args:
video_ids: Daftar ID video. Pisahkan beberapa ID dengan koma.
"""
try:
client = AcsClient(access_key, secret_key, 'cn-shanghai')
request = DeleteMezzaninesRequest.DeleteMezzaninesRequest()
request.set_VideoIds(video_ids)
request.set_Force(True) # Bendera hapus paksa
response = client.do_action_with_exception(request)
print("File sumber berhasil dihapus secara paksa.")
print("Segera purge cache CDN untuk mencegah error 404 saat pemutaran kualitas asli.")
return json.loads(response)
except Exception as e:
print(f"Penghapusan paksa gagal: {e}")
raise
# force_delete_source_file(
# video_ids="your-video-id",
# access_key="your-access-key",
# secret_key="your-secret-key"
# )Hapus file gambar
Untuk menghapus gambar yang diunggah atau tangkapan video, panggil operasi DeleteImage.