Java Alibaba Cloud ライブ ブロードキャスト設定とプッシュプル ストリーム アドレスの取得

1. Alibaba Cloud ライブストリーミングを有効にする

  1. まず、Alibaba Cloud Live Products のホームページにアクセスします: https://www.aliyun.com/product/live下の「今すぐアクティベートする」をクリックしてください。まだ登録していないユーザーの場合は、ページの指示に従って登録を完了し、本名を確認してください。

ここに画像の説明を挿入

2. 初めて入力する場合は、サービスをアクティブ化するように求められます。「サービスをアクティブ化する」をクリックして、請求方法を選択し、サービス契約に同意し、すぐにアクティブ化します。

  • 用途に応じて、流量计费ライブ配信を視聴する人数が少ない状況に適していますが、
  • 宽带峰值计费視聴者数が多い場合に適していますが、迷った場合は通信量に応じて課金されます
    ここに画像の説明を挿入
    初期使用量はそれほど多くなく、“流量计费”
    ここに画像の説明を挿入
    公式 Web サイトのプロセスに従ってサービスに応じてアクティベートすることを選択した後、次のステップはライブ ブロードキャストの基本構成です。域名管理

ここに画像の説明を挿入

2. プッシュドメイン名にアクセスする

自己的1. Alibaba Cloud Live はストリーミング ドメイン名を提供しないため、ストリーミング ドメイン名にアクセスする必要があります。左側をクリックします“加速服务~添加域名”

ここに画像の説明を挿入
2. 下の図の例に従って、実際の状況に応じて入力し、送信してください。
ここに画像の説明を挿入

3. [ドメイン名管理] に戻ると、追加したばかりのストリーミング ドメイン名が表示されます。“CNAME”ドメイン名の右側の値をコピーし、分析のためにドメイン名サービス プロバイダーに移動します。

ここに画像の説明を挿入

ここに画像の説明を挿入
4. 前の手順を構成した後、ドメイン名管理に戻り、解決が有効になるまで数分待ちます。ドメイン名のステータスがすでに になっていることがわかります“正常运行”ドメイン名の右側をクリックして、“域名配置”設定ページに入ります。

ここに画像の説明を挿入

注: 最初に設定することをお勧めします推流後ほどストリーミングを設定する際にプッシュストリームを関連付ける必要があるため、最初に設定してください

5. 左側の をクリックし“访问控制”URL鉴权構成を変更し、下図に示す例を入力して送信します。
ここに画像の説明を挿入
ポップアップウィンドウ、構成を変更する
ここに画像の説明を挿入

3. ストリーミング ドメイン名にアクセスします

最初の 4 つの手順は、ストリーミング ドメイン名にアクセスするプロセスと似ているため、ここでは繰り返しません。

5. プッシュ ドメイン名を関連付けます。点击“基本配置~推流信息”

ここに画像の説明を挿入

#######################分割線#######################

ここに画像の説明を挿入
#######################分割線#######################
ここに画像の説明を挿入

「OK」をクリックします。確認が完了すると、基本的に弊社のストリーミングドメイン名とストリーミングドメイン名が設定されます。

4. テストツール

ストリーミング ドメイン名とストリーミング ドメイン名の構成が完了したら、Ali が提供するツールを使用してストリーミング/プッシュ ストリーミングを生成できます。##
左側 “工具箱~地址生成器”
ここに画像の説明を挿入

ここに画像の説明を挿入

5、Javaコードはプッシュプルフローアドレスを生成します

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.lang3.*;
public class Create_Live_Url {
    
     

