视频直播:直播转码

Java// 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 AddLiveStreamTranscode {

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("", 9001))

.setCredentials("", ""))

// 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("") // 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()

// Endpoint 请参考 https://api.aliyun.com/product/live

.setEndpointOverride("live.aliyuncs.com")

//.setConnectTimeout(Duration.ofSeconds(30))

)

.build();

// Parameter settings for API request

AddLiveStreamTranscodeRequest addLiveStreamTranscodeRequest = AddLiveStreamTranscodeRequest.builder()

.regionId("")

.domain("")

.app("")

.template("")

.encryptParameters("")

// 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 response = client.addLiveStreamTranscode(addLiveStreamTranscodeRequest);

// Synchronously get the return value of the API request

AddLiveStreamTranscodeResponse 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();

}

}说明 以上示例实现了对AppName为的直播流进行转码配置,转码参数使用系统预设模板,关于系统预设模板说明请参见本文档系统预设模板。

setLazy("")表示拉流才会触发转码,如果您需要在推流时就触发转码,可以设置setLazy("false")。

更多API说明请参见AddLiveStreamTranscode。

您可以登录视频直播控制台,选择流管理,在对应的推流记录中点击操作列直播地址查看转码流地址。

说明 直播地址中包含原画(Original)地址和转码流地址。

您可在原播流地址StreamName后加_转码模板ID进行自定义拼接转码流地址,详情可参见生成直播地址。