Pergeseran waktu memungkinkan Anda memutar ulang aliran langsung dari waktu mulai hingga waktu saat ini. Topik ini menjelaskan cara kerja pergeseran waktu dan cara mengirim permintaan.
Skenario
Fitur pergeseran waktu memungkinkan penonton memutar ulang aliran langsung selama pemutaran. Misalnya, dalam siaran olahraga langsung, penonton dapat menggunakan pergeseran waktu untuk menonton ulang bagian-bagian acara tersebut, mirip seperti menonton film atau acara TV.
Cara kerja
Aliran ApsaraVideo Live diiris menjadi segmen Transport Stream (TS) dan didistribusikan ke penonton menggunakan protokol HTTP Live Streaming (HLS). Permintaan penonton untuk daftar putar M3U8 berisi daftar alamat segmen TS yang terus diperbarui. Pada streaming langsung HLS standar, alamat segmen TS dan file TS-nya tidak disimpan, sehingga Anda tidak dapat memutar ulang aliran tersebut. Saat fitur pergeseran waktu diaktifkan, informasi dan file segmen TS akan disimpan, memungkinkan Anda memutar ulang video dari awal aliran langsung hingga waktu saat ini.
Batasan
Pergeseran waktu mendukung maksimal 100.000 penonton bersamaan. Untuk mendukung lebih banyak penonton, kirim Tiket. Untuk informasi selengkapnya tentang cara mengirim Tiket, lihat Hubungi kami.
Menggunakan fitur
Penggunaan fitur pergeseran waktu dikenai biaya pergeseran waktu. Anda dikenai biaya berdasarkan jumlah data pergeseran waktu yang ditulis dan spesifikasi pemutaran pergeseran waktu. Untuk informasi selengkapnya tentang aturan penagihan, lihat Biaya pergeseran waktu.
Untuk informasi selengkapnya tentang wilayah yang mendukung fitur pergeseran waktu, lihat Wilayah yang didukung.
Untuk menggunakan pergeseran waktu, Anda harus menyelesaikan dua langkah berikut:
Konfigurasikan fitur pergeseran waktu.
CatatanAnda harus mengonfigurasi fitur ini untuk menyimpan konten aliran langsung dan mengaktifkan pergeseran waktu.
Kirim permintaan dari client untuk menggunakan fitur pergeseran waktu.
Konfigurasi fitur pergeseran waktu
Menggunakan fitur pergeseran waktu
Setelah mengonfigurasi pergeseran waktu, ApsaraVideo Live menyimpan file segmen TS dari aliran langsung. Client kemudian dapat mengirim permintaan pemutaran pergeseran waktu untuk memutar ulang konten langsung tersebut.
Contoh berikut menunjukkan permintaan pemutaran pergeseran waktu:
http://<DomainName>/<AppName>/<StreamName.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******Seperti yang ditunjukkan dalam contoh, permintaan pergeseran waktu mirip dengan URL streaming langsung untuk file M3U8, tetapi mencakup dua parameter tambahan. aliyunols=on adalah bidang tetap, dan lhs_offset_unix_s_0=300 menunjukkan putar ulang selama 300 detik.
Saat mengirim permintaan pergeseran waktu melalui CDN, Anda harus menyertakan parameter
aliyunols=on.Saat ini, pemutaran pergeseran waktu hanya mendukung URL streaming langsung dalam format
M3U8.Anda dapat menggunakan Pemutar Video Apsara untuk memutar ulang konten pergeseran waktu. Untuk informasi selengkapnya tentang cara menggunakan Pemutar Video Apsara, lihat Player SDK.
Dalam contoh ini, konten langsung diputar ulang sebesar 300 detik. Saat memutar ulang konten pergeseran waktu, Anda dapat menggunakan parameter lhs_offset_unix_s_0 untuk mengatur waktu pemutaran. Format parameternya adalah lhs_{type}_{format}_{unit}_{zone}.
Tabel berikut menjelaskan variabel dalam parameter tersebut.
type | format | unit | zone |
Jenis waktu. Nilai yang valid:
| Format waktu untuk pergeseran waktu. Nilai yang valid:
| Unit waktu untuk pergeseran waktu. Nilai yang valid:
| Zona waktu. Nilai yang valid: 0 hingga 9, yang menunjukkan UTC+*. 0 menunjukkan UTC, dan 8 menunjukkan Waktu Standar Tiongkok. Catatan Jika Anda menyetel format ke unix, setel zone ke 0. |
Contoh berikut menunjukkan parameter pergeseran waktu:
lhs_start_human_s_8=20170809200010lhs_start_unix_s_0=1502280113lhs_end_human_s_8=20170809200010lhs_vodend_unix_s_0=1502280113lhs_offset_unix_ms_0=1800000(putar ulang selama 30 menit)
Anda harus menentukan salah satu dari
lhs_startataulhs_offset. Jika Anda menentukan keduanya, yaitulhs_startdanlhs_offset, pemutaran pergeseran waktu akan didasarkan padalhs_offset.lhs_end/lhs_vodendadalah parameter opsional. Jika Anda tidak menentukanlhs_end/lhs_vodend, pemutaran akan berlanjut dalam mode langsung hingga pengambilan aliran berakhir.Jika Anda menentukan
lhs_end, pemutaran akan berlanjut dalam mode langsung hingga waktulhs_endyang ditentukan.Jika Anda menentukan
lhs_vodend, pemutaran akan berlanjut dalam mode VOD hingga waktulhs_vodendyang ditentukan. Dalam mode VOD, semua segmen TS dikembalikan sekaligus. Anda dapat menggunakan bilah progres pemutar untuk maju cepat dan putar ulang.Jika Anda menentukan keduanya, yaitu
lhs_enddanlhs_vodend, makalhs_vodendyang diutamakan.
Jika Anda tidak mengetahui waktu mulai dan akhir yang spesifik untuk bisnis Anda, Anda dapat mengkueri garis waktu pergeseran waktu untuk mendapatkannya.
Contoh berikut menunjukkan cara mengkueri garis waktu pergeseran waktu:
// Ganti nilai dalam tanda kurung sudut (<>) dengan nilai aktual Anda.
http://<DomainName>/openapi/timeline/query?aliyunols=on&app=<AppName>&stream=<StreamName>&format=ts&lhs_start_unix_s_0=<StartTime>&lhs_end_unix_s_0=<endTime>&auth_key=<auth_key>Berikut adalah contohnya:
Nama | Deskripsi |
Metode permintaan | GET |
URL | URL permintaan. Contoh: |
Parameter |
|
Penanganan error umum |
|
Contoh berikut menunjukkan tanggapan sampel:
{
"retCode": 0,
"description": "success",
"content": {
"current": 1514269063,
"timeline": [
{
"start": 1514269054,
"end": 1514269058
}
]
}
}Parameter | Deskripsi |
current | Waktu sistem saat ini. Pemutar dapat menggunakan bidang ini untuk menyinkronkan waktu. |
timeline | Periode pergeseran waktu yang valid, yang mencakup stempel waktu UNIX mulai dan akhir. |
start | Waktu mulai segmen yang valid (stempel waktu UNIX). Satuan: detik. |
end | Waktu akhir segmen yang valid (stempel waktu UNIX). Satuan: detik. |
Umumnya, satu pengambilan aliran menghasilkan satu objek timeline. Waktu start mendekati waktu mulai aliran langsung, dan waktu end mendekati waktu saat ini atau waktu akhir aliran langsung. Namun, beberapa objek timeline dapat dihasilkan karena faktor seperti gangguan aliran, pengambilan ulang, atau fluktuasi jaringan.
Anda dapat mengkueri volume data pergeseran waktu untuk domain tertentu di Konsol. Untuk informasi selengkapnya, lihat Kueri Penggunaan.
Penggunaan lanjutan
Memutar ulang aliran yang telah dikodekan ulang dengan pergeseran waktu
Anda dapat menggunakan fitur pergeseran waktu bersamaan dengan fitur Transkoding untuk memutar ulang aliran yang telah dikodekan ulang. Untuk memutar ulang aliran yang telah dikodekan ulang dengan pergeseran waktu, Anda harus terlebih dahulu mengonfigurasi Transkoding. Untuk informasi selengkapnya tentang cara mengonfigurasi Transkoding, lihat Transkoding aliran langsung.
Bagian ini mengasumsikan bahwa Anda telah menyelesaikan konfigurasi Transkoding.
Saat mengonfigurasi pergeseran waktu, Anda juga harus menghasilkan data pergeseran waktu untuk aliran yang telah dikodekan ulang. Contoh kode berikut menunjukkan cara melakukannya:
// Menentukan apakah akan mengabaikan aliran yang telah dikodekan ulang yang sesuai saat menghasilkan data pergeseran waktu. Nilai yang valid: true dan false. Nilai default: true.
openLiveShiftRequest.setIgnoreTranscode("<false>");Untuk mengaktifkan pemutaran pergeseran waktu, Add Time-shifting Parameters ke URL aliran yang telah dikodekan ulang.
Contoh berikut menunjukkan URL pemutaran:
http://<DomainName>/<AppName>/<StreamName_TranscodingTemplateID.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******Anda harus melakukan pengambilan aliran ulang untuk memutar ulang aliran yang telah dikodekan ulang dengan pergeseran waktu.
Untuk konfigurasi Transkoding yang dipicu oleh penarikan aliran, memutar ulang aliran yang telah dikodekan ulang dengan pergeseran waktu tidak memicu Transkoding. Anda harus memutar aliran langsung yang telah dikodekan ulang terlebih dahulu untuk memicu Transkoding. Anda juga dapat mengonfigurasi Transkoding agar dipicu oleh pengambilan aliran.
Saat ini, fitur pergeseran waktu tidak mendukung aliran yang telah dikodekan ulang multi-bitrate.
Memutar ulang aliran terenkapsulasi dengan pergeseran waktu
Untuk memutar ulang aliran terenkapsulasi dengan pergeseran waktu, gunakan fitur Time Shifting bersamaan dengan fitur Encapsulation.
ApsaraVideo Live mendukung layanan enkapsulasi aliran langsung. Layanan ini mendukung protokol pemutaran seperti CMAF dan Low-Latency HTTP Live Streaming (LL-HLS) untuk secara efektif mengurangi latensi streaming langsung. Setelah Anda mengaktifkan enkapsulasi aliran langsung, aliran ApsaraVideo Live diiris menjadi segmen TS atau CMAF. Segmen-segmen tersebut didistribusikan ke penonton menggunakan protokol HLS atau LL-HLS yang ditentukan. Daftar putar M3U8 yang diminta penonton berisi daftar alamat segmen yang terus diperbarui. Dibandingkan dengan HLS, LL-HLS dapat mengiris aliran menjadi bagian-bagian yang lebih kecil dengan durasi 0,2 hingga 1 detik. LL-HLS juga mendukung pemuatan blokir untuk daftar putar M3U8 dan bagian-bagiannya, sehingga mencapai latensi ujung-ke-ujung serendah 3 hingga 5 detik. Dibandingkan dengan format TS, format kontainer CMAF didukung oleh lebih banyak perangkat dan browser serta mendukung kodek yang lebih baru, seperti H.265.
Jika Anda tidak familiar dengan fitur enkapsulasi aliran langsung, lihat Enkapsulasi aliran langsung.
Bagian ini mengasumsikan bahwa Anda telah menyelesaikan konfigurasi enkapsulasi aliran langsung.
Untuk memutar ulang aliran terenkapsulasi dengan pergeseran waktu, Anda tidak perlu mengubah konfigurasi pergeseran waktu. Anda cukup menambahkan parameter pergeseran waktu ke URL aliran terenkapsulasi.
Contoh berikut menunjukkan URL pemutaran:
http://<DomainName>/<AppName>/<StreamName-ContainerFormat.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******Anda harus melakukan pengambilan aliran ulang untuk memutar ulang aliran terenkapsulasi dengan pergeseran waktu.
Untuk memutar ulang aliran yang terenkapsulasi dan telah dikodekan ulang dengan pergeseran waktu, Anda cukup menambahkan parameter pergeseran waktu ke URL aliran yang terenkapsulasi dan telah dikodekan ulang.
Referensi
Untuk informasi selengkapnya tentang API untuk pergeseran waktu, lihat Pergeseran waktu.
