全部产品
Search
文档中心

ApsaraVideo Live:Enkapsulasi streaming langsung

更新时间:Feb 05, 2026

Enkapsulasi streaming langsung mengonversi aliran siaran langsung Anda ke dalam berbagai format kontainer untuk pemutaran melalui berbagai protokol streaming dengan latensi rendah.

Format kontainer yang didukung

ApsaraVideo Live mendukung Real-Time Messaging Protocol (RTMP), HTTP-FLV, dan HTTP Live Streaming (HLS). Untuk mengurangi latensi dan meningkatkan kompatibilitas, enkapsulasi streaming langsung mengonversi aliran ke dalam format kontainer berbeda di cloud sebelum dikirimkan.

Tabel berikut menjelaskan format kontainer yang didukung:

Container format

Supported streaming protocol

Supported codec

TS

Low-Latency HLS (LL-HLS)

Audio: AAC, OPUS, AC3, EAC3, MP3

Video: H.264, H.265

CMAF

LL-HLS, HLS, DASH

Audio: AAC

Video: H.264, H.265

Cara kerja

Enkapsulasi streaming langsung membagi aliran menjadi segmen-segmen dalam format TS atau CMAF. Sistem kemudian mendistribusikan segmen tersebut melalui protokol HLS, LL-HLS, atau DASH. Untuk setiap aliran, sistem menghasilkan file manifest yang mencatat URL segmen secara berurutan. Saat klien meminta streaming langsung, server mengembalikan manifest terbaru.

Anda dapat menggabungkan fitur ini dengan live stream transcoding dan time shifting untuk meningkatkan pengalaman streaming.

Keunggulan

Implementasikan streaming langsung latensi rendah

Dibandingkan HLS standar, LL-HLS membagi aliran menjadi partial segments yang lebih kecil (200 ms hingga 1 detik). Pendekatan ini menghindari pemuatan ulang daftar putar dan mengurangi latensi end-to-end menjadi 3 hingga 5 detik.

Tingkatkan kompatibilitas dengan berbagai perangkat

Secara default, ApsaraVideo Live mendistribusikan streaming langsung melalui HLS menggunakan format kontainer TS. Format ini tidak kompatibel dengan beberapa perangkat dan browser. Gunakan enkapsulasi untuk mengemas konten ke dalam format CMAF, yang mendukung lebih banyak perangkat, platform, dan kodek (termasuk H.265).

Batasan

Ukuran GOP

  • Ukuran GOP dari aliran yang diingest harus konsisten. Jika Anda melakukan enkapsulasi pada aliran yang telah dikodekan ulang, pastikan ukuran GOP-nya juga stabil.

  • Durasi setiap segmen harus merupakan kelipatan dari ukuran GOP.

Protokol LL-HLS

  • Tersendat (stuttering) dapat meningkat dalam kondisi jaringan buruk. Kami menyarankan menggunakan enkapsulasi bersama transcoding multi-bitrate, yang secara otomatis menyesuaikan bitrate.

  • Atur ukuran GOP menjadi 1 atau 2 detik untuk mencegah tersendat atau kegagalan pemutaran.

  • Domain streaming utama dapat mendukung hingga 100.000 penonton. Untuk menambah kuota ini, submit a ticket.

Penyebaran konfigurasi

Saat Anda menambahkan konfigurasi enkapsulasi untuk pertama kalinya, sistem akan memperbarui pengaturan pengiriman konten. Perubahan ini memerlukan waktu 3 hingga 5 menit untuk berlaku.

Buat konfigurasi enkapsulasi

Buat konfigurasi enkapsulasi di Konsol atau dengan memanggil operasi API.

Catatan

Untuk aliran yang sedang berlangsung, konfigurasi hanya berlaku setelah Anda mengingest ulang aliran tersebut.

