全部产品
Search
文档中心

Object Storage Service:Hasilkan daftar putar transkoding langsung

更新时间:Dec 21, 2025

Fitur ini menghasilkan daftar putar HTTP Live Streaming (HLS) m3u8 standar untuk sebuah video, memungkinkan pemutaran segera tanpa perlu membuat file Transport Stream (TS) terlebih dahulu. Video ditranskode secara dinamis saat diputar. Dibandingkan dengan transkoding offline tradisional, metode ini secara signifikan mengurangi waktu tunggu serta menekan biaya transkoding dan penyimpanan karena konten diproses sesuai permintaan.

Pendahuluan

Berbeda dengan video transcoding, yang mengharuskan Anda menunggu hingga seluruh video selesai ditranskode sebelum dapat diputar, live transcoding merupakan fitur real-time yang memungkinkan pemutaran dimulai segera setelah file video sumber diunggah dengan hanya mentranskode segmen video yang diperlukan secara on-the-fly. Live transcoding memberikan manfaat berikut:

  • Transkode selama pemutaran, sehingga menghilangkan waktu tunggu.

  • Transkode yang dioptimalkan memungkinkan startup dan pencarian cepat, memberikan pengalaman pemutaran yang mirip dengan pemutaran lokal.

  • Transkode tidak dilakukan jika video tidak diputar. File hasil transkode dapat dihapus dan dihasilkan kembali sesuai permintaan, sehingga secara signifikan menghemat biaya transkoding dan penyimpanan.

  • Mendukung puluhan parameter transkoding untuk tingkat kustomisasi yang tinggi.

  • Menyediakan kompatibilitas tinggi dengan dukungan lebih dari 300 format audio dan video.

Skenario Penggunaan

  • Drive jaringan: Setelah pengguna mengunggah video, klien dapat memilih resolusi optimal untuk pemutaran berdasarkan kondisi jaringan, memastikan pemutaran real-time dan kompatibilitas perangkat. Video yang jarang diakses tidak akan ditranskode jika tidak diputar, sehingga mengurangi biaya penyimpanan.

  • Pratinjau video di aplikasi chat: Di aplikasi pesan instan atau media sosial, video dapat langsung diputar setelah dikirim, meningkatkan performa real-time. Video dalam riwayat chat dapat dihapus secara berkala namun tetap dapat diputar sesuai permintaan.

  • Forum dan blog daring: Saat Anda membagikan video di forum dan blog, live transcoding memungkinkan pengguna menonton video tanpa menunggu proses transkoding, memastikan pemutaran lancar dan definisi tinggi.

Fitur

Tabel berikut menjelaskan fitur-fitur live transcoding.

Fitur

Deskripsi

Standardisasi

  • Mendukung protokol HLS standar.

  • Mendukung daftar putar media dan pembuatan master playlist.

  • Mendukung pemutaran beberapa aliran video, audio, dan subtitle.

  • Mendukung pemutar HLS utama.

  • Mendukung lebih dari 300 format audio dan video utama.

Biaya rendah

  • Video dan segmen yang tidak diputar tidak ditranskode. Hal ini mengurangi biaya transkoding.

  • Segmen video hasil transkode dapat dihapus untuk menghemat biaya penyimpanan. Saat video diputar kembali, sistem secara otomatis memicu tugas transkoding baru untuk memastikan pengalaman pemutaran daring yang mulus.

Efisiensi tinggi

  • Kluster berskala besar mendukung transkoding real-time.

  • Menyediakan aliran video dalam berbagai resolusi dan bitrate untuk menyesuaikan dengan lingkungan jaringan yang berbeda dan memastikan pemutaran lancar.

  • Pemutaran dapat dimulai segera setelah daftar putar dihasilkan, tanpa menunggu proses transkoding selesai sepenuhnya.

  • Ukuran segmen header video bersifat adaptif untuk pemuatan yang lebih efisien.

  • Mendukung pre-transcoding cerdas.

Format audio dan video yang didukung

