全部产品
Search
文档中心

Intelligent Media Management:Pembuatan sprite video

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menghasilkan sprite video menggunakan fitur transkoding media dari Intelligent Media Management (IMM).

Pengenalan fitur

Pembuatan sprite video adalah teknik yang menggabungkan beberapa frame kunci dari video ke dalam satu gambar thumbnail. Dengan sprite, pengguna dapat dengan cepat melihat berbagai adegan video dalam satu gambar, memungkinkan mereka memilih konten untuk ditonton secara lebih efektif.

image

Skenario

  • Pratinjau Video dan Navigasi Konten: Sprite memberikan pratinjau cepat dari konten video, memungkinkan pengguna melihat frame kunci dengan jelas dan memilih bagian yang diminati.

  • Daftar Putar Video: Dalam daftar putar, sprite digunakan untuk menampilkan thumbnail setiap video, membuat antarmuka lebih ringkas dan meningkatkan pengalaman pengguna.

  • Berbagi di Media Sosial: Saat berbagi video di media sosial, sprite dapat berfungsi sebagai gambar sampul, membantu pengguna memahami isi video dengan cepat, sehingga meningkatkan tingkat klik dan jumlah tayangan.

  • Streaming Langsung dan Pemutaran Acara: Dalam siaran langsung atau pemutaran ulang acara, sprite membantu pemirsa menemukan sorotan yang diminati, meningkatkan kenyamanan menonton.

Format audio dan video yang didukung

Kategori

Format

Audio

Format audio utama seperti AAC, MP3, WAV, FLAC, WMA, AC3, dan Opus.

Video

Format video utama seperti MP4, MPEG-TS, MKV, MOV, AVI, FLV, M3U8, WebM, WMV, RM, dan VOB.

Prosedur

Prasyarat

  • Sebuah pasangan AccessKey telah dibuat. Untuk informasi lebih lanjut, lihat Buat Pasangan AccessKey.

  • Object Storage Service (OSS) telah diaktifkan, dan sebuah bucket telah dibuat. Untuk informasi lebih lanjut, lihat Buat Bucket.

  • IMM telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan IMM.

  • Sebuah proyek telah dibuat di konsol IMM. Untuk informasi lebih lanjut, lihat Buat Proyek.

    Catatan
    • Anda dapat memanggil operasi CreateProject untuk membuat proyek.

    • Anda dapat memanggil operasi ListProjects untuk mencantumkan semua informasi proyek di wilayah tertentu.

Langkah 1: Unggah file

Gunakan Konsol OSS untuk mengunggah file media ke bucket di wilayah yang sama dengan proyek IMM Anda.

image

Langkah 2: Gunakan IMM untuk menghasilkan sprite video

Panggil operasi CreateMediaConvertTask untuk membuat tugas pembuatan sprite video.

Contoh parameter

Proses pembuatan sprite video mencakup langkah-langkah berikut:

  1. Ekstraksi Frame Video: Ekstrak frame kunci terpilih dari video.

  2. Pemrosesan Gambar: Ubah ukuran dan konversi frame yang diekstraksi untuk menjaga konsistensi dan memenuhi persyaratan output.

  3. Pembuatan Sprite: Susun frame yang diproses dalam grid dan gabungkan menjadi satu gambar untuk membentuk sprite.

Contoh berikut menggunakan proyek IMM test-project dan file oss://test-bucket/video-demo/酿酒.mov untuk menghasilkan sprite video.

Untuk informasi lebih lanjut tentang fitur pemrosesan media dan penggunaannya, lihat Transkoding Media.

Catatan
  • Anda dapat menggunakan OpenAPI Explorer untuk memproses file video menggunakan operasi transkoding media. Anda dapat merujuk pada kode SDK.

  • Jangan atur parameter Target.URI dan Target.Container untuk pembuatan sprite video.

  • Beberapa gambar sprite akan dihasilkan, dengan jumlah pastinya bergantung pada jumlah sub-gambar dan konfigurasi baris dan kolom sprite.

  • Disarankan untuk mengonfigurasi URI keluaran sprite dalam format "oss://bucket/objectPrefix-{index}.{autoext}". Jika variabel indeks tidak disetel, gambar sprite mungkin saling menimpa. Untuk variabel terkait, lihat Template TargetURI.

Hasilkan sprite dengan menangkap frame setiap 2 detik sepanjang video

Hasilkan sprite dengan menangkap frame setiap 2 detik sepanjang video, dengan setiap sprite memiliki tata letak grid 3×3 dan resolusi sub-gambar 200×150.