Konsol

  1. Masuk ke ApsaraVideo Live console.

  2. Pada panel navigasi kiri, pilih Feature Management > Encapsulation.

  3. Pilih domain streaming, lalu klik Add.

  4. Pada kotak dialog Encapsulation Settings, konfigurasikan parameter berikut:

    Parameter

    Description

    AppName

    Masukkan tanda bintang (*) untuk menerapkan ke semua aplikasi. Untuk menargetkan aplikasi tertentu, masukkan AppName dari URL ingest.

    StreamName

    Masukkan tanda bintang (*) untuk menerapkan ke semua aliran. Untuk menargetkan aliran tertentu, masukkan nama aliran tersebut.

    Protocol

    Pilih format kontainer dan protokol pemutaran: Nilai yang valid:

    • HLS - CMAF

    • LL-HLS - CMAF

    • LL-HLS - TS

    • DASH - CMAF

    • HLS & DASH - CMAF

    Segment Quantity

    Tentukan jumlah segmen per file manifest. Nilai yang valid: 3 hingga 5.

    Segment Length (s)

    Untuk HLS atau DASH: Masukkan bilangan bulat antara 1 hingga 10. Atur nilai ini sebagai kelipatan ukuran GOP Anda (GOP yang direkomendasikan: 5 detik).

    Untuk LL-HLS: Masukkan 1 atau 2. Atur sebagai kelipatan ukuran GOP Anda (GOP yang direkomendasikan: 1 detik).

    Part Length (ms)

    (LL-HLS only) Tentukan durasi partial segments. Nilai yang valid: 200 hingga 1.000. Kami merekomendasikan nilai sedikit lebih besar dari sepertiga panjang segmen.

    Transcoded Stream

    Tentukan apakah akan melakukan enkapsulasi pada aliran yang telah dikodekan ulang. Nilai yang valid:

    • Source Stream Only

    • Transcoded Stream Included

    Catatan

    Jika domain streaming Anda menggunakan live center di luar Tiongkok daratan (Singapura, Jerman, Jepang, atau Indonesia), penundaan pemutaran dapat meningkat. Uji konfigurasi Anda sebelum digunakan di lingkungan produksi.

  5. Klik OK.

API

Panggil API AddLivePackageConfig untuk menambahkan konfigurasi enkapsulasi.

Ganti placeholder, termasuk <Your RegionId>, <Your DomainName>, <Your AppName>, dan <Your StreamName>.

Untuk nilai protokol yang valid, lihat AddLivePackageConfig.

Contoh kode

// This file is auto-generated, don't edit it. Thanks.
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class AddLivePackageConfig {
    public static void main(String[] args) throws Exception {

        // HttpClient Configuration
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Set the connection timeout time, the default is 10 seconds
                .responseTimeout(Duration.ofSeconds(10)) // Set the response timeout time, the default is 20 seconds
                .maxConnections(128) // Set the connection pool size
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Set the connection pool timeout, the default is 30 seconds
                // Configure the proxy
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // If it is an https connection, you need to configure the certificate, or ignore the certificate(.ignoreSSL(true))
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Configure Credentials authentication information, including ak, secret, token
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
                .build());

        // Configure the Client
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // Region ID
                //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Service-level configuration
                // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // For endpoints, refer to https://api.alibabacloud.com/product/live
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Parameter settings for API request
        AddLivePackageConfigRequest addLivePackageConfigRequest = AddLivePackageConfigRequest.builder()
                .regionId("<Your RegionId>")
                .domainName("<Your DomainName>")
                .appName("<Your AppName>")
                .streamName("<Your StreamName>")
                // Request-level configuration rewrite, can set Http request parameters, etc.
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Asynchronously get the return value of the API request
        CompletableFuture<AddLivePackageConfigResponse> response = client.addLivePackageConfig(addLivePackageConfigRequest);
        // Synchronously get the return value of the API request
        AddLivePackageConfigResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Asynchronous processing of return values
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Handling exceptions
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Finally, close the client
        client.close();
    }

}
Catatan
  • Untuk petunjuk penyiapan SDK, lihat Use the Java SDK.

  • Setelah dikonfigurasi, URL streaming kualitas asli tetap dapat diakses.

Ingest dan putar aliran yang telah dienkapsulasi

Ingest aliran

Agar pemutaran berjalan lancar, pertahankan ukuran GOP aliran yang diingest secara konsisten.

Gunakan Open Broadcaster Software (OBS) dengan pengaturan yang direkomendasikan berikut:

image.png