Live transcoding mendukung lebih dari 300 format audio dan video, termasuk hampir semua format umum. Tabel berikut mencantumkan beberapa format umum yang didukung.

Format video input

Semua format utama, seperti AVI, MOV, FLV, MKV, WebM, MPEG, WMV, RM, VOB, dan TS.

Format audio input

Semua format utama, seperti MP3, WAV, AAC, FLAC, dan WMA.

Format kontainer output

TS

Prasyarat

  • Layanan Intelligent Media Management (IMM) telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan produk.

  • Proyek IMM telah disambungkan. Untuk informasi tentang cara menyambungkan proyek di Konsol Object Storage Service (OSS), lihat Quick Start. Untuk informasi tentang cara menyambungkan proyek menggunakan API, lihat AttachOSSBucket - Attach an Object Storage Service bucket.

  • Anda memiliki izin yang diperlukan agar IMM dapat melakukan pemrosesan. Untuk informasi selengkapnya, lihat Permissions.

Catatan Penggunaan

Deskripsi Parameter

Operasi: hls/m3u8

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Tipe

Wajib

Deskripsi

ss

int

Tidak

Waktu mulai untuk menghasilkan daftar putar. Satuan: milidetik (ms). Nilai yang valid:

  • 0 (default) atau kosong: dimulai dari awal video sumber.

  • Nilai lebih dari 0: dimulai dari waktu yang ditentukan dalam video sumber.

Catatan

Gunakan parameter ini bersama parameter t untuk menghasilkan daftar putar untuk bagian tertentu dari video sumber.

t

int

Tidak

Durasi transkoding untuk daftar putar. Satuan: ms. Nilai yang valid:

  • 0 (default) atau kosong: berlanjut hingga akhir video sumber.

  • Nilai lebih dari 0: berlanjut selama durasi yang ditentukan dari waktu mulai pembuatan daftar putar.

Catatan

Jika waktu yang ditentukan melebihi akhir video sumber, nilai default digunakan.

ta

int

Tidak

Jumlah file TS yang akan dipre-transkode saat live transcoding dipicu. Secara default, segmen video berdurasi 2 menit dipre-transkode.

Contoh: Jika st adalah 10000, nilai default ta adalah 12. Anda dapat menentukan parameter ini untuk mengontrol jumlah segmen yang dipre-transkode secara asinkron. Nilai yang valid: [10,30].

st

int

Tidak

Durasi satu segmen file TS. Satuan: ms. Default: 10000. Nilai yang valid: [5000,15000].

initd

int

Tidak

Durasi transkoding awal saat daftar putar dihasilkan. Satuan: ms. Default: 30000.

  • Jika durasi adalah 0, tidak ada pre-transcoding yang dilakukan.

  • Jika nilai negatif atau melebihi durasi video sumber, seluruh video ditranskode pada awalnya.

  • Jika durasi yang ditentukan berada di tengah file TS, transkoding berlanjut hingga akhir file TS tersebut.

Catatan

Parameter ini terutama digunakan untuk mengurangi waktu tunggu pemutaran pertama dan meningkatkan pengalaman pengguna. Untuk menggantikan layanan VOD tradisional, Anda dapat mencoba mentranskode seluruh video pada awalnya.

vcodec

string

Tidak

Kodek video (format encoding). Nilai yang valid:

  • h264 (default): format encoding H.264.

  • h265: format encoding h265.

fps

float

Tidak

Laju bingkai video. Default: sama dengan video sumber.

fpsopt

int

Tidak

Opsi laju bingkai video. Nilai yang valid:

  • 0: Selalu gunakan laju bingkai target.

  • 1 (default): Gunakan laju bingkai sumber jika lebih rendah daripada nilai fps.

  • 2: Mengembalikan error jika laju bingkai sumber lebih rendah daripada nilai fps.

Catatan

Parameter ini harus diatur bersama parameter fps.

pixfmt

string

Tidak

