直播禁止推流功能相關(guān)問題
什么時候需要禁止推流?
當(dāng)遇到如下業(yè)務(wù)場景,例如,對應(yīng)的鑒權(quán)推流地址暴露、客戶惡意推流該地址、業(yè)務(wù)需求禁止該推流URL進(jìn)行推流等,就可以使用直播的禁止推流功能滿足安全需求。
如何實現(xiàn)禁止推流?
直播控制臺禁止推流
SDK實現(xiàn)禁止推流
視頻直播的API是基于阿里云的OpenAPI實現(xiàn)的。因此,SDK的調(diào)用也是對OpenAPI封裝后調(diào)用。下載服務(wù)端SDK,請參見服務(wù)端SDK。如何使用SDK,請參見SDK使用說明。
以Java SDK為例:Java SDK建議使用Maven管理項目依賴,在pom.xml中添加如下的依賴項:
<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-live</artifactId> <version>3.9.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <optional>true</optional> <version>2.3.8</version> </dependency> </dependencies>
說明此處SDK版本號僅供參考,獲取最新的版本,請參見服務(wù)端SDK。
其中,aliyun-java-sdk-core是對阿里云OpenAPI封裝的核心模塊,在使用OpenAPI的產(chǎn)品調(diào)用Java SDK均需要添加該依賴項,而aliyun-java-sdk-cdn包括了視頻直播接口的Request和Response類。其中,查詢推流黑名單列表的Request和Response類為DescribeLiveStreamsBlockListRequest及DescribeLiveStreamsBlockListResponse,Java代碼示例如下:
@Test public void testDescribeLiveStreamsBlockList() throws Exception { DescribeLiveStreamsBlockListResponse res = DescribeLiveStreamsBlockListR(); System.out.println(res.getStreamUrls()); } private DescribeLiveStreamsBlockListResponse DescribeLiveStreamsBlockListR() { DescribeLiveStreamsBlockListRequest request = new DescribeLiveStreamsBlockListRequest(); request.setDomainName("<DomainName>"); DescribeLiveStreamsBlockListResponse response=null; try { response = client.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return response; }
Demo代碼主要流程如下:
初始化Client對象。
SDK需要通過IAcsClient對象完成對OpenAPI的調(diào)用,而初始化IAcsClient對象時根據(jù)IClientProfile對象配置region、AccessKeyId和AccessKeySecret參數(shù)。其中,region請一直寫cn-hangzhou,因為這里指的是OpenAPI的服務(wù)器所在區(qū)域。AccessKeyId和AccessKeySecret參數(shù)即是賬號權(quán)限驗證,如果是主賬號的AccessKeyId和AccessKeySecret,則可以正常使用。如果是子賬號的AccessKeyId和AccessKeySecret參數(shù),則需要保證該子賬號有視頻直播的權(quán)限。
初始化請求Request類。
SDK對每個接口實現(xiàn)了對應(yīng)的Request類和Response類,對應(yīng)的禁止推流Request類需要傳入哪些參數(shù)。API接口定義請參見禁止推流API。
發(fā)起請求獲取結(jié)果。
使用Client對象的getAcsResponse方法發(fā)起Request對象請求,并根據(jù)該方法反饋的反序列化的結(jié)果實例化為對應(yīng)接口的Response類,且在執(zhí)行該方法時可以catch ServerException和ClientException異常類。
當(dāng)http status>=300且<500,SDK拋ClientException,表示客戶端錯誤。
當(dāng)http status>=500,SDK拋ServerException,表示服務(wù)器端錯誤。
如果沒有拋出異常,則表示接口調(diào)用成功。
如何查看推流黑名單?
直播控制臺查看推流黑名單
禁推成功后,您可以在視頻直播控制臺的 頁面,選擇對應(yīng)的域名,單擊禁推流頁簽,單擊查詢,即可查看被禁推的直播流。
SDK獲取推流黑名單
視頻直播的API是基于阿里云的OpenAPI實現(xiàn)的。因此,SDK的調(diào)用也是對OpenAPI封裝后調(diào)用。下載服務(wù)端SDK,請參見服務(wù)端SDK。如何使用SDK,請參見SDK使用說明。
<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-live</artifactId> <version>3.9.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <optional>true</optional> <version>2.3.8</version> </dependency> </dependencies>
說明此處SDK版本號僅供參考,獲取最新的版本,請參見服務(wù)端SDK。
其中,aliyun-java-sdk-core是對阿里云OpenAPI封裝的核心模塊,在使用OpenAPI的產(chǎn)品調(diào)用Java SDK均需要添加該依賴項,而aliyun-java-sdk-cdn包括了視頻直播接口的Request和Response類。其中,查詢推流黑名單列表的Request和Response類為DescribeLiveStreamsBlockListRequest及DescribeLiveStreamsBlockListResponse,Java代碼示例如下:
@Test public void testDescribeLiveStreamsBlockList() throws Exception { DescribeLiveStreamsBlockListResponse res=DescribeLiveStreamsBlockListR(); System.out.println(res.getStreamUrls()); } DescribeLiveStreamsBlockListResponse DescribeLiveStreamsBlockListR() { DescribeLiveStreamsBlockListRequest request =new DescribeLiveStreamsBlockListRequest(); request.setDomainName("<DomainName>"); DescribeLiveStreamsBlockListResponse response=null; try { response = client.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return response; }
Demo代碼主要流程如下:
初始化Client對象。
SDK需要通過IAcsClient對象完成對OpenAPI的調(diào)用,而初始化IAcsClient對象時根據(jù)IClientProfile對象配置region、AccessKeyId和AccessKeySecret參數(shù)。其中,region請一直寫cn-hangzhou,因為這里指的是OpenAPI的服務(wù)器所在區(qū)域。AccessKeyId和AccessKeySecret參數(shù)即是賬號權(quán)限驗證,如果是主賬號的AccessKeyId和AccessKeySecret則可以正常使用,如果是子賬號的AccessKeyId和AccessKeySecret參數(shù)則需要保證該子賬號有視頻直播的權(quán)限。
初始化請求Request類。
SDK對每個接口實現(xiàn)了對應(yīng)的Request類和Response類,對應(yīng)的禁止推流Request類需要傳入哪些參數(shù)。API接口定義請參見查詢推流黑名單列表API。
發(fā)起請求獲取結(jié)果。
使用Client對象的getAcsResponse方法發(fā)起Request對象請求,并根據(jù)該方法反饋的反序列化的結(jié)果實例化為對應(yīng)接口的Response類,且在執(zhí)行該方法時可以catch ServerException和ClientException異常類。
當(dāng)http status>=300且<500,SDK拋ClientException,表示客戶端錯誤。
當(dāng)http status>=500,SDK拋ServerException,表示服務(wù)器端錯誤。
如果沒有拋出異常,則表示接口調(diào)用成功。
如何恢復(fù)黑名單直播流推送地址?
直播控制臺恢復(fù)
禁推成功后,您可以在視頻直播控制臺的 頁面,選擇對應(yīng)的域名,單擊禁推流頁簽,單擊恢復(fù),即可恢復(fù)被禁推的直播流。
SDK恢復(fù)
視頻直播的API是基于阿里云的OpenAPI實現(xiàn)的。因此,SDK的調(diào)用也是對OpenAPI封裝后調(diào)用。下載服務(wù)端SDK,請參見服務(wù)端SDK。如何使用SDK,請參見SDK使用說明。
以Java SDK為例:Java SDK建議使用Maven管理項目依賴,在pom.xml中添加如下的依賴項:
<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-live</artifactId> <version>3.9.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <optional>true</optional> <version>2.3.8</version> </dependency> </dependencies>
說明此處SDK版本號僅供參考,獲取最新的版本,請參見服務(wù)端SDK。
其中,aliyun-java-sdk-core是對阿里云OpenAPI封裝的核心模塊,在使用OpenAPI的產(chǎn)品調(diào)用Java SDK均需要添加該依賴項,而aliyun-java-sdk-cdn包括了視頻直播接口的Request和Response類。其中,查詢推流黑名單列表的Request和Response類為DescribeLiveStreamsBlockListRequest及DescribeLiveStreamsBlockListResponse,Java代碼示例如下:
@Test public void testDescribeLiveStreamsBlockList() throws Exception { DescribeLiveStreamsBlockListResponse res=DescribeLiveStreamsBlockListR(); System.out.println(res.getStreamUrls()); } static DescribeLiveStreamsBlockListResponse DescribeLiveStreamsBlockListR() { DescribeLiveStreamsBlockListRequest request =new DescribeLiveStreamsBlockListRequest(); request.setDomainName("<DomainName>"); DescribeLiveStreamsBlockListResponse response=null; try { response = client.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return response; }
Demo代碼主要流程如下:
初始化Client對象。
SDK需要通過IAcsClient對象完成對OpenAPI的調(diào)用,而初始化IAcsClient對象時根據(jù)IClientProfile對象配置region、AccessKeyId和AccessKeySecret參數(shù)。其中region請一直寫cn-hangzhou,因為這里指的是OpenAPI的服務(wù)器所在區(qū)域。AccessKeyId和AccessKeySecret參數(shù)即是賬號權(quán)限驗證。如果是主賬號的AccessKeyId和AccessKeySecret,則可以正常使用。如果是子賬號的AccessKeyId和AccessKeySecret參數(shù),則需要保證該子賬號有視頻直播的權(quán)限。
初始化請求Request類。
SDK對每個接口實現(xiàn)了對應(yīng)的Request類和Response類,對應(yīng)的恢復(fù)推流Request類需要傳入哪些參數(shù)。API接口定義請參見恢復(fù)直播流推送API。
發(fā)起請求獲取結(jié)果。
使用Client對象的getAcsResponse方法發(fā)起Request對象請求,并根據(jù)該方法反饋的反序列化的結(jié)果實例化為對應(yīng)接口的Response類,且在執(zhí)行該方法時可以catch ServerException和ClientException異常類。
當(dāng)http status>=300且<500,SDK拋ClientException,表示客戶端錯誤。
當(dāng)http status>=500,SDK拋ServerException,表示服務(wù)器端錯誤。
如果沒有拋出異常,則表示接口調(diào)用成功。