Tüm Ürünler
Search
Belge Merkezi

ApsaraVideo Live:Canlı yayın kapsülleme

Son Güncelleme:Oct 02, 2026

Canlı yayın kapsülleme, düşük gecikme süresiyle çeşitli akış protokolleri üzerinden oynatma yapılabilmesi için canlı yayınlarınızı farklı konteyner formatlarına dönüştürür.

Desteklenen konteyner formatları

ApsaraVideo Live; Real-Time Messaging Protocol (RTMP), HTTP-FLV ve HTTP Live Streaming (HLS) protokollerini destekler. Gecikme süresini azaltmak ve uyumluluğu artırmak için canlı yayın kapsülleme, teslimattan önce yayınları cloud ortamında farklı konteyner formatlarına dönüştürür.

Aşağıdaki tabloda desteklenen konteyner formatları açıklanmaktadır:


Konteyner formatı


Desteklenen akış protokolü


Desteklenen kodlama


TS


Low-Latency HLS (LL-HLS)

Ses: AAC, OPUS, AC3, EAC3, MP3

Video: H.264, H.265


CMAF


LL-HLS, HLS, DASH

Ses: AAC

Video: H.264, H.265

Çalışma mantığı

Canlı yayın kapsülleme, yayınları TS veya CMAF formatında segmentlere böler. Sistem daha sonra bu segmentleri HLS, LL-HLS veya DASH protokolleri aracılığıyla dağıtır. Her yayın için sistem, segment URL'lerini sırayla kaydeden bir manifest dosyası oluşturur. Bir istemci canlı yayını istediğinde sunucu en güncel manifest dosyasını döndürür.

Akış deneyimini iyileştirmek için bu özelliği canlı yayın transkodlama ve zaman kaydırma ile birlikte kullanabilirsiniz.

Avantajlar

  • Düşük gecikmeli canlı yayınlama gerçekleştirin

    Standart HLS'e kıyasla LL-HLS, yayınları daha küçük kısmi segmentlere (200 ms ile 1 saniye arasında) böler. Bu yaklaşım, çalma listesinin yeniden yüklenmesini engeller ve uçtan uca gecikme süresini 3 ila 5 saniyeye düşürür.

  • Birden fazla cihazla uyumluluğu artırın

    ApsaraVideo Live varsayılan olarak canlı yayınları TS konteyner formatını kullanarak HLS üzerinden dağıtır. Bu format bazı cihazlar ve tarayıcılarla uyumlu değildir. İçeriği CMAF formatında paketlemek için kapsüllemeyi kullanın; bu format daha geniş bir cihaz, platform ve kodlama yelpazesini (H.265 dahil) destekler.

  • Mevcut yayınlarınız üzerinde müdahaleci değildir

    Canlı yayın kapsüllemeyi etkinleştirmek müdahaleci olmayan bir işlemdir. Bu işlem yalnızca orijinal alınan yayına dayalı olarak ek bir kapsüllenmiş oynatma yayını oluşturur. Mevcut RTMP, HTTP-FLV ve HLS yayınlarınız önceki gibi çalışmaya devam eder ve kayıt yapılandırmalarınız etkilenmez. Kapsüllemeyi etkinleştirdikten sonra CMAF ve Low-Latency HLS (LL-HLS) formatlarında yeni akış URL'leri kullanılabilir hale gelir.

Sınırlamalar

GOP boyutu

  • Alınan yayınların GOP boyutu tutarlı olmalıdır. Transkodlanmış bir yayını kapsüllerseniz GOP boyutunun da kararlı olduğundan emin olun.

  • Her segmentin süresi GOP boyutunun katı olmalıdır.

LL-HLS protokolü

  • Zayıf ağ koşullarında takılma sorunu artabilir. Bitrate'i otomatik olarak ayarlayan çoklu bitrate transkodlama ile birlikte kapsüllemeyi kullanmanızı öneririz.

  • Takılmayı veya oynatma hatasını önlemek için GOP boyutunu 1 veya 2 saniye olarak ayarlayın.

  • Bir ana akış alan adı en fazla 100.000 izleyiciyi destekleyebilir. Bu kotayı artırmak için bir destek talebi gönderin.