Format piksel. Default: sama dengan video sumber. Nilai yang valid:

  • yuv420p

  • yuv422p

  • yuv444p

  • yuv420p10le

  • yuv422p10le

  • yuv444p10le

s

string

Tidak

Resolusi video output, dalam format width × height. Default: sama dengan resolusi video sumber.

  • Formatnya adalah w × h, yang berarti lebar × tinggi.

  • Lebar dan tinggi harus kelipatan 2 dan berada dalam rentang 64 hingga 4096. Contoh: 4096 × 4096, 64 × 64.

sopt

string

Tidak

Opsi resolusi. Nilai yang valid:

  • 0: Selalu gunakan resolusi video target yang ditentukan.

  • 1 (default): Gunakan resolusi video sumber jika luasnya lebih kecil daripada luas resolusi video target yang ditentukan.

  • 2: Mengembalikan error jika luas resolusi video sumber lebih kecil daripada luas resolusi video target yang ditentukan.

scaletype

string

Tidak

Mode penskalaan. Nilai yang valid:

  • stretch (default): Memperbaiki lebar dan tinggi atau tepi panjang dan pendek, serta secara paksa menskalakan dan meregangkan video untuk mengisi ruang kosong.

  • crop: Menskalakan video secara proporsional ke resolusi minimum yang melampaui persegi panjang yang ditentukan, lalu memotong bagian berlebih dari tengah.

  • fill: Menskalakan video secara proporsional ke resolusi maksimum dalam persegi panjang yang ditentukan, lalu mengisi ruang kosong dengan warna hitam dari tengah.

  • fit: Menskalakan video secara proporsional ke resolusi maksimum dalam persegi panjang yang ditentukan.

Catatan

Parameter ini harus diatur bersama parameter s.

arotate

int

Tidak

Orientasi resolusi adaptif. Nilai yang valid:

  • 0 (default): dinonaktifkan.

  • 1: diaktifkan.

vb

int

Tidak

Bitrate aliran video. Satuan: bit/s.

Jika Anda tidak menentukan crf atau vb, nilai default crf adalah 23. Jika Anda mengatur vbopt, parameter vb wajib ditentukan.

vbopt

int

Tidak

Opsi bitrate video. Nilai yang valid:

  • 0: Selalu gunakan bitrate video target yang ditentukan.

  • 1 (default): Gunakan bitrate video sumber jika lebih rendah daripada bitrate video target yang ditentukan.

  • 2: Mengembalikan error jika bitrate video sumber lebih rendah daripada bitrate video target yang ditentukan.

crf

float

Tidak

Menentukan mode kualitas konstan. Parameter ini saling eksklusif dengan parameter vb. Nilai yang valid: [0,51]. Nilai yang lebih besar menunjukkan kualitas yang lebih rendah. Kami menyarankan Anda menentukan nilai dalam rentang [18,38]. Jika Anda tidak menentukan crf atau vb, nilai default adalah 23.

maxrate

int

Tidak

Bitrate maksimum untuk mode bitrate dinamis. Jika Anda menggunakan parameter ini, Anda juga harus menentukan parameter bufsize.

Catatan

Parameter ini hanya berlaku saat digunakan bersama parameter crf.

bufsize

int

Tidak

Ukuran buffer decoder untuk mode bitrate dinamis. Satuan: bit/s.

Catatan

Parameter ini hanya berlaku saat digunakan bersama parameter crf.

an

int

Tidak

Menentukan apakah aliran audio dinonaktifkan. Nilai yang valid:

  • 0 (default): Jangan nonaktifkan.

  • 1: Nonaktifkan.

acodec

string

Tidak

Metode pengkodean audio. Nilainya adalah `aac`.

ar

int

Tidak

Laju pengambilan sampel audio. Satuan: Hertz (Hz). Default: sama dengan audio sumber. Nilai yang valid:

  • 8000

  • 11025

  • 12000

  • 16000

  • 22050

  • 24000

  • 32000

  • 44100

  • 48000

  • 88200

  • 96000

