All Products
Search
Document Center

ApsaraVideo Live:Time shifting

Last Updated:Aug 20, 2026

Time shifting memungkinkan penonton memutar ulang aliran live dari waktu mulai hingga waktu saat ini. Topik ini menjelaskan cara kerja time shifting dan cara mengirim permintaan.

Kasus penggunaan

Fitur time shifting memungkinkan penonton memutar mundur aliran live selama pemutaran. Misalnya, selama siaran olahraga langsung, penonton dapat menggunakan time shifting untuk menonton ulang bagian-bagian acara tersebut.

Cara kerja

ApsaraVideo Live memotong aliran menjadi segmen TS dan mendistribusikannya ke penonton menggunakan protokol HLS. Permintaan penonton untuk playlist M3U8 berisi daftar alamat segmen TS yang terus diperbarui. Untuk streaming live HLS standar, alamat segmen TS dan file TS-nya tidak disimpan, sehingga Anda tidak dapat memutar mundur aliran live. Saat Anda mengaktifkan time shifting, ApsaraVideo Live menyimpan informasi dan file segmen TS, memungkinkan Anda memutar mundur video dari awal aliran live hingga waktu saat ini.

Batasan

Time shifting mendukung maksimal 100.000 penonton bersamaan. Untuk mendukung lebih banyak penonton, ajukan tiket. Untuk informasi selengkapnya, lihat Hubungi kami.

Penggunaan

Catatan
  • Menggunakan fitur time shifting akan dikenakan biaya time shifting. Anda dikenai biaya berdasarkan jumlah data time-shifted yang ditulis dan spesifikasi pemutaran time-shifted. Untuk informasi selengkapnya tentang aturan penagihan, lihat Biaya time shifting.

  • Untuk informasi selengkapnya tentang wilayah yang mendukung fitur time shifting, lihat Wilayah yang didukung.

Untuk menggunakan time shifting, Anda harus menyelesaikan dua langkah berikut:

  1. Konfigurasikan fitur time shifting.

    Catatan

    Anda harus mengaktifkan fitur ini untuk menyimpan konten aliran live guna time shifting.

  2. Kirim permintaan dari client untuk menggunakan fitur time shifting.

Konfigurasi time shifting

Mengonfigurasi Pergeseran Waktu di Konsol

  1. Masuk ke Konsol ApsaraVideo Live.

  2. Di panel navigasi sebelah kiri, pilih Feature Management > Time Shifting untuk membuka halaman Time Shifting.

  3. Pilih domain streaming yang ingin Anda konfigurasi.

  4. Klik Add.

  5. Konfigurasi pergeseran waktu.

    Tabel berikut menjelaskan parameter untuk konfigurasi time shifting.

    Parameter

    Deskripsi

    AppName

    Nama aplikasi. Konfigurasi ini hanya berlaku jika AppName cocok dengan AppName yang digunakan untuk stream ingest. Nama dapat memiliki panjang hingga 255 karakter dan dapat berisi angka, huruf besar, huruf kecil, tanda hubung (-), dan garis bawah (_). Tanda hubung dan garis bawah tidak boleh berada di awal nama. Untuk mengonfigurasi time shifting di tingkat domain, masukkan tanda bintang (*).

    Stream Name

    Nama aliran.

    Time-shift Scope

    • Original Only: Hanya aliran asli yang mendukung time shifting.

    • Original & Transcoded: Aliran asli dan hasil transkode keduanya mendukung time shifting.

    Retention Period

    ApsaraVideo Live menyediakan periode retensi berikut:

    • 1 hari

    • 3 hari

    • 7 hari

    • 15 hari

    • 30 hari

    Catatan
    • Setelah Anda mengonfigurasi time shifting, Anda harus melakukan re-ingest aliran agar konfigurasi berlaku.

    • Anda dapat langsung mengakses aliran time-shifted menggunakan URL yang sesuai dengan domain streaming. Untuk informasi selengkapnya tentang spesifikasi URL, lihat Aturan time shifting.

    • Jika domain streaming utama dikaitkan dengan sub-domain streaming, Anda harus mengaktifkan time shifting untuk sub-domain streaming tersebut. Jika tidak, konfigurasi time shifting tidak berlaku untuk sub-domain streaming tersebut.

  6. Klik OK.

