什么时候需要禁止推流?
当遇到如下业务场景,例如,对应的鉴权推流地址暴露、客户恶意推流该地址、业务需求禁止该推流URL进行推流等,就可以使用直播的禁止推流功能满足安全需求。
如何实现禁止推流?
直播控制台禁止推流
SDK实现禁止推流
视频直播的API是基于阿里云的OpenAPI实现的。因此,SDK的调用也是对OpenAPI封装后调用。下载服务端SDK,请参见服务端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版本号仅供参考,获取最新的版本,请参见服务端SDK。
其中,aliyun-java-sdk-core是对阿里云OpenAPI封装的核心模块,在使用OpenAPI的产品调用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的调用,而初始化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,表示服务器端错误。
如果没有抛出异常,则表示接口调用成功。
如何查看推流黑名单?
直播控制台查看推流黑名单
禁推成功后,您可以在视频直播控制台的 页面,选择对应的域名,单击禁推流页签,单击查询,即可查看被禁推的直播流。
SDK获取推流黑名单
视频直播的API是基于阿里云的OpenAPI实现的。因此,SDK的调用也是对OpenAPI封装后调用。下载服务端SDK,请参见服务端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版本号仅供参考,获取最新的版本,请参见服务端SDK。
其中,aliyun-java-sdk-core是对阿里云OpenAPI封装的核心模块,在使用OpenAPI的产品调用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的调用,而初始化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,表示服务器端错误。
如果没有抛出异常,则表示接口调用成功。
如何恢复黑名单直播流推送地址?
直播控制台恢复
禁推成功后,您可以在视频直播控制台的 页面,选择对应的域名,单击禁推流页签,单击恢复,即可恢复被禁推的直播流。
SDK恢复
视频直播的API是基于阿里云的OpenAPI实现的。因此,SDK的调用也是对OpenAPI封装后调用。下载服务端SDK,请参见服务端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版本号仅供参考,获取最新的版本,请参见服务端SDK。
其中,aliyun-java-sdk-core是对阿里云OpenAPI封装的核心模块,在使用OpenAPI的产品调用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的调用,而初始化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,表示服务器端错误。
如果没有抛出异常,则表示接口调用成功。