Yapılandırma yayılımı

İlk kez bir kapsülleme yapılandırması eklediğinizde sistem içerik teslimat ayarlarını günceller. Bu değişikliklerin etkili olması 3 ila 5 dakika sürer.

Kapsülleme yapılandırması oluşturma

Konsolda veya API çağrısı yaparak kapsülleme yapılandırması oluşturun.

Not

Devam eden bir yayın için yapılandırma, yayını yeniden aldıktan sonra etkili olur.

Konsol

  1. ApsaraVideo Live konsolu oturumunu açın.

  2. Sol gezinme bölmesinde Feature Management > Encapsulation seçeneğini belirleyin.

  3. Bir akış alan adı seçin ve ardından Add düğmesine tıklayın.

  4. Encapsulation Settings iletişim kutusunda aşağıdaki parametreleri belirtin:

    Parametre

    Açıklama

    AppName

    Tüm uygulamalara uygulamak için bir yıldız işareti (*) girin. Belirli bir uygulamayı hedeflemek için alma URL'sindeki AppName değerini girin. Değer 255 karakterden uzun olamaz.

    StreamName

    Tüm yayınlara uygulamak için bir yıldız işareti (*) girin. Belirli bir yayını hedeflemek için yayın adını girin. Değer 255 karakterden uzun olamaz.

    Protocol

    Konteyner formatını ve oynatma protokolünü seçin: Geçerli değerler:

    • HLS - CMAF

    • LL-HLS - CMAF

    • LL-HLS - TS

    • DASH - CMAF

    • HLS & DASH - CMAF

    Segment Quantity

    Manifest dosyası başına segment sayısını belirtin. Geçerli değerler: 3 ila 5.

    Segment Length (s)

    HLS veya DASH için: 1 ila 10 arasında bir tamsayı girin. Bu değeri GOP boyutunuzun katı olacak şekilde ayarlayın (Önerilen GOP: 5 sn).

    LL-HLS için: 1 veya 2 girin. Bu değeri GOP boyutunuzun katı olacak şekilde ayarlayın (Önerilen GOP: 1 sn).

    Part Length (ms)

    (Yalnızca LL-HLS) Kısmi segmentlerin süresini belirtin. Geçerli değerler: 200 ila 1.000. Segment uzunluğunun üçte birinden biraz daha büyük bir değer önerilir.

    Transcoded Stream

    Transkodlanmış yayınların kapsüllenip kapsüllenmeyeceğini belirtin. Geçerli değerler:

    • Source Stream Only

    • Transcoded Stream Included

    Not

    Akış alan adınız Çin anakarası dışındaki (Singapur, Almanya, Japonya veya Endonezya) bir canlı merkez kullanıyorsa oynatma gecikmesi artabilir. Üretim öncesi yapılandırmanızı test edin.

  5. OK düğmesine tıklayın.

API

Bir kapsülleme yapılandırması eklemek için AddLivePackageConfig API'sini çağırın.

<Your RegionId>, <Your DomainName>, <Your AppName> ve <Your StreamName> gibi yer tutucuları değiştirin.

Geçerli protokol değerleri için AddLivePackageConfig konusuna bakın.

Örnek kod

// 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>")
                .setProtocol("<Protocol>");
                // 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();
    }

}
Not
  • SDK kurulum talimatları için Java SDK'yı Kullanma konusuna bakın.

  • Yapılandırmadan sonra orijinal kalitedeki akış URL'sine erişilebilir durumda kalır.

Kapsüllenmiş bir yayını alma ve oynatma

Yayın alma

Sorunsuz oynatma için alınan yayınınızın GOP boyutunu tutarlı tutun.

Aşağıdaki önerilen ayarlarla Open Broadcaster Software (OBS) kullanın:

image.png