Konfigurasi time shifting menggunakan API

// File ini dibuat secara otomatis, jangan diedit. Terima kasih.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
    /**
     * description :
     * <p>Menginisialisasi client menggunakan kredensial.</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.live20161101.Client createClient() throws Exception {
        // Untuk lingkungan produksi, kami merekomendasikan menggunakan metode yang lebih aman tanpa kredensial. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial, lihat https://www.alibabacloud.com/help/document_detail/378657.html.
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setCredential(credential);
        // Untuk endpoint, lihat https://api.alibabacloud.com/product/live.
        config.endpoint = "live.aliyuncs.com";
        return new com.aliyun.live20161101.Client(config);
    }
    public static void main(String[] args_) throws Exception {
        com.aliyun.live20161101.Client client = Sample.createClient();
        com.aliyun.live20161101.models.OpenLiveShiftRequest openLiveShiftRequest = new com.aliyun.live20161101.models.OpenLiveShiftRequest()
                .setRegionId("<Your RegionId>")
                .setDomainName("<Your DomainName>")
                .setAppName("<Your AppName>")
                .setStreamName("<Your StreamName>");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // Saat menyalin kode untuk dijalankan, cetak respons API sendiri.
            client.openLiveShiftWithOptions(openLiveShiftRequest, runtime);
        } catch (TeaException error) {
            // Ini hanya untuk tujuan demonstrasi. Di lingkungan produksi Anda, tangani exception dengan hati-hati dan jangan abaikan.
            // Pesan error
            System.out.println(error.getMessage());
            // Alamat diagnostik
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // Ini hanya untuk tujuan demonstrasi. Di lingkungan produksi Anda, tangani exception dengan hati-hati dan jangan abaikan.
            // Pesan error
            System.out.println(error.getMessage());
            // Alamat diagnostik
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}
Catatan
  • Anda dapat mengatur AppName ke tanda bintang (*) untuk menerapkan konfigurasi ke semua aliran live di bawah domain tertentu.

  • Anda dapat mengatur StreamName ke tanda bintang (*) untuk menerapkan konfigurasi ke semua aliran live di bawah AppName tertentu.

  • Setelah menambahkan konfigurasi, Anda dapat memanggil operasi DescribeLiveShiftConfigs untuk mengkueri konfigurasi time shifting domain tertentu.

  • Untuk informasi selengkapnya tentang cara menggunakan Java SDK, lihat Panduan Pengguna Java SDK.

  • Anda harus melakukan re-ingest aliran agar konfigurasi berlaku.

  • Untuk informasi selengkapnya tentang parameter, lihat OpenLiveShift.

Meminta pemutaran time-shifted

Setelah Anda mengonfigurasi time shifting, ApsaraVideo Live menyimpan file segmen TS dari aliran live. Client kemudian dapat mengirim permintaan pemutaran time-shifted untuk memutar ulang segmen aliran live yang telah direkam sebelumnya.

Kode berikut memberikan contoh permintaan pemutaran time-shifted:

http://<DomainName>/<AppName>/<StreamName.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******

Seperti yang ditunjukkan dalam contoh, permintaan time shifting mirip dengan URL streaming live untuk playlist M3U8, tetapi mencakup dua parameter tambahan. aliyunols=on adalah parameter yang diperlukan, dan lhs_offset_unix_s_0=300 menunjukkan putar mundur selama 300 detik.

Catatan
  • Saat mengirim permintaan time shifting melalui jaringan pengiriman konten (CDN), Anda harus menyertakan parameter aliyunols=on.

  • Saat ini, pemutaran time-shifted hanya mendukung URL streaming live dalam format M3U8.

  • Gunakan Pemutar Video Apsara untuk memutar konten time-shifted. Untuk informasi selengkapnya tentang cara menggunakan Pemutar Video Apsara, lihat SDK Pemutar.

Dalam contoh ini, konten live diputar mundur selama 300 detik. Saat memutar konten time-shifted, 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:

  • start: waktu mulai pemutaran.

  • end: waktu akhir pemutaran.

  • vodend: menentukan waktu akhir pemutaran dalam mode video sesuai permintaan (VOD).

    Catatan

    Saat type bernilai vodend, pemutaran berada dalam mode VOD. Server mengembalikan playlist lengkap semua segmen TS dalam rentang waktu yang ditentukan sekaligus, diakhiri dengan tag endlist.

  • offset: waktu offset untuk memutar mundur.

Format waktu untuk time shifting. Nilai yang valid:

  • unix: Stempel waktu UNIX.

  • human: dalam format YYYYMMDDHHMMSS. Contoh: 20170809230130.

Unit waktu untuk time shifting. Nilai yang valid:

  • s: detik.

  • ms: milidetik.

Zona waktu. Nilai yang valid: 0 hingga 9, yang menunjukkan UTC+*. 0 menunjukkan UTC, dan 8 menunjukkan Waktu Standar China.

Catatan

Jika Anda mengatur format ke unix, atur zone ke 0.

Contoh berikut menunjukkan parameter time shifting:

  • lhs_start_human_s_8=20170809200010

  • lhs_start_unix_s_0=1502280113

  • lhs_end_human_s_8=20170809200010

  • lhs_vodend_unix_s_0=1502280113

  • lhs_offset_unix_ms_0=1800000 (putar mundur selama 30 menit)

Penting
  • Anda harus menentukan salah satu lhs_start atau lhs_offset. Jika Anda menentukan lhs_start dan lhs_offset, lhs_offset lebih diutamakan.

  • lhs_end/lhs_vodend adalah parameter opsional. Jika Anda tidak menentukan lhs_end/lhs_vodend, pemutaran akan berlanjut dalam mode live hingga stream ingest berakhir.

  • Jika Anda menentukan lhs_end, pemutaran akan berlanjut dalam mode live hingga waktu lhs_end yang ditentukan.

  • Jika Anda menentukan lhs_vodend, pemutaran akan berlanjut dalam mode video sesuai permintaan (VOD) hingga waktu lhs_vodend yang ditentukan. Dalam mode VOD, semua segmen TS dikembalikan sekaligus, dan Anda dapat menggunakan bilah progres pemutar untuk mempercepat atau memutar mundur.

  • Jika Anda menentukan keduanya, lhs_end dan lhs_vodend, lhs_vodend yang akan diprioritaskan.

Jika Anda tidak mengetahui waktu mulai dan akhir yang spesifik, Anda dapat mengkueri timeline time shifting untuk mendapatkannya.

Contoh berikut menunjukkan cara mengajukan kueri lini masa 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>

Tabel berikut menjelaskan parameter dalam contoh tersebut.

Parameter

Deskripsi

Metode permintaan

GET

URL

URL permintaan. Contoh: http://{domain}/openapi/timeline/query, di mana {domain} adalah domain streaming Anda.

Parameter

  • aliyunols (diperlukan): on. (bidang tetap)

  • app (diperlukan): Nama aplikasi.

  • stream (diperlukan): Nama aliran.

  • format (diperlukan): ts. (bidang tetap)

    Catatan

    Saat ini, API hanya mendukung pengkuerian data time-shifted dalam format ts.

  • lhs_start_unix_s_0 (diperlukan): Stempel waktu UNIX dari awal rentang waktu kueri. Contoh: 1724295706. Satuan: detik.

  • lhs_end_unix_s_0 (diperlukan): Stempel waktu UNIX dari akhir rentang waktu kueri. Contoh: 1724317306. Satuan: detik.

  • auth_key: Kunci otentikasi. Kunci ini menggunakan algoritma enkripsi yang same dengan kunci yang digunakan untuk URL streaming. Jika Anda tidak familiar dengan otentikasi dan enkripsi, lihat Contoh Kode Otentikasi.

Penanganan error umum

  • 403: Periksa apakah proses enkripsi nilai auth_key Anda benar.

Contoh berikut menunjukkan respons 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 time shifting 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.

Catatan
  • Umumnya, satu stream ingest menghasilkan satu objek timeline. Waktu mulai sesuai dengan waktu mulai aliran live, dan waktu akhir mendekati waktu saat ini atau waktu akhir aliran live. Namun, faktor seperti gangguan aliran, re-ingest, atau fluktuasi jaringan dapat menghasilkan beberapa objek timeline.

  • Anda dapat mengkueri volume data time shifting untuk domain tertentu di Konsol. Untuk informasi selengkapnya, lihat Kueri penggunaan.

Penggunaan lanjutan

Pemutaran time-shifted hasil transkode

Anda dapat menggunakan fitur time shifting bersama dengan fitur transkoding untuk memutar aliran hasil transkode. Untuk memutar aliran hasil transkode dengan time shifting, Anda harus terlebih dahulu mengonfigurasi transkoding. Untuk informasi selengkapnya tentang cara mengonfigurasi transkoding, lihat Transkoding aliran live.

Bagian ini mengasumsikan bahwa Anda telah menyelesaikan konfigurasi transkoding.

Saat mengonfigurasi time shifting, Anda juga harus menghasilkan data time-shifted untuk aliran hasil transkode. Contoh kode berikut menunjukkan cara melakukannya:

// Menentukan apakah akan mengabaikan aliran hasil transkode yang sesuai saat menghasilkan data time-shifted. Nilai yang valid: true dan false. Nilai default: true.
openLiveShiftRequest.setIgnoreTranscode("<false>");

Untuk mengaktifkan pemutaran time-shifted, add the time-shifting parameters ke URL aliran hasil transkode.

Contoh berikut menunjukkan URL pemutaran:

http://<DomainName>/<AppName>/<StreamName_TranscodingTemplateID.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
Catatan
  • Anda harus melakukan re-ingest aliran untuk memutar aliran hasil transkode dengan time shifting.

  • Untuk konfigurasi transkoding yang dipicu oleh stream pulling, memutar aliran hasil transkode dengan time shifting tidak memicu transkoding. Anda harus memutar aliran live hasil transkode terlebih dahulu untuk memicu transkoding. Anda juga dapat mengonfigurasi transkoding agar dipicu oleh stream ingest.

Penting
  • Saat ini, fitur time shifting tidak mendukung aliran hasil transkode multi-bitrate.

Pemutaran time-shifted terenkapsulasi

Anda dapat menggunakan fitur Time Shifting bersama dengan fitur Encapsulation.

Catatan

Layanan encapsulation ApsaraVideo Live mengurangi latensi dengan menggunakan protokol modern seperti Low-Latency HTTP Live Streaming (LL-HLS) dan format kontainer CMAF. LL-HLS mencapai latensi end-to-end 3 hingga 5 detik dengan menggunakan segmen yang lebih pendek (0,2 hingga 1 detik) dan memblokir pemuatan playlist. Format CMAF menawarkan kompatibilitas perangkat dan browser yang lebih luas dibandingkan TS tradisional serta mendukung kodek baru seperti H.265.

Jika Anda tidak familiar dengan fitur encapsulation aliran live, lihat Encapsulation aliran live.

Bagian ini mengasumsikan bahwa Anda telah menyelesaikan konfigurasi encapsulation aliran live.

Untuk memutar aliran terenkapsulasi dengan time shifting, Anda tidak perlu mengubah konfigurasi time shifting. Anda cukup menambahkan parameter time shifting ke URL aliran terenkapsulasi.

Contoh berikut menunjukkan URL pemutaran:

http://<DomainName>/<AppName>/<StreamName-EncapsulationFormat.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
Catatan
  • Anda harus melakukan re-ingest aliran untuk memutar aliran terenkapsulasi dengan time shifting.

  • Untuk memutar aliran yang terenkapsulasi dan hasil transkode dengan time shifting, Anda cukup menambahkan parameter time shifting ke URL aliran terenkapsulasi dan hasil transkode.

Referensi

Untuk informasi selengkapnya tentang API untuk time shifting, lihat Time shifting.