视频直播常见问题与解决办法汇总【系列三—直播推流】

简介: 直播推流初始化设置 要进行直播推流,您必须开启直播加速 > 配置直播域名 > 直播推流,详情参考 快速开始。 如何获取推流地址 直播加速配置成功后,您可以通过以下方式获取对应的推流地址。 登录 视频直播控制台。

直播推流初始化设置

要进行直播推流,您必须开启直播加速 > 配置直播域名 > 直播推流,详情参考 快速开始

如何获取推流地址

直播加速配置成功后,您可以通过以下方式获取对应的推流地址。

登录 视频直播控制台

  • 单击 域名管理。
  • 选择所需地域。
  • 选择所需的域名。
  • 选择所需域名,并单击右侧的 管理。
  • 在 基本信息 中,获取对应的推流地址:rtmp://video-center.alivecdn.com/AppName/StreamName?vhost=videolive.aliyuntest.club 。
    image

注意:

  • 直播配置成功后,对应的推流地址获取是不需要调用 API 或者 SDK 生成或者初始化的,使用推流工具推流的时候,填入需要的 AppName 或者 StreamName 进行推流即可。如指定推流地址:rtmp://video-center.alivecdn.com/1/2?vhost=live.aliyun.com。
  • 推流地址中 APPName 是应用名称,支持自定义,可以更改。
  • 推流地址中 StreamName 是流名称,支持自定义,可以更改。
  • 推流的 APPName 或 StreamName 不建议设置为中文字符。

为何OBS推流不成功

OBS 推流不成功,对应 视频直播控制台 > 流管理,正在推流信息中不能看到对应流.OBS如何进行推流,详情参考 OBS 操作指南

排查

  • 排查对应域名是否进行直播配置:视频直播控制台 > 域名管理 中能否看到对应的域名。直播加速配置参考 直播加速配置
  • 排查OBS推流配置填写的是否准确,详情参考 OBS 推流

OBS推流配置如下:
FMS URL / URL: rtmp://video-center.alivecdn.com/AppName
播放路径/串码流(如果存在)/ 流秘钥: StreamName?vhost=live.aliyun.com

  • 排查直播域名是否开启了A鉴权。
  1. 登录 视频直播控制台。
  2. 单击 域名管理。
  3. 选择所需的地域。
  4. 选择所需的域名。
  5. 单击所选域名右侧 管理。
  6. 单击 鉴权配置。

如果开启,计得算推流地址(rtmp://video-center.alivecdn.com/AppName/StreamName?vhost=videolive.aliyuntest.club)的鉴权地址进行推流,鉴权地址计算参考 快速开始 第4点鉴权配置。
image
image

直播推流支持哪些协议

视频直播只支持rtmp协议推流

直播推流如何进行鉴权推流

直播鉴权开启及鉴权地址计算参考 快速开始 第4点鉴权配置。

鉴权地址计算完成后,使用对应的鉴权地址进行推流:

OBS推流配置类似如下:
FMS URL / URL: rtmp://video-center.alivecdn.com/AppName
播放路径/串码流(如果存在)/ 流秘钥: StreamName?vhost=live8.aliyuntest.club&auth_key=1487766738-0-0-a96e76d2ebf9bbd855b0d4a9168ee600;

如何确认推流成功

  1. 登录 视频直播控制台。
  2. 单击 流管理。
  3. 选择所需的地域。
  4. 选择所需的域名。
  5. 流状态选择 正在推流。
  6. 如果可以查看到存在对应流,则推流成功。

image

禁止推流的情况该如何实现?

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

直播控制台禁止推流

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

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

image

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

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

image

SDK实现禁止推流

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

<dependencies>
  <dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>aliyun-java-sdk-cdn</artifactId>
     <version>2.3.1</version>
  </dependency>
  <dependency>
        <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
      <optional>true</optional>
        <version>2.3.8</version>
    </dependency>
</dependencies>

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

public static void main(String[] args) throws Exception  {
          IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);
          DefaultAcsClient client = new DefaultAcsClient(profile);
          ForbidLiveStreamResponse res=ForbidLiveStreamR(client);
          System.out.println(res.getRequestId());
   }
static ForbidLiveStreamResponse ForbidLiveStreamR(DefaultAcsClient client){
       ForbidLiveStreamRequest request =new ForbidLiveStreamRequest();
       request.setDomainName("<DomainName>");
       request.setAppName("<AppName>");
       request.setStreamName("<StreamName>");
       request.setLiveStreamType("publisher");
       ForbidLiveStreamResponse 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,表示服务器端错误。如果没有抛出异常则表示接口调用成功。

如何查看推流黑名单

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

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

image

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

<dependencies>
 <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-cdn</artifactId>
    <version>2.3.1</version>
 </dependency>
 <dependency>
       <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
     <optional>true</optional>
       <version>2.3.8</version>
   </dependency>
</dependencies>

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

public static void main(String[] args) throws Exception  {
         IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);
         DefaultAcsClient client = new DefaultAcsClient(profile);
         DescribeLiveStreamsBlockListResponse res=DescribeLiveStreamsBlockListR(client);
         System.out.println(res.getStreamUrls());
  }
