全部产品
云市场

直播禁止推流相关问题

更新时间:2019-01-29 11:26:20

概述

用户存在业务场景需求某路流临时禁止推流。例如,对应的鉴权推流地址暴露,客户恶意推流该地址、业务需求禁止该推流URL进行推流等,就可以使用直播的禁止推流功能满足该需求。

禁止推流的实现方式

  • 直播控制台禁止推流

    1. 获取正在推流地址并加入黑名单

      直播推流成功后,您可以在 视频直播控制台 > 流管理 > 选择所需的域名 > 选择正在推流,查看到正在推流的地址,单击 加入黑名单 即可。

      1

    2. 获取历史推流地址并加入黑名单

      直播推流成功后,您可以在 视频直播控制台 > 流管理 > 选择所需的域名 > 选择历史推流,查看到历史推流地址,单击 加入黑名单 即可。

      2

  • SDK实现禁止推流

    视频直播的API是基于阿里云的OpenAPI实现的。因此,SDK的调用也是对OpenAPI封装后调用。以Java SDK为例,Java SDK建议使用maven管理项目依赖,在pom.xml中添加如下的依赖项:

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.aliyun</groupId>
    4. <artifactId>aliyun-java-sdk-cdn</artifactId>
    5. <version>2.3.1</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.aliyun</groupId>
    9. <artifactId>aliyun-java-sdk-core</artifactId>
    10. <optional>true</optional>
    11. <version>2.3.8</version>
    12. </dependency>
    13. </dependencies>

    其中,aliyun-java-sdk-core是对阿里云OpenAPI封装的核心模块,在使用OpenAPI的产品调用Java SDK均需要添加该依赖项,而aliyun-java-sdk-cdn包括了视频直播接口的Request和Response类;其中禁止推流的Request和Response类为ForbidLiveStreamRequest及ForbidLiveStreamResponse,Java代码示例如下:

    1. public static void main(String[] args) throws Exception {
    2. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);
    3. DefaultAcsClient client = new DefaultAcsClient(profile);
    4. ForbidLiveStreamResponse res=ForbidLiveStreamR(client);
    5. System.out.println(res.getRequestId());
    6. }
    7. static ForbidLiveStreamResponse ForbidLiveStreamR(DefaultAcsClient client){
    8. ForbidLiveStreamRequest request =new ForbidLiveStreamRequest();
    9. request.setDomainName("<DomainName>");
    10. request.setAppName("<AppName>");
    11. request.setStreamName("<StreamName>");
    12. request.setLiveStreamType("publisher");
    13. ForbidLiveStreamResponse response=null;
    14. try {
    15. response = client.getAcsResponse(request);
    16. }catch (ServerException e) {
    17. e.printStackTrace();
    18. }
    19. catch (ClientException e) {
    20. e.printStackTrace();
    21. }
    22. return response;
    23. }

Demo代码主要流程如下:

  • 初始化Client对象。SDK需要通过IAcsClient对象完成对OpenAPI的调用,而初始化IAcsClient对象时根据IClientProfile对象配置region、AccessKeyId和AccessKeySecret参数。其中,region请一直写cn-hangzhou,因为这里指的是OpenAPI的服务器所在区域。AccessKeyId和AccessKeySecret参数即是账号权限验证,如果是主账号的AccessKeyId和AccessKeySecret,则可以正常使用。如果是子账号的AccessKeyId和AccessKeySecret参数,则需要保证该子账号有视频直播的权限。

  • 初始化请求Request类。SDK对每个接口实现了对应的Request类和Response类,对应的禁止推流Request类需要传入哪些参数,看API接口定义 禁止推流API

  • 发起请求获取结果。使用Client对象的getAcsResponse方法发起Request对象请求,并根据该方法反馈的反序列化的结果实例化为对应接口的Response类。并且在执行该方法时可以catch ServerException和ClientException异常类,当http status>=300且<500 SDK抛ClientException,表示客户端错误。当http status>=500 SDK抛ServerException,表示服务器端错误。如果没有抛出异常则表示接口调用成功。