Putar aliran yang telah dienkapsulasi

  1. Dapatkan URL streaming. Formatnya bervariasi tergantung protokol:

    Protocol

    URL format

    HLS

    http://<DomainName>/<AppName>/<StreamName>.m3u8?aliyunols=on&auth_key=<AuthKey>

    DASH

    http://<DomainName>/<AppName>/<StreamName>.mpd?aliyunols=on&auth_key=<AuthKey>

    LL-HLS

    http://<DomainName>/<AppName>/<StreamName>-llhls.m3u8?aliyunols=on&auth_key=<AuthKey>

    Penting

    Parameter aliyunols=on wajib digunakan untuk URL aliran yang telah dienkapsulasi.

    Anda dapat menggunakan URL generator untuk menghasilkan URL streaming. Format URL bergantung pada konfigurasi Anda:

    Container format

    Protocol

    Generated URL types

    TS

    LL-HLS

    LL-HLS dan HLS

    CMAF

    LL-HLS

    LL-HLS dan HLS

    CMAF

    HLS

    HLS

    CMAF

    DASH

    DASH

    CMAF

    HLS & DASH

    HLS dan DASH

  2. Putar aliran menggunakan pemutar yang kompatibel. Kami merekomendasikan ApsaraVideo Player.

    Untuk menggunakan demo web ApsaraVideo Player:image

    a. Atur Video Type ke Broadcast.

    b. Masukkan URL streaming.

    c. Klik tab Preview untuk melihat pratinjau video.

    Penting

    Untuk menggunakan versi web ApsaraVideo Player, Anda harus mengonfigurasi sertifikat HTTPS dan mengatur header Access-Control-Allow-Origin untuk akses lintas domain. Untuk detailnya, lihat HTTPS settings dan Configure HTTP Headers.

Penggunaan lanjutan

Enkapsulasi aliran yang telah dikodekan ulang

Anda dapat menggabungkan enkapsulasi dengan transcoding untuk mengemas aliran yang telah dikodekan ulang.

Prosedur

  1. Konfigurasikan transcoding untuk aliran sumber Anda. Untuk informasi selengkapnya, lihat Live stream transcoding.

  2. Saat membuat konfigurasi enkapsulasi, atur Transcoded Stream ke Transcoded Stream Included di Konsol atau atur IgnoreTranscode ke false melalui API AddLivePackageConfig:

    // Include transcoded streams in encapsulation process (default: true = exclude)
    addLivePackageConfigRequest.setIgnoreTranscode(false);
  3. Hasilkan URL streaming untuk aliran yang telah dikodekan ulang dan dienkapsulasi:

    • Template transcoding default atau kustom: Tambahkan _<template-id> ke StreamName. Contoh:

      http://<DomainName>/<AppName>/<StreamName>_<template-id>-llhls.m3u8?aliyunols=on&auth_key=<AuthKey>
    • Template transcoding multi-bitrate: Tambahkan _<template-group-id> ke StreamName.

    Catatan

    Gabungkan enkapsulasi dengan transcoding multi-bitrate untuk mengaktifkan pemutaran adaptif, yang memungkinkan pemutar secara otomatis beralih ke bitrate lebih rendah saat kondisi jaringan buruk.

    Perilaku URL output berbeda tergantung jenis template transcoding yang digunakan:

    Untuk transcoding multi-bitrate:

    Konfigurasi enkapsulasi menggantikan format output aliran yang telah dikodekan ulang. Misalnya, jika Anda menentukan format enkapsulasi DASH - CMAF, sistem hanya akan menghasilkan URL DASH - CMAF untuk aliran multi-bitrate; sistem tidak akan menghasilkan URL HLS.

    Untuk transcoding default atau kustom:

    URL aliran yang telah dikodekan ulang tetap tidak terpengaruh. Sebagai gantinya, sistem menghasilkan URL tambahan yang telah dienkapsulasi untuk aliran tersebut.

  4. Putar aliran menggunakan pemutar yang kompatibel.

Pergeseran waktu untuk aliran yang telah dienkapsulasi

Anda dapat menggunakan pergeseran waktu dengan aliran yang telah dienkapsulasi. Untuk informasi selengkapnya, lihat time shifting.

Saat pergeseran waktu diaktifkan, format segmen yang telah digeser mengikuti panjang segmen dan format yang ditentukan dalam konfigurasi enkapsulasi Anda.

  • HLS atau LL-HLS (CMAF): Segmen yang telah digeser berada dalam format CMAF.

  • LL-HLS (TS): Segmen yang telah digeser berada dalam format TS.

Referensi API

Operasi API enkapsulasi streaming langsung