ac

int

Tidak

Jumlah saluran suara. Default: sama dengan audio sumber. Nilai yang valid: [1,8].

aq

int

Tidak

Kualitas audio. Parameter ini saling eksklusif dengan parameter ab. Nilai yang valid: 0 hingga 100. Nilai yang lebih besar menunjukkan kualitas yang lebih tinggi.

ab

int

Tidak

Bitrate audio. Parameter ini saling eksklusif dengan parameter aq. Satuan: bit/s. Nilai yang valid: 1000 hingga 10000000.

abopt

int

Tidak

Opsi bitrate audio. Nilai yang valid:

  • 0: Selalu gunakan bitrate audio target.

  • 1 (default): Gunakan bitrate video sumber jika lebih rendah daripada nilai ab.

  • 2: Mengembalikan error jika bitrate video sumber lebih rendah daripada nilai ab.

Catatan

Parameter sys/saveas juga digunakan saat Anda menghasilkan daftar putar transkoding langsung. Untuk informasi selengkapnya, lihat Save as.

Langkah-langkah

Live transcoding melibatkan dua langkah berikut:

Catatan

Setelah Anda menghasilkan daftar putar, Anda juga dapat menemukan petunjuk pemutaran di topik live transcoding dalam dokumentasi Intelligent Media Management.

1. Hasilkan daftar putar transkoding langsung untuk video

Informasi transkoding

  • Sebelum transkoding

    • Format video: AVI

    • Nama video: oss://video-demo/example.avi

    • Posisi awal: 15 detik dari awal video

    • Durasi transkoding: 1800 detik

  • Metode pemrosesan: Hasilkan daftar putar

  • Setelah transkoding

    • Ukuran segmen: 10 detik

    • Durasi pre-transcoding: 30 detik

    • Informasi video

      • Format aliran video: H.264

      • Resolusi video: 1280 × 720

      • Laju frame video: 25 fps

      • Bitrate video: 2 Mbps

    • Informasi audio

      • Format aliran audio: AAC

      • Bitrate audio: 128 Kbps

    • Awalan path penyimpanan file: oss://outbucket/outobjprefix/media

Contoh permintaan

POST /example.avi?x-oss-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

x-oss-process=hls/m3u8,ss_15000,t_1800000,vcodec_h264,fps_25,fpsopt_1,s_1280x720,sopt_1,scaletype_fit,arotate_1,vb_2000000,vbopt_1,acodec_aac,ar_44100,ac_2,ab_128000,abopt_1,st_10000,initd_30000|sys/saveas,o_b3V0b2JqcHJlZml4L21lZGlh,b_b3V0YnVja2V0

Contoh respons

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Wed, 25 May 2022 12:43:57 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 161
Connection: keep-alive
x-oss-request-id: 628E2481184E20F26C000009
x-oss-transfer-acc-type: acc-none
x-oss-data-location: oss-cn-hangzhou-a
ETag: "D0F162350DA037F4DC2A142B2E116BD0"
Last-Modified: Wed, 25 May 2022 12:20:34 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 2040549661341440100
x-oss-storage-class: Standard
x-oss-server-time: 12437

{"Duration":1800,"RequestId":"********-37E6-5996-8425-********","VideoPlaylist":[{"FrameRate":"25","Resolution":"1280x720","Token":"f93c43079**********1269608ebc86e","URI":"oss://outbucket/outobjprefix/media.m3u8"}]}

2. Gunakan hls/sign untuk menandatangani aliran transkoding langsung

Object Storage Service (OSS) menyediakan mekanisme signature dinamis untuk mengakses data audio dan video. Saat Anda pertama kali mengakses file m3u8, tambahkan x-oss-process=hls/sign,live_1 ke URL. OSS kemudian secara otomatis menandatangani semua alamat TS dalam daftar putar yang dikembalikan menggunakan metode penandatanganan yang sama dengan yang digunakan untuk file m3u8 tersebut.

  • Metode penandatanganan hls/sign:

# -*- coding: utf-8 -*-
import os
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Tentukan endpoint wilayah tempat bucket berada. Ganti nilainya dengan endpoint yang sebenarnya.
endpoint = 'yourEndpoint'

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Nama bucket tujuan.
bucket_name = 'your-oss-bucket-name'
# Atur key ke nama daftar putar yang dihasilkan, misalnya, output/media.m3u8.
key = 'output/media.m3u8'

# Tentukan instance bucket. Semua metode terkait file harus dipanggil melalui instance bucket.
# Anda harus menggunakan metode penandatanganan oss2.AuthV2.
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', bucket_name)

# Metode pemrosesan untuk x-oss-process adalah hls/sign,live_1.
params = {}
params.update({oss2.Bucket.PROCESS: 'hls/sign,live_1'})

# URL yang ditandatangani.
# Saat URL yang ditandatangani dihasilkan, OSS secara default meng-escape karakter garis miring (/) dalam path lengkap objek. Hal ini membuat URL yang ditandatangani tidak dapat digunakan.
# Atur slash_safe ke True. OSS tidak akan meng-escape karakter garis miring (/) dalam path lengkap objek. URL yang dihasilkan dapat langsung digunakan.
url = bucket.sign_url('GET', key, 7200, params=params, slash_safe=True)

# URL yang dihasilkan dapat langsung diputar di pemutar HLS.
print(url)
  • Konten m3u8 asli

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-0.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-1.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-2.ts
#EXTINF:10.0,
media-c14709808479b31566b50f2f8b93fe1a-3.ts
#EXT-X-ENDLIST
  • Konten yang dikembalikan setelah ditandatangani dengan hls/sign:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-0.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-1.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-2.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXTINF:10.000,
media-c14709808479b31566b50f2f8b93fe1a-3.ts?x-oss-process=if_status_eq_404{hls/ts,from_b3V0cHV0L21lZGlhLm0zdTg}&x-oss-expires=1710457284&x-oss-signature-version=OSS2&x-oss-access-key-id=****fEAub****&x-oss-signature=****VR3gy****
#EXT-X-ENDLIST

Gunakan SDK

Menghasilkan daftar putar transkoding langsung merupakan proses sinkron. Untuk informasi tentang cara menggunakan SDK, lihat Use an SDK.

FAQ

File output apa saja yang dihasilkan?

File m3u8 dan file TS dihasilkan berdasarkan awalan path output yang ditentukan. File m3u8 dihasilkan segera. Jika Anda menentukan durasi pre-transcoding, file TS untuk durasi tersebut dihasilkan secara asinkron. Misalnya, jika durasi pre-transcoding adalah 30 detik dan panjang segmen adalah 10 detik, tiga file TS dihasilkan. Bagian video yang tidak dipre-transkode akan ditranskode sesuai permintaan selama pemutaran. Misalnya, jika video tidak pernah diputar, tidak ada file TS tambahan yang dihasilkan. Jika Anda mulai memutar video pada menit ke-15, transkoding dimulai dari titik tersebut. Struktur direktori file yang dihasilkan adalah sebagai berikut:

.
├── outobjprefix.m3u8
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-0.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-1.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-2.ts
├── outobjprefix-92376fbb-171f-4259-913f-705f7ee02f2s-3.ts

Apakah video masih dapat diputar secara normal setelah file TS yang dihasilkan dihapus secara manual?

Ya, bisa. Selama file video sumber dan daftar putar m3u8 tidak dihapus, video tetap dapat diputar. Saat daftar putar m3u8 diminta kembali, file TS akan dihasilkan ulang. Metode ini dapat mengurangi biaya penyimpanan tanpa memengaruhi pemutaran video.

Apakah saya dapat menggunakan file m3u8 yang tidak dihasilkan oleh live transcoding untuk live transcoding?

Tidak, tidak bisa. Hanya file m3u8 yang dihasilkan oleh fitur live transcoding yang dapat digunakan untuk live transcoding.