如何查看推流黑名单

  1. 直播控制台查看推流黑名单

    直播推流成功后,您可以在 视频直播控制台 > 流管理 > 选择所需的域名 > 选择黑名单,查看到黑名单中的推流地址。

    3

  2. SDK获取黑名单地址视频直播的API是基于阿里云的OpenAPI实现的,因此SDK的调用也是对OpenAPI封装后调用。以Java SDK为例:Java SDK建议使用maven管理项目依赖,在pom.xml中添加如下的依赖项:

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.aliyun</groupId>
    4. <artifactId>aliyun-java-sdk-cdn</artifactId>
    5. <version>2.3.1</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.aliyun</groupId>
    9. <artifactId>aliyun-java-sdk-core</artifactId>
    10. <optional>true</optional>
    11. <version>2.3.8</version>
    12. </dependency>
    13. </dependencies>

    其中,aliyun-java-sdk-core是对阿里云OpenAPI封装的核心模块,在使用OpenAPI的产品调用Java SDK均需要添加该依赖项,而aliyun-java-sdk-cdn包括了视频直播接口的Request和Response类。其中,查询推流黑名单列表的Request和Response类为DescribeLiveStreamsBlockListRequest及DescribeLiveStreamsBlockListResponse,Java代码示例如下:

    1. public static void main(String[] args) throws Exception {
    2. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);
    3. DefaultAcsClient client = new DefaultAcsClient(profile);
    4. DescribeLiveStreamsBlockListResponse res=DescribeLiveStreamsBlockListR(client);
    5. System.out.println(res.getStreamUrls());
    6. }
    7. static DescribeLiveStreamsBlockListResponse DescribeLiveStreamsBlockListR(DefaultAcsClient client){
    8. DescribeLiveStreamsBlockListRequest request =new DescribeLiveStreamsBlockListRequest();
    9. request.setDomainName("<DomainName>");
    10. DescribeLiveStreamsBlockListResponse response=null;
    11. try {
    12. response = client.getAcsResponse(request);
    13. }catch (ServerException e) {
    14. e.printStackTrace();
    15. }
    16. catch (ClientException e) {
    17. e.printStackTrace();
    18. }
    19. return response;
    20. }

    Demo代码主要流程如下:

  • 初始化Client对象。SDK需要通过IAcsClient对象完成对OpenAPI的调用,而初始化IAcsClient对象时根据IClientProfile对象配置region、AccessKeyId和AccessKeySecret参数。其中,region请一直写cn-hangzhou,因为这里指的是OpenAPI的服务器所在区域。AccessKeyId和AccessKeySecret参数即是账号权限验证,如果是主账号的AccessKeyId和AccessKeySecret则可以正常使用,如果是子账号的AccessKeyId和AccessKeySecret参数则需要保证该子账号有视频直播的权限。

  • 初始化请求Request类。SDK对每个接口实现了对应的Request类和Response类,对应的禁止推流Request类需要传入哪些参数,看API接口定义 查询推流黑名单列表API

  • 发起请求获取结果。使用Client对象的getAcsResponse方法发起Request对象请求,并根据该方法反馈的反序列化的结果实例化为对应接口的Response类。并且在执行该方法时可以catch ServerException和ClientException异常类,当http status>=300且<500 SDK抛ClientException,表示客户端错误。当http status>=500 SDK抛ServerException,表示服务器端错误。如果没有抛出异常则表示接口调用成功。

如何恢复黑名单直播流推送地址

  1. 直播控制台恢复

    直播推流成功后,您可以在 视频直播控制台 > 流管理 > 选择所需的域名 > 选择正在推流 > 选择黑名单,查看到黑名单中的推流地址,进行恢复。

    4

  2. SDK恢复黑名单直播流推送地址

    视频直播的API是基于阿里云的OpenAPI实现的,因此SDK的调用也是对OpenAPI封装后调用。以Java SDK为例。Java SDK建议使用maven管理项目依赖,在pom.xml中添加如下的依赖项:

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.aliyun</groupId>
    4. <artifactId>aliyun-java-sdk-cdn</artifactId>
    5. <version>2.3.1</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.aliyun</groupId>
    9. <artifactId>aliyun-java-sdk-core</artifactId>
    10. <optional>true</optional>
    11. <version>2.3.8</version>
    12. </dependency>
    13. </dependencies>

    其中,aliyun-java-sdk-core是对阿里云OpenAPI封装的核心模块,在使用OpenAPI的产品调用Java SDK均需要添加该依赖项,而aliyun-java-sdk-cdn包括了视频直播接口的Request和Response类。其中,恢复直播流推送的Request和Response类为ResumeLiveStreamRequest及ResumeLiveStreamResponse,Java代码示例如下:

    1. public static void main(String[] args) throws Exception {
    2. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);
    3. DefaultAcsClient client = new DefaultAcsClient(profile);
    4. ResumeLiveStreamResponse res=ResumeLiveStreamR(client);
    5. System.out.println(res.getRequestId());
    6. }
    7. static HttpResponse ForbidLiveStream(DefaultAcsClient client){
    8. ForbidLiveStreamRequest request =new ForbidLiveStreamRequest();
    9. request.setDomainName("<DomainName>");
    10. request.setAppName("<AppName>");
    11. request.setStreamName("<StreamName>");
    12. request.setLiveStreamType("publisher");
    13. HttpResponse response=null;
    14. try {
    15. response = client.doAction(request);
    16. }catch (ServerException e) {
    17. e.printStackTrace();
    18. }
    19. catch (ClientException e) {
    20. e.printStackTrace();
    21. }
    22. return response;
    23. }

    Demo代码主要流程如下:

  • 初始化Client对象。

    SDK需要通过IAcsClient对象完成对OpenAPI的调用,而初始化IAcsClient对象时根据IClientProfile对象配置region、AccessKeyId和AccessKeySecret参数。其中region请一直写cn-hangzhou,因为这里指的是OpenAPI的服务器所在区域。AccessKeyId和AccessKeySecret参数即是账号权限验证。如果是主账号的AccessKeyId和AccessKeySecret,则可以正常使用。如果是子账号的AccessKeyId和AccessKeySecret参数,则需要保证该子账号有视频直播的权限。

  • 初始化请求Request类。

    SDK对每个接口实现了对应的Request类和Response类,对应的禁止推流Request类需要传入哪些参数,看API接口定义 恢复直播流推送API

  • 发起请求获取结果。

    使用Client对象的getAcsResponse方法发起Request对象请求,并根据该方法反馈的反序列化的结果实例化为对应接口的Response类,且在执行该方法时可以catch ServerException和ClientException异常类。

    • 当http status>=300且<500,SDK抛ClientException,表示客户端错误。

    • 当http status>=500,SDK抛ServerException,表示服务器端错误。

    • 如果没有抛出异常,则表示接口调用成功。