image

Informasi Transkoding

  • Format: JPG

  • Interval Penangkapan Frame: 2 detik

  • Tata Letak Sub-Gambar Sprite: 3×3

  • Resolusi Sub-Gambar Tunggal: 200×150

  • Pengisian Antara Sub-Gambar (Pad): 0

  • Margin Antara Sub-Gambar dan Tepi Sprite (Margin): 0

  • Metode Penskalaan Sub-Gambar: Skala dan potong.

  • Path Penyimpanan File Keluaran: oss://test-bucket/video-demo/sprites-%d.jpg

  • Notifikasi Penyelesaian Penangkapan Frame: Kirim pesan MNS ke topik MNS "test-mns-topic"

Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi otomatis untuk Anda. Anda dapat memodifikasinya sesuai kebutuhan sebelum debugging.

Parameter Permintaan

{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/酿酒.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 dengan menangkap frame setiap 2 detik dari bagian 5s hingga 30s video

Hasilkan sprite dengan menangkap frame setiap 2 detik dari bagian 5s hingga 30s video, dengan setiap sprite memiliki tata letak grid 3×5 dan dimensi sub-gambar sebesar 1/10 dari video sumber.

image

Informasi Transkoding

  • Format: JPG

  • Waktu Mulai Penangkapan Frame: 5 detik

  • Durasi Penangkapan Frame: 25 detik

  • Interval Penangkapan Frame: 2 detik

  • Tata Letak Sub-Gambar Sprite: 3×5

  • Resolusi Sub-Gambar Tunggal: 1/10 dari video sumber

  • Pengisian Antara Sub-Gambar (Pad): 4

  • Margin Antara Sub-Gambar dan Tepi Sprite (Margin): 5

  • Metode Penskalaan Sub-Gambar: Skala tanpa mempertahankan bilah hitam.

  • Path Penyimpanan File Keluaran: oss://test-bucket/video-demo/sprites-%d.jpg

  • Notifikasi Penyelesaian Penangkapan Frame: Kirim pesan MNS ke topik MNS "test-mns-topic"

Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi otomatis untuk Anda. Anda dapat memodifikasinya sesuai kebutuhan sebelum debugging.

Parameter Permintaan

{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "Duration": 25,
      "StartTime": 5,
      "URI": "oss://test-bucket/video-demo/酿酒.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 menangkap frame secara merata berdasarkan jumlah

Gunakan operasi DetectMediaMeta untuk menghasilkan sprite dengan menangkap frame secara merata berdasarkan jumlah.

Langkah 1: Dapatkan durasi video

Panggil operasi DetectMediaMeta untuk mendapatkan durasi video. Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi otomatis untuk Anda. Anda dapat memodifikasinya sesuai kebutuhan sebelum debugging.

Parameter Permintaan

{
  "ProjectName": "test-project",
  "SourceURI": "oss://test-bucket/video-demo/酿酒.mov"
}

Parameter Respons (Dapatkan Durasi yang merupakan durasi video)

{
  "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 menangkap frame secara merata berdasarkan durasi video

Durasi video adalah 31,64 detik. Untuk menangkap 9 sub-gambar secara merata, interval penangkapan frame adalah 31,64/(9 - 1) = 3,955 detik. Tata letak sub-gambar sprite adalah 3×3, dengan dimensi sub-gambar sebesar 1/10 dari video sumber.

Informasi Transkoding

  • Format: JPG

  • Interval Penangkapan Frame: 3,955 detik

  • Tata Letak Sub-Gambar Sprite: 3×3

  • Resolusi Sub-Gambar Tunggal: 1/10 dari video sumber

  • Pengisian Antara Sub-Gambar (Pad): 4

  • Margin Antara Sub-Gambar dan Tepi Sprite (Margin): 5

  • Metode Penskalaan Sub-Gambar: Skala dan potong.

  • Path Penyimpanan File Keluaran: oss://test-bucket/video-demo/sprites-%d.jpg

  • Notifikasi Penyelesaian Penangkapan Frame: Kirim pesan MNS ke topik MNS "test-mns-topic"

Untuk contoh SDK, lihat OpenAPI Explorer. Parameter contoh telah diisi otomatis untuk Anda. Anda dapat memodifikasinya sesuai kebutuhan sebelum debugging.

Parameter Permintaan

{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/酿酒.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}"
          }
        ]
      }
    }
  ]
}