Kapsüllenmiş bir yayını oynatma

  1. Akış URL'sini edinin. Format protokole göre değişir:


    Protokol


    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>

    Önemli

    Kapsüllenmiş akış URL'leri için aliyunols=on parametresi gereklidir.

    Akış URL'leri oluşturmak için URL oluşturucu kullanabilirsiniz. URL formatı yapılandırmanıza bağlıdır:


    Konteyner formatı


    Protokol


    Oluşturulan URL türleri


    TS


    LL-HLS


    LL-HLS ve HLS


    CMAF


    LL-HLS


    LL-HLS ve HLS


    CMAF


    HLS


    HLS


    CMAF


    DASH


    DASH


    CMAF


    HLS & DASH


    HLS ve DASH

  2. Yayını uyumlu bir oynatıcı ile oynatın. ApsaraVideo Player kullanmanızı öneririz.

    ApsaraVideo Player web demosunu kullanmak için:image

    a. Video Type değerini Broadcast olarak ayarlayın.

    b. Akış URL'sini girin.

    c. Videoyu önizlemek için Preview sekmesine tıklayın.

    Önemli

    ApsaraVideo Player web sürümünü kullanmak için HTTPS sertifikalarını yapılandırmanız ve etki alanı arası erişim için Access-Control-Allow-Origin üstbilgisini ayarlamanız gerekir. Ayrıntılar için HTTPS ayarları ve HTTP Üstbilgilerini Yapılandırma konularına bakın.

Gelişmiş kullanım

Transkodlanmış yayınları kapsülleme

Transkodlanmış yayınları paketlemek için kapsüllemeyi transkodlama ile birleştirebilirsiniz.

Yordam

  1. Kaynak yayınınız için transkodlamayı yapılandırın. Daha fazla bilgi için Kullanım senaryoları konusuna bakın.

  2. Bir kapsülleme yapılandırması oluştururken konsolda Transcoded Stream değerini Transcoded Stream Included olarak ayarlayın veya AddLivePackageConfig API'si aracılığıyla IgnoreTranscode değerini false olarak ayarlayın:

    // Include transcoded streams in encapsulation process (default: true = exclude)
    addLivePackageConfigRequest.setIgnoreTranscode(false);
  3. Kapsüllenmiş transkodlanmış yayın için akış URL'sini oluşturun:

    • Varsayılan veya özel transkodlama şablonu: StreamName değerine _<template-id> ekleyin. Örnek:

      http://<DomainName>/<AppName>/<StreamName>_<template-id>-llhls.m3u8?aliyunols=on&auth_key=<AuthKey>
    • Çoklu bitrate transkodlama şablonu: StreamName değerine _<template-group-id> ekleyin.

    Not

    Oynatıcıların zayıf ağ koşullarında otomatik olarak daha düşük bir bitrate'e geçmesine olanak tanıyan uyarlanabilir oynatmayı etkinleştirmek için kapsüllemeyi çoklu bitrate transkodlama ile birleştirin.

    Çıktı URL'lerinin davranışı kullanılan transkodlama şablonunun türüne göre farklılık gösterir:

    Çoklu bitrate transkodlama için:

    Kapsülleme yapılandırması, transkodlanmış yayınların çıktı formatını geçersiz kılar. Örneğin, DASH - CMAF gibi bir kapsülleme formatı belirtirseniz sistem çoklu bitrate yayınları için yalnızca DASH - CMAF URL'leri oluşturur; HLS URL'leri oluşturmaz.

    Varsayılan veya özel transkodlama için:

    Orijinal transkodlanmış yayın URL'leri etkilenmez. Bunun yerine sistem bu transkodlanmış yayınlar için ek kapsüllenmiş URL'ler oluşturur.

  4. Yayını uyumlu bir oynatıcı ile oynatın.

Kapsüllenmiş yayınlar için zaman kaydırma

Kapsüllenmiş yayınlarla birlikte zaman kaydırmayı kullanabilirsiniz. Daha fazla bilgi için zaman kaydırma konusuna bakın.

Zaman kaydırma etkinleştirildiğinde zaman kaydırmalı segmentlerin formatı kapsülleme yapılandırmanızda belirtilen segment uzunluğunu ve formatını devralır.

  • HLS veya LL-HLS (CMAF): Zaman kaydırmalı segmentler CMAF formatındadır.

  • LL-HLS (TS): Zaman kaydırmalı segmentler TS formatındadır.

API referansı

Canlı yayın kapsülleme API işlemleri