static DescribeLiveStreamsBlockListResponse DescribeLiveStreamsBlockListR(DefaultAcsClient client){
      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,表示服务器端错误。如果没有抛出异常则表示接口调用成功。

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

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

image

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

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

<dependencies>
 <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-cdn</artifactId>
    <version>2.3.1</version>
 </dependency>
 <dependency>
       <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
     <optional>true</optional>
       <version>2.3.8</version>
   </dependency>
</dependencies>

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

public static void main(String[] args) throws Exception  {
         IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);
         DefaultAcsClient client = new DefaultAcsClient(profile);
         ResumeLiveStreamResponse res=ResumeLiveStreamR(client);
         System.out.println(res.getRequestId());
  }
static HttpResponse ForbidLiveStream(DefaultAcsClient client){
      ForbidLiveStreamRequest request =new ForbidLiveStreamRequest();
      request.setDomainName("<DomainName>");
      request.setAppName("<AppName>");
      request.setStreamName("<StreamName>");
      request.setLiveStreamType("publisher");
      HttpResponse response=null;
      try {
           response = client.doAction(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,表示服务器端错误。如果没有抛出异常则表示接口调用成功。

0.1元开启直播之旅

image
开年采购季,为了让更多用户能够体验和享受到视频直播云服务的便利,视频产品推出了0.1元体验包,配置清单如下:
image

点击了解活动详情

感谢你的阅读,关于视频直播,您还有什么问题?可以在文章末尾留言,我们会定期回复。

目录
相关文章
|
域名解析 缓存 网络协议
视频直播推流拉流慢、卡顿解决方案
视频直播类App当前已经普遍采用CDN来实现访问加速,但还是经常遇到推拉流慢、卡顿的问题。这类问题一般是由于调度不精准、域名劫持、终端手机接入网络动态切换等因素导致,结合使用CDN和HTTPDNS可以比较完美解决此类问题。
1901 0
|
编解码 视频直播 Android开发
安卓实现视频直播(rtmp)以及直播推流(NDK实现)
安卓实现视频直播(rtmp)以及直播推流
826 0
|
Web App开发 编解码 网络协议
阿里云低延时直播 RTS 能力升级 让直播推流效果更佳
RTMP(Real Time Messaging Protocol)和 OBS(Open Broadcaster Software)
阿里云低延时直播 RTS 能力升级 让直播推流效果更佳
|
Web App开发 编解码 网络协议
阿里云低延时直播RTS能力升级 让直播推流效果更佳
针对主播推流使用RTMP存在的TCP链接耗时过长、拥塞控制完全依赖TCP传输层、无法提供实时带宽数据来动态调整视频编码码率等问题引起的推流延迟和卡顿。阿里云低延时直播RTS(Real-time Streaming)产品在下行UDP改造的基础上,进行上行UDP底层WebRTC技术优化,通过发布移动端、PC端推流RTS SDK插件来提升整个行业的主播推流质量,提供低延时、低卡顿、安全可靠的直播观看体验。客户端接入简单,只需要在OBS端嵌入RTS SDK即可新增一个推流协议,无需改变原有的推流端采集架构。
1852 0
|
算法 Unix 视频直播
【视频直播】推流以及播放地址的鉴权地址生成实践
针对阿里云的视频直播产品,生成推流以及播放域名的鉴权地址的流程实践方式
1162 0
【视频直播】推流以及播放地址的鉴权地址生成实践
|
视频直播 PHP
视频直播生成推流和播放地址的PHP代码示例
直播推流地址和播放地址本身没有API接口,需要在客户端自行拼接地址,然后使用推流工具或者播放器对其推流或播放。本文主要介绍如何生成直播的推流以及播放地址(PHP示例代码)
1207 0
|
视频直播 PHP
视频直播生成推流地址和播放地址的程序示例(PHP)
直播推流地址和播放地址本身没有API接口,需要在客户端自行拼接地址,然后使用推流工具或者播放器对其推流或播放。本文主要介绍如何生成直播的推流以及播放地址(PHP示例代码)。
1185 0
|
Java 视频直播
视频直播生成推流地址和播放地址的程序示例(Java)
直播推流地址和播放地址本身没有API接口,需要在客户端自行拼接地址,然后使用推流工具或者播放器对其推流或播放。本文主要介绍如何生成直播的推流以及播放地址(Java示例代码)
2414 0
|
编解码 视频直播 索引
分享视频直播常见问题与解决办法汇总
今天小编给大家分享视频直播常见问题与解决办法,因为最近视频直播受到很多人的关注。如果大家有其他的问题需要咨询,可以在线咨询我们的客服人员。
2794 0
|
Web App开发 视频直播 API
视频直播常见问题与解决办法汇总【系列二—直播截图】
使用场景 用户常需要对视频直播的内容进行分析。例如,需要对直播中的某一帧的内容作为封面图片或者对于直播内容进行鉴黄以查看内容合法性等需求。因此,视频直播提供了实时截图功能满足用户的截图需求。 截图功能介绍 截图功能配置 配置视频直播的截图功能可以通过两种方法: 通过控制台创建:详情参考 控制台配置截图。
3048 0