Topik ini menjelaskan cara menghasilkan sprite video menggunakan fitur transkoding media dari Intelligent Media Management (IMM).
Pendahuluan
Pembuatan sprite video adalah teknik yang menggabungkan beberapa keyframe dari sebuah video ke dalam satu gambar, yang dikenal sebagai sprite. Dengan menghasilkan sprite, Anda dapat memberikan ikhtisar cepat tentang berbagai adegan dalam video, sehingga pengguna dapat menelusuri dan memilih konten secara lebih efisien.

Kasus penggunaan
-
Pratinjau video dan navigasi konten: Sprite memberikan pratinjau cepat konten video, memungkinkan pengguna memindai keyframe dan langsung melompat ke bagian yang diminati.
-
Daftar putar video: Anda dapat menggunakan sprite untuk menampilkan gambar mini setiap video dalam daftar putar. Hal ini menciptakan antarmuka yang lebih bersih dan menarik secara visual serta meningkatkan pengalaman pengguna.
-
Berbagi di media sosial: Saat membagikan video di media sosial, sprite dapat berfungsi sebagai gambar sampul untuk membantu pemirsa memahami konten video dengan cepat, sehingga meningkatkan tingkat klik dan jumlah tayangan.
-
Aliran langsung dan tayangan ulang acara: Untuk acara langsung atau konten rekaman, sprite membantu pemirsa menemukan sorotan dengan cepat, sehingga memudahkan menonton tayangan ulang.
Format audio dan video yang didukung
Kategori | Format |
Audio | Semua format utama, seperti AAC, MP3, WAV, FLAC, WMA, AC3, dan OPUS. |
Video | Semua format utama, seperti MP4, MPEG-TS, MKV, MOV, AVI, FLV, M3U8, WebM, WMV, RM, dan VOB. |
Prosedur
Prasyarat
Buat AccessKey. Untuk informasi selengkapnya, lihat Create an AccessKey.
Aktifkan Object Storage Service (OSS) dan buat bucket. Untuk informasi selengkapnya, lihat Create a bucket.
Aktifkan Intelligent Media Management (IMM). Untuk informasi selengkapnya, lihat Activate IMM.
Buat proyek di Konsol IMM. Untuk informasi selengkapnya, lihat Create a project.
CatatanAnda juga dapat memanggil operasi API untuk membuat proyek. Untuk informasi selengkapnya, lihat Create a project.
Anda dapat memanggil operasi ListProjects untuk menampilkan semua proyek yang dibuat di wilayah tertentu.
Langkah 1: Unggah file
Gunakan Konsol OSS untuk mengunggah file media ke bucket yang berada di wilayah yang sama dengan proyek IMM Anda.
Pada halaman File Management bucket, klik Upload File. Di panel Upload File, klik Scan for Files untuk memilih file media yang akan diunggah. Pertahankan pengaturan ACL default Inherit from Bucket, lalu klik Upload File untuk menyelesaikan pengunggahan. Ukuran maksimum file yang diunggah melalui konsol adalah 5 GB. Untuk mengunggah file yang lebih besar, gunakan ossutil, SDK OSS, atau API OSS.
Langkah 2: Hasilkan sprite video
Panggil operasi CreateMediaConvertTask untuk membuat tugas pembuatan sprite video.
Contoh parameter
Proses pembuatan sprite video biasanya mencakup langkah-langkah berikut:
-
Ekstraksi frame: Layanan mengekstraksi keyframe tertentu dari video.
-
Pemrosesan gambar: Layanan mengubah ukuran dan mengonversi frame yang diekstraksi untuk memastikan konsistensi dan memenuhi persyaratan output.
-
Pembuatan sprite: Layanan menyusun frame yang telah diproses dalam bentuk kisi dan menggabungkannya menjadi satu gambar untuk membentuk sprite.
Contoh berikut menggunakan proyek IMM test-project dan file oss://test-bucket/video-demo/sample-video.mov untuk menghasilkan sprite video.
Untuk informasi selengkapnya tentang fitur pemrosesan media dan cara menggunakannya, lihat Media transcoding.
-
Anda dapat menggunakan OpenAPI Explorer untuk memproses file video dan melihat contoh kode SDK.
-
Jangan mengatur parameter
Target.URIdanTarget.Containeruntuk pembuatan sprite video. -
Pembuatan sprite video dapat menghasilkan beberapa gambar sprite. Jumlah pastinya bergantung pada jumlah sub-gambar dan konfigurasi baris serta kolom sprite tersebut.
-
Atur URI output sprite menjadi
oss://bucket/objectPrefix-{index}.{autoext}. Jika Anda tidak menyertakan variabel {index}, gambar output dapat saling menimpa. Untuk informasi selengkapnya tentang variabel, lihat TargetURI template.
Hasilkan sprite dari keseluruhan video
Contoh ini menghasilkan sprite dengan mengambil satu frame setiap dua detik dari seluruh video. Setiap sprite berisi kisi sub-gambar berukuran 3x3, dan setiap sub-gambar memiliki resolusi 200x150 piksel.