 /**
  * 计算md5
  * @param param
  * @return
  */
 public static String md5(String param) {
    
    
  	if(param == null || param.length() == 0) {
    
    
   		return null;
  	}
  	try {
    
    
   		MessageDigest md5 = MessageDigest.getInstance("MD5");
   		md5.update(param.getBytes());
   		byte[] byteArray = md5.digest();
   
   		BigInteger bigInt = new BigInteger(1, byteArray);
    	// 参数16表示16进制
   		String result = bigInt.toString(16);
   		// 不足32位高位补零
   		while(result.length() < 32) {
    
    
    		result = "0" + result;
   		}
   		return result;
  	} catch (NoSuchAlgorithmException e) {
    
    
   		e.printStackTrace();
  	}
  	return null;
 }

/**
* 生成推流地址
* @param pushDomain 推流域名
* @param pushKey 推流域名配置的鉴权Key
* @param appName 推流AppName
* @param streamName 推流StreamName
* @param expireTime 过期时间(单位是秒)
*/
 public static void generate_push_url(String pushDomain,String pushKey,String appName,String streamName,long expireTime) {
    
    
  	String pushUrl = "";
  	//推流域名未开启鉴权功能的情况下
  	if(pushKey=="") {
    
    
   		pushUrl = "rtmp://"+pushDomain+"/"+appName+"/"+streamName;
  	}else {
    
    
   		long timeStamp = System.currentTimeMillis()/1000L + expireTime;
   		String stringToMd5 = "/"+appName+"/"+streamName+"-"+Long.toString(timeStamp)+"-0-0-"+pushKey;
   		String authKey = md5(stringToMd5);
   		pushUrl = "rtmp://"+pushDomain+"/"+appName+"/"+streamName+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+authKey;
  	}
  	System.out.println("推流地址是: "+pushUrl);
 }

/**
* 生成播放地址
* @param pullDomain 播放域名
* @param pullKey 播放鉴权Key
* @param appName 播放appName(同推流appName)
* @param streamName 播放streamName 同推流streamName)
* @param expireTime 过期时间(单位是秒
*/ 

public static void general_pull_url(String pullDomain,String pullKey,String appName,String streamName,long expireTime) {
    
    
  	String rtmpUrl = ""; //rtmp的拉流地址
  	String hlsUrl = "";  //m3u8的拉流地址
  	String flvUrl = "";  //flv的拉流地址
  	//播放域名未配置鉴权Key的情况下
  	if(pullKey == "") {
    
    
   		rtmpUrl = "rtmp://"+pullDomain+"/"+appName+"/"+streamName;
   		hlsUrl = "http://"+pullDomain+"/"+appName+"/"+streamName+".m3u8";
   		flvUrl = "http://"+pullDomain+"/"+appName+"/"+streamName+".flv";
  	}else {
    
    
   		long timeStamp = System.currentTimeMillis()/1000L + expireTime;
   		String rtmpToMd5 = "/"+appName+"/"+streamName+"-"+Long.toString(timeStamp)+"-0-0-"+pullKey;
   		String rtmpAuthKey = md5(rtmpToMd5);
   		rtmpUrl = "rtmp://"+pullDomain+"/"+appName+"/"+streamName+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+rtmpAuthKey;
   
   		String hlsToMd5 = "/"+appName+"/"+streamName+".m3u8-"+Long.toString(timeStamp)+"-0-0-"+pullKey;
   		String hlsAuthKey = md5(hlsToMd5);
   		hlsUrl = "http://"+pullDomain+"/"+appName+"/"+streamName+".m3u8"+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+hlsAuthKey;
   
   		String flvToMd5 = "/"+appName+"/"+streamName+".flv-"+Long.toString(timeStamp)+"-0-0-"+pullKey;
   		String flvAuthKey = md5(flvToMd5);
   		flvUrl = "http://"+pullDomain+"/"+appName+"/"+streamName+".flv"+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+flvAuthKey;
  	}
  	System.out.println("RTMP播放地址为: "+rtmpUrl);
  	System.out.println("m3u8播放地址为: "+hlsUrl);
  	System.out.println("flv播放地址为: "+flvUrl);
}
 	
public static void main(String[] args) {
    
    
  	// TODO Auto-generated method stub
  	//生成长度为5的随机字符串作为appName和streamName(字母和数字组合)
  	String appName = RandomStringUtils.randomAlphanumeric(5);;
  	String streamName = RandomStringUtils.randomAlphanumeric(5);;
  
  	long expireTime = 3600L;
  	String pullDomain = "mxl-pull.pier39.cn";
  	String pullKey = "querty1234";
  
    String pushDomain = "mxl-push.pier39.cn";
  	String pushKey = "querty123";
  	Create_Live_Url.general_pull_url(pullDomain, pullKey, appName, streamName, expireTime);
  	Create_Live_Url.generate_push_url(pushDomain, pushKey, appName, streamName, expireTime);
}


} //end class

参考:https://help.aliyun.com/document_detail/456848.htm?spm=5176.13499635.help.dexternal.6b482699KJQJLs

おすすめ

転載: blog.csdn.net/zhanglei5415/article/details/131551685