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 |
|
Biaya rendah |
|
Efisiensi tinggi |
|
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
Akses anonim akan ditolak.
Untuk informasi selengkapnya, lihat Live transcoding dan Generate a live transcoding playlist.
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:
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:
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.
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:
|
fps | float | Tidak | Laju bingkai video. Default: sama dengan video sumber. |
fpsopt | int | Tidak | Opsi laju bingkai video. Nilai yang valid:
Catatan Parameter ini harus diatur bersama parameter fps. |
pixfmt | string | Tidak | Format piksel. Default: sama dengan video sumber. Nilai yang valid:
|
s | string | Tidak | Resolusi video output, dalam format
|
sopt | string | Tidak | Opsi resolusi. Nilai yang valid:
|
scaletype | string | Tidak | Mode penskalaan. Nilai yang valid:
Catatan Parameter ini harus diatur bersama parameter s. |
arotate | int | Tidak | Orientasi resolusi adaptif. Nilai yang valid:
|
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:
|
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:
|
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:
|
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:
|
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:
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_b3V0YnVja2V0Contoh 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-ENDLISTKonten 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-ENDLISTGunakan 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.