Informasi transkoding
-
Format sprite: jpg
-
Interval pengambilan frame: 2 detik
-
Tata letak sub-gambar sprite: 3x3
-
Resolusi sub-gambar: 200x150
-
Padding antar sub-gambar (Pad): 0
-
Margin antara sub-gambar dan tepi sprite (Margin): 0
-
Metode penskalaan sub-gambar: Scale and crop. Untuk informasi selengkapnya, lihat scaling method.
-
Jalur file output:
oss://test-bucket/video-demo/sprites-{index}.{autoext} -
Notifikasi penyelesaian: Kirim pesan MNS ke topik MNS test-mns-topic.
Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi sebelumnya. Anda dapat memodifikasinya sesuai kebutuhan sebelum melakukan debugging.
Parameter permintaan
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/sample-video.mov"
}
],
"Targets": [
{
"Image": {
"Sprites": [
{
"Format": "jpg",
"Interval": 2,
"Margin": 0,
"Pad": 0,
"ScaleHeight": 150,
"ScaleType": "crop",
"ScaleWidth": 200,
"TileHeight": 3,
"TileWidth": 3,
"URI": "oss://test-bucket/video-demo/sprites-{index}.{autoext}"
}
]
}
}
]
}Hasilkan sprite dari rentang waktu tertentu
Contoh ini menghasilkan sprite dengan mengambil satu frame setiap dua detik dari detik ke-5 hingga detik ke-30 video. Setiap sprite berisi kisi sub-gambar berukuran 3x5, dan dimensi setiap sub-gambar diskalakan menjadi 1/10 dari video sumber.

