Video snapshot adalah gambar yang diambil dari video pada waktu dan dimensi tertentu. Snapshot digunakan untuk membuat aset seperti video cover, sprite, dan thumbnail untuk bilah progres pemutar. Topik ini menjelaskan cara mengirim pekerjaan snapshot di ApsaraVideo Media Processing (MPS).
Ikhtisar
Kasus penggunaan
-
Video cover: Pilih frame pertama dari video pendek di feed sebagai cover-nya, atau ambil frame pada titik waktu tertentu untuk digunakan sebagai cover.
-
Pratinjau video: Buat thumbnail dari konten video Anda. Saat pengguna mengarahkan kursor ke timeline pemutar, pemutar menampilkan thumbnail statis dari titik waktu tersebut. Hal ini membantu pengguna menjelajahi konten video dengan cepat dan melompat ke bagian yang diminati.
-
Moderasi video: Ambil sampel konten video dengan mengambil snapshot untuk ditinjau secara manual atau otomatis.
Fitur
|
Feature |
Description |
Related API parameters |
Console operation |
|
Static snapshot |
Mengambil snapshot JPG dengan ukuran tertentu pada titik waktu tertentu dalam video. Metode pengambilan sampel berikut tersedia:
|
SnapshotConfig |
Supported |
|
Sprite snapshot |
Menyatukan snapshot statis menjadi satu gambar besar (sprite) berdasarkan aturan tata letak. Output dalam format JPG. Hanya mendukung panggilan asinkron. Satu permintaan sprite mengambil beberapa gambar sekaligus, sehingga mengurangi jumlah permintaan dan meningkatkan performa client. |
TileOut, TileOutputFile |
Not supported |
|
WebVTT snapshot |
Menghasilkan file VTT untuk snapshot statis atau sprite, berisi informasi timestamp, URL file, dan koordinat. Untuk menampilkan gambar, Anda harus mengambil dan mengurai file VTT terlebih dahulu. Berguna untuk thumbnail bilah progres pemutar. |
SubOut |
Supported |
|
Keyframe snapshot |
Fitur ini hanya mengambil snapshot pada keyframe. Jika titik waktu yang ditentukan bukan keyframe, layanan akan menggunakan keyframe terdekat sebagai gantinya. |
FrameType |
Supported |
|
First-frame black screen detection |
Anda dapat mengaktifkan deteksi layar hitam untuk frame pertama (time=0). Layar hitam didefinisikan berdasarkan persentase piksel hitam dan ambang batas nilai warna. Layanan memindai 5 detik pertama: jika ditemukan frame non-hitam, frame tersebut diambil. Jika tidak, pekerjaan single-snapshot gagal; pekerjaan multi-snapshot mengambil frame hitam pertama. |
BlackLevel, PixelBlackThreshold |
Supported |
Billing
Anda dikenai biaya untuk panggilan API berdasarkan jumlah snapshot yang dihasilkan. Untuk informasi selengkapnya, lihat Pricing for API calls.
Submit snapshot jobs in the console
Di Konsol MPS, Anda hanya dapat mengirim pekerjaan snapshot dengan menggunakan workflow.
Masuk ke MPS console.
Di bilah navigasi atas, pilih wilayah dari daftar drop-down.
-
Di panel navigasi kiri, pilih .
-
Klik Create Workflow.
-
Konfigurasikan node Input sesuai kebutuhan.
-
Tambahkan node Snapshot. Klik ikon + di sebelah kanan node Input dan pilih Snapshot dari menu drop-down.
-
Klik ikon pena di sebelah kanan node Snapshot untuk mengonfigurasi parameternya.
Parameter
Required
Description
Snapshot Mode
Yes
-
Single: Mengambil satu frame pada waktu tertentu.
-
Multiple: Mengambil frame pada interval tertentu.
-
Average: Mengambil jumlah frame tertentu yang tersebar merata sepanjang video.
Snapshot interval (seconds)
Required for 'Multiple' mode
Masukkan interval antar snapshot dalam satuan detik.
Snapshots
Required for 'Average' mode
Masukkan jumlah snapshot.
Catatan-
Jika parameter ini tidak diatur, snapshot diambil pada interval tertentu hingga akhir video.
-
Jika jumlah snapshot lebih dari 1, snapshot diambil pada interval tertentu hingga jumlah gambar yang ditentukan tercapai.
-
Jika hanya jumlah snapshot yang diatur, snapshot diambil pada interval Durasi Total / Jumlah Snapshot.
Name
Yes
Masukkan nama untuk node ini.
Output Path
Yes
Klik Select. Dari daftar drop-down Bucket, pilih bucket. Bagian Path menampilkan folder yang dibuat di bucket tersebut. Pilih folder sebagai jalur output.
Catatan-
Format jalur single snapshot:
http://bucket.oss-cn-hangzhou.aliyuncs.com/path/{RunId}/{SnapshotTime}.jpg. -
Format jalur multiple atau average snapshot: Memerlukan placeholder {Count}. Jalur harus diakhiri dengan
/{RunId}/{SnapshotTime}/{Count}.jpg.
Start Time
No
Pilih waktu dari daftar drop-down untuk jam, menit, dan detik.
Width x Height
No
Masukkan nilai lebar dan tinggi pada kotak input masing-masing.
Catatan-
Jika Anda membiarkan lebar dan tinggi kosong, resolusi snapshot akan sama dengan video sumber.
-
Jika Anda hanya mengatur lebar atau tinggi, dimensi lainnya akan diskalakan secara otomatis untuk mempertahankan rasio aspek asli.
Generate WebVTT Index File
Optional for Multiple and Average modes
Aktifkan opsi ini untuk menghasilkan file indeks WebVTT.
Set as Thumbnail
No
Aktifkan opsi ini untuk menetapkan gambar yang diambil sebagai cover untuk aset media di perpustakaan. Jika beberapa snapshot diambil, snapshot pertama akan diatur sebagai cover secara default.
Keyframe
No
Aktifkan opsi ini untuk memastikan snapshot hanya diambil pada keyframe. Jika titik waktu yang ditentukan bukan keyframe, keyframe terdekat akan digunakan sebagai gantinya.
Black Screen Detection
Optional for Multiple and Average modes
Aktifkan opsi ini untuk mendeteksi dan melewati frame hitam di awal video. Jika frame non-hitam terdeteksi dalam lima detik pertama, MPS akan mengambil frame non-hitam pertama.
-
-
Klik OK untuk menyelesaikan konfigurasi node snapshot.
-
Klik Save untuk menyelesaikan konfigurasi workflow.
CatatanSetelah workflow dibuat, workflow tersebut akan dipicu secara otomatis ketika file baru yang memenuhi kriteria input diunggah ke jalur yang ditentukan. Untuk informasi selengkapnya tentang cara memicu workflow, lihat Trigger a workflow.
Submit snapshot jobs by API
-
Unggah video ke OSS.
-
Kirim pekerjaan snapshot. Panggil API SubmitSnapshotJob dan konfigurasikan parameter SnapshotConfig untuk mengirim pekerjaan snapshot single sinkron, snapshot single asinkron, sprite, atau snapshot WebVTT. Bagian berikut menunjukkan contoh struktur parameter SnapshotConfig. Untuk informasi selengkapnya, lihat Parameter details.
Synchronous single snapshot
// Ambil satu keyframe pada 100 ms ke dalam video. Lebar gambar output adalah 1280 px, dan tingginya adaptif. Gambar disimpan dalam format JPG. // Mode sinkron tidak mendukung parameter Num atau Interval, dan juga tidak mendukung output sprite atau WebVTT. { "Time":"100", "FrameType":"intra", "Width":"1280", "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.jpg" } }Asynchronous single snapshot
// Ambil satu keyframe di awal video, dengan deteksi layar hitam frame pertama diaktifkan. Gambar output memiliki dimensi yang sama dengan video sumber dan disimpan dalam format JPG. { "Num":"1", "Time":"0", "FrameType":"intra", "BlackLevel":"100", "PixelBlackThreshold":"30", "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.jpg" } }Sampled snapshot
// Mulai dari awal video, ambil satu frame normal setiap 10 detik hingga maksimal 200 frame atau hingga video berakhir. // Deteksi layar hitam frame pertama diaktifkan. Gambar output memiliki dimensi yang sama dengan video sumber dan disimpan sebagai example{Count}.jpg. { "Num":"200", "Time":"0", "Interval":"10", "FrameType":"normal", "BlackLevel":"100", "PixelBlackThreshold":"30", // Untuk mencegah file ditimpa, Anda harus menggunakan placeholder {Count} dalam objek OutputFile untuk snapshot multipel. "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" } }Evenly-spaced snapshot
// Ambil 200 frame normal yang tersebar merata, dari 100 ms hingga akhir video. Gambar output memiliki lebar 1280 px dan tinggi 720 px. Gambar disimpan sebagai example{Count}.jpg. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // Untuk mencegah file ditimpa, Anda harus menggunakan placeholder {Count} dalam objek OutputFile untuk snapshot multipel. "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" } }Sprite
// Ambil 200 frame normal yang tersebar merata, dari 100 ms hingga akhir video. Gambar output memiliki lebar 1280 px dan tinggi 720 px. // Gambar-gambar kecil disatukan menjadi sprite dengan tata letak 10x10. Sprite disimpan di example-bucket002, dan gambar-gambar kecil individual disimpan di example-bucket001. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // Untuk mencegah file ditimpa, Anda harus menggunakan placeholder {Count} dalam objek OutputFile untuk snapshot multipel. "OutputFile":{ "Bucket":"example-bucket001", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" }, "TileOut":{ "Lines":10, "Columns":10, "Padding":"2", "Margin":"4", "Color":"black", "IsKeepCellPic":"true" }, // Untuk mencegah file ditimpa, atur OutputFile dan TileOutputFile ke bucket atau jalur objek yang berbeda. Anda juga harus menggunakan placeholder {TileCount} dalam objek TileOutputFile untuk sprite. "TileOutputFile":{ "Bucket":"example-bucket002", "Location":"oss-cn-hangzhou", "Object":"example{TileCount}.jpg" } }WebVTT snapshot
// Ambil 200 frame normal yang tersebar merata, dari 100 ms hingga akhir video. Gambar output memiliki lebar 1280 px dan tinggi 720 px. File VTT dihasilkan. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // Untuk menghasilkan file VTT, Object harus memiliki ekstensi .vtt. Jalur gambar yang sesuai adalah example/snapshot-tile-{Count}.jpg. "OutputFile": { "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.vtt" }, "Format":"vtt", "SubOut":{ "IsSptFrag":"true" } } -
Untuk pekerjaan snapshot single sinkron, API langsung mengembalikan hasil dalam responsnya. Untuk pekerjaan asinkron, Anda harus mengonfigurasi notifikasi pesan atau melakukan kueri hasil secara aktif.
CatatanJika file input terlalu besar, pekerjaan mungkin timeout dan gagal. Kami menyarankan untuk menerapkan mekanisme retry.
-
(Disarankan) Terima notifikasi callback.
Setelah pekerjaan asinkron selesai, jika notifikasi pesan dikonfigurasi, sistem akan mengirim pesan ke antrian atau topik yang ditentukan di Simple Message Queue (formerly MNS). Untuk informasi selengkapnya, lihat Receive message notifications.
-
Kueri hasil pekerjaan.
Panggil API QuerySnapshotJobList untuk mengkueri hasil satu atau beberapa pekerjaan snapshot dengan menentukan ID-nya. Atau, Anda dapat melakukan kueri berhalaman dengan memfilter pekerjaan berdasarkan status, waktu pembuatan, atau antrian MPS, tanpa menentukan ID pekerjaan.
Submit snapshot jobs by SDK
|
SDK |
Guides |
|
Java SDK |
|
|
Python SDK |
|
|
PHP SDK |
|
|
PHP SDK (new version) |
|
|
Node.js SDK |
|
|
Go SDK |
FAQ
Untuk pertanyaan umum tentang snapshot, lihat Snapshot FAQ.