Informasi transkoding
Format sprite: jpg
Waktu mulai pengambilan: 5 detik
Durasi pengambilan: 25 detik
Interval pengambilan frame: 2 detik
Tata letak sub-gambar sprite: 3x5
Resolusi sub-gambar: 1/10 dari video sumber
Padding antar sub-gambar (Pad): 4
Margin antara sub-gambar dan tepi sprite (Margin): 5
Metode penskalaan sub-gambar: Fit to size without black bars. Untuk informasi selengkapnya, lihat scaling method.
Jalur file output:
oss://test-bucket/video-demo/sprites-{index}.{autoext}Notifikasi penyelesaian: Kirim pesan MNS ke topik MNS test-mns-topic.
Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi sebelumnya; Anda dapat memodifikasinya sesuai kebutuhan sebelum melakukan debugging.
Parameter permintaan
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"Duration": 25,
"StartTime": 5,
"URI": "oss://test-bucket/video-demo/sample-video.mov"
}
],
"Targets": [
{
"Image": {
"Sprites": [
{
"Format": "jpg",
"Interval": 2,
"Margin": 5,
"Pad": 4,
"ScaleHeight": 0.1,
"ScaleType": "fit",
"ScaleWidth": 0.1,
"TileHeight": 5,
"TileWidth": 3,
"URI": "oss://test-bucket/video-demo/sprites-{index}.{autoext}"
}
]
}
}
]
}Hasilkan sprite dengan frame yang berjarak merata
Contoh ini menunjukkan cara menggunakan operasi DetectMediaMeta untuk mendapatkan durasi video, lalu menghasilkan sprite dengan jumlah frame tertentu yang berjarak merata.
Langkah 1: Dapatkan durasi video
Panggil operasi DetectMediaMeta untuk mendapatkan durasi video. Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi sebelumnya. Anda dapat memodifikasinya sesuai kebutuhan sebelum melakukan debugging.
Parameter permintaan
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/video-demo/sample-video.mov"
}Parameter respons
{
"Addresses": [],
"AudioStreams": [],
"Bitrate": 45521134,
"Duration": 31.64,
"FormatLongName": "QuickTime / MOV",
"FormatName": "mov,mp4,m4a,3gp,3g2,mj2",
"ProduceTime": "2014-12-19T14:20:38Z",
"RequestId": "94A9AF46-B403-51D5-988F-D9B4939DEF39",
"Size": 180036088,
"StreamCount": 2,
"Subtitles": [],
"VideoHeight": 1080,
"VideoStreams": [
{
"AverageFrameRate": "25/1",
"BitDepth": 8,
"Bitrate": 45517646,
"CodecLongName": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"CodecName": "h264",
"CodecTag": "0x31637661",
"CodecTagString": "avc1",
"ColorPrimaries": "bt709",
"ColorRange": "tv",
"ColorSpace": "bt709",
"ColorTransfer": "bt709",
"Duration": 31.64,
"FrameCount": 791,
"FrameRate": "25/1",
"HasBFrames": 1,
"Height": 1080,
"Language": "eng",
"Level": 50,
"PixelFormat": "yuv420p",
"Profile": "Main",
"TimeBase": "1/2500",
"Width": 1920
}
],
"VideoWidth": 1920
}Langkah 2: Hasilkan sprite dengan frame yang berjarak merata
Durasi video adalah 31,64 detik. Untuk mengambil 9 sub-gambar yang berjarak merata, interval pengambilan frame dihitung sebagai 31,64 / (9 - 1) = 3,955 detik. Sprite memiliki tata letak 3x3, dan dimensi setiap sub-gambar diskalakan menjadi 1/10 dari video sumber.
Informasi transkoding
Format sprite: jpg
Interval pengambilan frame: 3,955 detik
Tata letak sub-gambar sprite: 3x3
Resolusi sub-gambar: 1/10 dari video sumber
Padding antar sub-gambar (Pad): 4
Margin antara sub-gambar dan tepi sprite (Margin): 5
Metode penskalaan sub-gambar: Fit to size without black bars. Untuk informasi selengkapnya, lihat scaling method.
Jalur file output:
oss://test-bucket/video-demo/sprites-{index}.{autoext}Notifikasi penyelesaian: Kirim pesan MNS ke topik MNS test-mns-topic.
Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi sebelumnya; Anda dapat memodifikasinya sesuai kebutuhan sebelum melakukan debugging.
Parameter permintaan
{
"ProjectName": "test-project",
"Notification": {
"MNS": {
"TopicName": "test-mns-topic"
}
},
"Sources": [
{
"URI": "oss://test-bucket/video-demo/sample-video.mov"
}
],
"Targets": [
{
"Image": {
"Sprites": [
{
"Format": "jpg",
"Interval": 3.955,
"Margin": 5,
"Pad": 4,
"ScaleHeight": 0.1,
"ScaleType": "fit",
"ScaleWidth": 0.1,
"TileHeight": 3,
"TileWidth": 3,
"URI": "oss://test-bucket/video-demo/sprites-{index}.{autoext}"
}
]
}
}
]
}