阿里云视频直播详细流程,以及实现效果演示

 

    前言:视频直播模块主要是在阿里云上生成一个播流推流的地址,把推流地址放入obs中(相当于主播开播),播流地址放入vcl中(相当于观众看直播)进行一个直播。

              好的,话不多说,就是干,现在开始详细介绍直播开通的详细步骤

              包括直接在阿里云上生成直播的播流与推流地址以及java代码生成播流与推流地址

请一定要看文字,看文字,看文字,结合图片

 

一:阿里云上直接生成播流与推流地址

     阿里云直播官方开发文档:https://help.aliyun.com/document_detail/29951.html?spm=5176.13910061.sslink.15.517a4399mhjSM6

     

前提:根据条件创建阿里账号,实名认证,申请两个备案的域名(申请过程可能需要几天,域名会经过工信部审核),一个用于拉流地址生成,一个用于推流地址生成,

          步骤按以下步骤一步一步来

1:点击开通直播服务(不需要任何操作点击就可开通),开通完成返回到快速入门界面

2:登录阿里云云解析DNS控制台:

 

如果域名备案成功,在域名解析模块会看到以下几个域名,红框里面例如域名为live.com,记住这个域名下面一步会用到

 

3:点击添加推流域名和播流域名,就是阿里云上面的第二步骤,再点击视频直播控制台,点击域名管理,添加域名

:加速域名填pull.live.com子域名,就是上面域名解析中的地址live.com加上一个随机的前缀pull.该前缀可以任意改变,

其他选择默认的即可点击提交

出现以下界面

再次去到解析域名,点击添加记录

记录类型选择:TXT

主机记录填写上面:主机记录值

记录值填写:记录值

至此完成pull域名添加。再次以此方法添加一个推流域名问push.live.com(下面业务类型选择推流域名)(不需要再去解析域名,点提交不会弹出新页面)

4:再次点击阿里云云解析控制台,域名解析,解析设置(注:选择刚才使用的生成推流播流子域名的域名解析),添加记录

记录类型选择:CNAME

主机记录填:刚才生成的pull.live.com 的前缀 pull

记录值填写:CNAME下面的值复制下来

TTL:选择默认即可

点击确认

再次点击添加记录,重复上面步骤,把主机记录改为:push

至此域名的CNAME配置完成.

 

5:关联推流与播流域名(生成的推流播流域名为一组)

点击域名管理中的播流域名域名配置

点击基本设置,推流信息,添加推流信息

推流域选择刚才建立的推流域名push.live.com

 

6:生成推流播流地址,点击地址生成器

播流域名选择:pull.live.com(选择完,自动匹配出推流域名)

AppName:随便填

StringName:随便填(如0000)

点击开始生成

生成结果如下

 

7:开始测试推流播流

下载安装OBS(推流软件)

 

打开OBS,选择文件,设置,推流

服务填:自定义

推流地址例子:rtmp://push.aliyunlive.com/app/stream?auth_key=1543302081-0-0-9c6e7c8190c10bdfb3c0***********

服务器填:rtmp://push.aliyunlive.com/app/

串流密钥填stream?auth_key=1543302081-0-0-9c6e7c8190c10bdfb3c0***********(以AppName为分割)

点击提交即可

 

 

点击+号,添加媒体源,点击新建,确定

 

 

 

选择一个MP4等格式的视频文件,确定即可

 

 

点击开始推流,就开始视频直播了

下载安装VCL(播流软件)

打开VCL,选择媒体,网络串流,把播流地址填入网络URL中即可,以M3U8播流地址为例子,点击播放即可

效果图如下:

 

 

 

二:java代码生成推流,播流地址(按照一中需要完成前5步包括第5步,才能生成有效的推播流地址,不然生成的是模拟的地址,生成模拟地址不需要前5步,直接按下面开始)

注:由于aliyun-java-vod-upload-1.4.12.jar包maven仓库未开源,所以需要按以下步骤加入到maven仓库

准备阶段下载aliyun-java-vod-upload-1.4.12.jar:  https://help.aliyun.com/document_detail/51992.html?spm=a2c4g.11186623.6.1029.2dab6cecZfMGvO

  下载完成后解压缩文件

把aliyun-java-vod-upload-1.4.12.jar包复制到你自己的maven仓库中的lib文件下

 

在该目录下cmd回车

运行以下代码

mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.12 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.12.jar

 

1:在maven工程引入以下依赖

  <!-- Hutool工具包 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.0.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--  配置文件自动提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
<!--   aliyun核心sdk-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-vod</artifactId>
            <version>2.15.11</version>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20170516</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.48</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>provided</scope>
        </dependency>

2:创建一个AliyunLiveController(controlle类型)引入下面代码

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.open.video.model.AliyunLiveConfig;
import com.open.video.model.ApiLiveModel;
import com.open.video.util.AliyunLiveUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;

@RestController
@RequestMapping("/aliyunLive")
@Slf4j
//aliyun推流以及拉流地址
public class AliyunLiveController {
    @Resource
    private AliyunLiveConfig aliyunConfig;
    /**
     * 生成推流播流地址
     * sourceId  在这里我将它设置为房间号
     */
    @GetMapping("/save_Live")
    public void save_Live(HttpServletRequest request, @RequestParam("sourceId") String sourceId){
        try {
            //生成推流地址
            String pushUrl = AliyunLiveUtil.createPushUrl(sourceId, aliyunConfig);
            //生成播流地址
            String pullUrl = AliyunLiveUtil.createPullUrl(sourceId, aliyunConfig);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3:创建一个AliyunLiveUtil(工具类型)引入以下代码

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.open.video.model.AliyunLiveConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
public class AliyunLiveUtil {
        private static final Logger log = LoggerFactory.getLogger(AliyunLiveUtil.class);
        /**
         * 推拉流地址示例:
         * rtmp://www.ttest.ygdjonline.com/a/a?auth_key=1558065152-0-0-c3cb54d946c0590ca9aeee63573201ee
         * 播流地址
         * 原画
         * rtmp://www.btest.ygdjonline.com/a/a?auth_key=1558065152-0-0-fc711455c0815aeb581385f33451d5b4
         * http://www.btest.ygdjonline.com/a/a.flv?auth_key=1558065152-0-0-221abff1da1ee32151e365cf0dd42a53
         * http://www.btest.ygdjonline.com/a/a.m3u8?auth_key=1558065152-0-0-72124fcc3aee3404b0d65dcc114e207f
         */

        /**
         * 根据源id创建该id的推流url
         *
         * @param sourceId
         * @param aliyunConfig
         * @return
         */
        public static String createPushUrl(String sourceId, AliyunLiveConfig aliyunConfig) {

            // 推流域名
            String pushDomain = aliyunConfig.getAliyunLivePushDomain();
            // 应用名称
            String appName = aliyunConfig.getAliyunLiveAppName();
            // 流名称
            String streamName = StrUtil.format(sourceId);
            // 推流签名key
            String pushIdentKey = aliyunConfig.getAliyunLivePushIdentKey();
            // 签名url有效时间
            Integer identUrlValidTime = aliyunConfig.getAliyunLiveIdentUrlValidTime();
            //log.info("签名url有效时间" + identUrlValidTime);
            // 计算过期时间
            String timestamp = String.valueOf((System.currentTimeMillis() / 1000) + identUrlValidTime);
            // log.info("计算过期时间" + timestamp);
            // 组合推流域名前缀
            //rtmp://{pushDomain}/{appName}/{streamName}
            String rtmpUrl = StrUtil.format("rtmp://{}/{}/{}", pushDomain, appName, streamName);

            // 组合md5加密串
            ///{appName}/{streamName}-{timestamp}-0-0-{pushIdentKey}
            String md5Url = StrUtil.format("/{}/{}-{}-0-0-{}", appName, streamName, timestamp, pushIdentKey);
            log.info("组合md5加密串"+md5Url);
            // md5加密
            String md5Str = DigestUtil.md5Hex(md5Url);
            // log.info("md5加密串,md5Url=" + md5Url + "------md5加密结果,md5Str=" + md5Str);

            // 组合最终鉴权过的推流域名
//      {rtmpUrl}?auth_key={timestamp}-0-0-{md5Str}
            String finallyPushUrl = StrUtil.format("{}?auth_key={}-0-0-{}", rtmpUrl, timestamp, md5Str);
            log.info("最终鉴权过的推流域名=" + finallyPushUrl);

            return finallyPushUrl;
        }

        /**
         * 创建拉流域名,key=rtmpUrl、flvUrl、m3u8Url,代表三种拉流类型域名
         *
         * @param sourceId
         * @param aliyunConfig
         * @return
         */
        public static String createPullUrl(String sourceId, AliyunLiveConfig aliyunConfig) {

            // 拉流域名
            String pullDomain = aliyunConfig.getAliyunLivePullDomain();
            // 应用名称
            String appName = aliyunConfig.getAliyunLiveAppName();
            // 流名称
            String streamName = StrUtil.format(sourceId);
            // 拉流签名key
            String pullIdentKey = aliyunConfig.getAliyunLivePullIdentKey();
            // 签名url有效时间
            Integer identUrlValidTime = aliyunConfig.getAliyunLiveIdentUrlValidTime();

            // 计算过期时间
            String timestamp = String.valueOf((System.currentTimeMillis() / 1000) + identUrlValidTime);

            // 组合通用域名
//      {pullDomain}/{appName}/{streamName}
            String pullUrl = StrUtil.format("{}/{}/{}", pullDomain, appName, streamName);
            //log.info("组合通用域名,pullUrl=" + pullUrl);

            // 组合md5加密串
//      /{appName}/{streamName}-{timestamp}-0-0-{pullIdentKey}
            String md5Url = StrUtil.format("/{}/{}-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey);
            String md5FlvUrl = StrUtil.format("/{}/{}.flv-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey);
            String md5M3u8Url = StrUtil.format("/{}/{}.m3u8-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey);

            // md5加密
            String md5Str = DigestUtil.md5Hex(md5Url);
            String md5FlvStr = DigestUtil.md5Hex(md5FlvUrl);
            String md5M3u8Str = DigestUtil.md5Hex(md5M3u8Url);
            //log.info("md5加密串,md5Url    =" + md5Url + "       ------     md5加密结果,md5Str=" + md5Str);
            //log.info("md5加密串,md5FlvUrl =" + md5FlvUrl + "    ------    md5加密结果,md5FlvStr=" + md5FlvStr);
            //log.info("md5加密串,md5M3u8Url=" + md5M3u8Url + "   ------    md5加密结果,md5M3u8Str=" + md5M3u8Str);

            // 组合三种拉流域名前缀
//        rtmp://{pullUrl}?auth_key={timestamp}-0-0-{md5Str}
            String rtmpUrl = StrUtil.format("rtmp://{}?auth_key={}-0-0-{}", pullUrl, timestamp, md5Str);
//        http://{pullUrl}.flv?auth_key={timestamp}-0-0-{md5FlvStr}
            String flvUrl = StrUtil.format("http://{}.flv?auth_key={}-0-0-{}", pullUrl, timestamp, md5FlvStr);
//        http://{pullUrl}.m3u8?auth_key={timestamp}-0-0-{md5M3u8Str}
            String m3u8Url = StrUtil.format("http://{}.m3u8?auth_key={}-0-0-{}", pullUrl, timestamp, md5M3u8Str);

            log.info("最终鉴权过的拉流rtmp域名=" + rtmpUrl);
            log.info("最终鉴权过的拉流flv域名 =" + flvUrl);
            log.info("最终鉴权过的拉流m3u8域名=" + m3u8Url);
            return m3u8Url;
        }
}

4:创建一个AliyunLiveConfig(model类型)引入以下代码

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
@Data
public class AliyunLiveConfig {
    /**
     * 推流域名
     */
    @Value("${aliyun.live.push.domain}")
    private String aliyunLivePushDomain;

    /**
     * 拉流域名
     */
    @Value("${aliyun.live.pull.domain}")
    private String aliyunLivePullDomain;

    /**
     * 直播测试appName
     */
    @Value("${aliyun.live.appName}")
    private String aliyunLiveAppName;

    /**
     * 直播测试streamName{直播类型}_{类型id}
     */
//    @Value("${aliyun.live.streamName}")
//    private String aliyunLiveStreamName;

    /**
     * 推流鉴权url key
     */
    @Value("${aliyun.live.push.ident.key}")
    private String aliyunLivePushIdentKey;

    /**
     * 拉流鉴权url key
     */
    @Value("${aliyun.live.pull.ident.key}")
    private String aliyunLivePullIdentKey;

    /**
     * 鉴权url的有效时间(秒),默认30分钟,1800秒 key
     */
    @Value("${aliyun.live.ident.url.validTime}")
    private Integer aliyunLiveIdentUrlValidTime;

}

5:创建一个ApiLiveModel(model类型)引入以下代码


import lombok.Data;

import java.util.List;

@Data
public class ApiLiveModel {

    private List<String> action;
    private List<String> ip;
    private List<String> id;
    private List<String> app;
    private List<String> appname;
    private List<String> time;
    private List<String> usrargs;
    private List<String> node;
}

6:在配置文件application.properties中引入下面代码(核心配置aliyun的配置文件)下面会解释说明每一个值

注:模拟生成一个推拉流地址不需要改写值

#阿里云直播配置 begin
#推流域名
aliyun.live.push.domain=xxx.xxx.com
  #推流鉴权url key
aliyun.live.push.ident.key=xxx
  #拉流域名
aliyun.live.pull.domain=xxx.xxx.com
  #拉流鉴权url key
aliyun.live.pull.ident.key=xxx
  #直播测试appName
aliyun.live.appName=xxx
  #直播测试streamName{直播类型}{类型id}
aliyun.live.streamName=wanxi
  #鉴权url的有效时间(秒),默认30分钟,1800秒
aliyun.live.ident.url.validTime=1800
#阿里云直播配置 end

推流域名:前面的生成的push.live.com(需看阿里云生成例子)

播流(拉流)域名:前面的生成的pull.live.com(需看阿里云生成例子)

推流鉴权url key:点击域名管理,域名配置,访问控制,url鉴权查看key

播流鉴权url key:同上,开始选择播流域名查看

appName:自定义

streamName:自定义(前端传参就是sourceId,就是根据这streamName(sourceId)生成不同的直播房间,推流地址)

7:请求controller接口,传入一个?sourceId=任意值最终生成以下代码,推流播流地址就生成了

baicaim
关注 关注
  • 13
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
阿里云直播推流
四明狂客-默默前行的程序猿
02-28 3705
先说背景:    项目中用到阿里云直播相关,通过阿里云提供接口判断流状态,验证部分代码比较绕,分享上来希望能帮助他人;不说废话直接上干货:// 签名算法版本,目前版本是1.0 private static final String SIGNATURE_VERSION = "1.0"; // 签名方式,目前支持 HMAC-SHA1 private static final S...
阿里云视频直播,使用obs推流验证是否成功
w18973572056的博客
09-24 1862
阿里云视频直播推流地址验证 首先,根据上篇文章得到推流地址以及播流地址,从官方下载obs工具和vlc工具,下面开始验证地址是否正确? 演示 1.打开obs工具,找到右下角的设置按钮,点击推流,将推流地址信息完善 注意:假设推流地址为rtmp://推流域名/appName/streamName?auth_key=xxxxx 服务器位置填写为rtmp://推流域名/appName/ 串流密钥填写为streamName?auth_key=xxxxx 2.确定应用后,我们找一个视频格式为MP4,找到obs来源,
探索与掌控:OBS Java SDK — 助力你的云存储之旅
最新发布
gitblog_00013的博客
06-19 294
探索与掌控:OBS Java SDK — 助力你的云存储之旅 项目地址:https://gitcode.com/huaweicloud_1/huaweicloud-sdk-java-obs 项目介绍 OBS Java SDK 是一款强大且易于使用的工具包,专为开发者设计,帮助他们在Java应用程序中无缝地接入阿里云对象存储服务(OBS)。这个SDK持续更新,提供了多种新的特性和性能优化,包括最新的...
阿里云直播
阳水平的博客
02-23 2416
自己接触了下阿里云直播的sdk,写一下记录,目前只做了一个demo,录制屏幕和摄像头,然后其他人可以观看。我是在windows下面做的测试。 需要的工具: 1、OBS Studio这个是推流用的,阿里云提供的推流sdk没反应,提交工单也是许久没人回复。下载地址:https://obsproject.com/ 2、阿里云开通视频服务; 3、一个已经备案的域名; 4、拉流播放器sdk或者vc...
springboot集成阿里云直播,低延时直播
weixin_44021888的博客
07-15 1716
springboot集成阿里云直播,低延时直播
阿里云视频直播使用详细步骤
weixin_46822367的博客
12-11 8256
视频直播服务(ApsaraVideo Live)是基于领先的内容接入、分发网络和大规模分布式实时转码技术打造的音视频直播平台,提供便捷接入、高清流畅、低延迟、高并发的音视频直播服务。 主播通过采集设备采集直播内容后,通过推流SDK推送直播流,视频直播服务通过边缘推流的方式将直播流推送至阿里云直播中心,推送的视频流通过CDN边缘节点进行加速保证上行传输的稳定性。 视频流推送至阿里云直播中心后,可按需对视频流进行转码、时移、录制、截图等处理。 处理好的视频流通过CDN内容分发网络,下发至观众的设备
挑战一个人搭建一套完整直播系统5:基于阿里云搭建外网直播系统
fangfanglovezhou的博客
04-15 4499
挑战一个人搭建一套完整直播系统5:基于阿里云搭建外网直播系统
详解阿里云视频直播PHP-SDK接入教程
12-17
- **对象存储OSS**:如果需要保存直播视频,需使用阿里云的对象存储服务,它支持后付费模式。 2. **域名管理** - **添加域名**:在视频直播控制台的域名管理模块,分别添加推流域名和拉流域名。 - **配置CDN**:...
视频上传阿里云 获取封面
05-13
视频上传阿里云 获取封面
微信小程序上传阿里云视频文件流程及代码
03-29
为了微信小程序客服端实现自拍视频能够分享给多个好友,我们需要把小程序自拍的视频存储到服务器,而阿里云在性能和速度上比较不错,所以我们选择了阿里云作服务器。第一步。微信小程序项目 ...       为了微信小...
详细介绍Java阿里云的短信验证码实现
08-19
Java阿里云短信验证码实现是指通过阿里云短信服务平台发送短信验证码的实现,以下是该实现详细介绍。 登录阿里云开放平台 在实现Java阿里云短信验证码之前,需要首先登录阿里云开放平台,获取AccessKey ID和...
java SpringBoot 集成 阿里云视频直播 完成直播功能
卓力的博客
06-17 9629
经历了几天的周折,近期才把项目完成,在这里与大家分享一下踩坑之路,也方便日后有类似项目,可以借阅一番 该项目是一个H5直播,采用m3u8格式完成直播的展示。通过推流地址,借助第三方推流工具实现直播效果,比如:OBS 或者一些微信小程序 小推流。。等等 项目介绍:根据域名生成推流、播流地址,推流回调,检查推流状态。直播视频存储至OSS,视频回调,统计当前在线人数等等 项目需要:需要现在阿里云上配置你的域名,推流域名,播流域名,推流回调地址,OSS存储,播流跨域问题等等 进入正题: 根据推拉域名生成推流
java SpringBoot 集成 阿里云视频直播 完成直播功能
热门推荐
weixin_43753684的博客
04-26 1万+
经历了几天的周折,近期才把项目完成,在这里与大家分享一下踩坑之路,也方便日后有类似项目,可以借阅一番 该项目是一个H5直播,采用m3u8格式完成直播的展示。通过推流地址,借助第三方推流工具实现直播效果,比如:OBS 或者一些微信小程序 小推流。。等等 项目介绍:根据域名生成推流、播流地址,推流回调,检查推流状态。直播视频存储至OSS,视频回调,统计当前在线人数等等 项目需要:需要现在阿里云上配置你...
SpringBoot – OBS – 接入阿里云直播推流
weixin_45129599的博客
02-02 212
本页目录 测试地址:https://player.alicdn.com/aliplayer/index.html代码 工具类 LiveUtils因为离职,没有登录阿里账号查看,只在代码记录的一些测试地址:https://player.alicdn.com/aliplayer/index.html代码 工具类 LiveUtilsimport java.math.BigInteger; import ...
零基础小白24小时直播搭建教程
weixin_46300655的博客
05-12 720
零基础小白24小时直播搭建教程。
如何使用阿里云进行直播点播
漠效的博客
07-28 3119
前言 前一段时候,在兴趣的驱动下,研究了一下视频直播和点播。大致是分为 自建的直播和点播平台 和 依靠云厂商来完成的直播和点播。 后来发现刚好阿里云还有OSS对象存储的套餐还没过期,正好介绍一下如何使用阿里云进行视频直播。 备注: 关于依靠云厂商来实现直播和点播,我觉得最重要是还要准备充足的费用。 如果没预估好价格和可使用时间,生产中就直接进行大规模的直播,不仅会产生费用问题,在扣无可口时,还会停止服务。 没交费导致的直播中断,也是遇到过的。 域名管理 首先要有一个已经备案的域名,后续都需要使
阿里云——媒体云(视频直播
aliyunduoduo的博客
12-07 1371
阿里云视频直播是基于阿里云强大的技术沉淀开发的音视频直播平台,拥有全链路覆盖、全球部署、安全稳定、超低延时、超高清等优势。全链路覆盖多渠道、全链路服务支持方案,多年技术能力的沉淀与输出。提供从推流、视频处理、内容分发到播放的全套解决方案。提供上下行码率自适应、窄带高清转码™、截图、录制、时移、数据监控、云导播、超低延时直播视频流管理等功能和服务。全球布局全球战略,助力企业全球化扩展。直播节点分布
超级详细java实现阿里云视频直播功能
qq_60827837的博客
04-27 2683
超级详细java实现阿里云视频直播功能
阿里云盘视频m3u8播放-python+vue3实现
第九系艾文
11-29 9741
阿里云盘视频m3u8播放-python+vue3实现
bilibili直播视频阿里云平台
05-11
近年来,直播行业已成为互联网领域的一个重要板块。作为中国最大的弹幕视频网站,Bilibili也在视频直播领域大显身手。为了更好地提供直播服务,Bilibili已将其直播视频托管至阿里云平台。 阿里云是阿里巴巴旗下的云计算服务平台,拥有全球分布的数据中心及其先进的技术架构,具备良好的安全性、稳定性和可扩展性。将Bilibili的直播视频托管到阿里云平台,既保证了视频直播的稳定性和可靠性,也增加了观众的用户体验。 通过阿里云平台,Bilibili可以灵活地管理音视频流、提供高可用性,同时也能够快速扩展直播的带宽和存储。此外,阿里云的智能分析功能还可以对用户观看习惯进行分析和优化,提升用户体验和直播内容的质量。 总之,Bilibili将直播视频托管到阿里云平台,不仅能够提高视频直播的稳定性和可靠性,同时也是一种技术上的提升和创新。未来,Bilibili将会做得更好,为用户提供更出色的直播服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  •  阿里云视频直播详细流程,以及实现效果演示 7972
  • webSocket实现及时聊天,以及消息的离线发送 7196
  • java动态规划,求最大子段和,并且求出开始位置,结束位置 780
  • Docker Desktop使用nginx发布vue程序详解 389
  • Springboot项目WebSocket报错引入的spring-boot-starter-tomcat与内置的tomcat包里面的socket重复解决方法 212

最新评论

  • webSocket实现及时聊天,以及消息的离线发送

    飞机场的是是非非: 链接是cim啊?有demo代码吗老师

  • java动态规划,求最大子段和,并且求出开始位置,结束位置

    iskycastle: 应该要在if(b>max)的end=i下面加一个besti=begin;bestj=end;吧

  • webSocket实现及时聊天,以及消息的离线发送

    baicaim: 该项目是springboot项目把前端按我说的写好,后端需要下一个redis就可以用来测试了

  • webSocket实现及时聊天,以及消息的离线发送

    Experience1999: 6666不错

  • webSocket实现及时聊天,以及消息的离线发送

    伊薰一艾: 先说一个6666666666666666666666

大家在看

  • 微信小程序 418
  • 网络安全(黑客)2024小白自学必看
  • LeetCode-环形链表、环形链表 II 972
  • 一文搞懂Java中的双亲委派 178
  • 网络安全领域含金量最高的5大赛事,每个网安人的梦! 110

最新文章

  • Springboot项目WebSocket报错引入的spring-boot-starter-tomcat与内置的tomcat包里面的socket重复解决方法
  • Docker Desktop使用nginx发布vue程序详解
  • webSocket实现及时聊天,以及消息的离线发送
2023年2篇
2021年2篇
2020年1篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码龙华网页制作南山网站优化软件盐田模板制作观澜企业网站制作南山网络推广光明网络营销横岗推广网站永湖模板推广东莞SEO按天扣费荷坳网站改版东莞关键词排名深圳营销型网站建设木棉湾网站优化按天扣费同乐高端网站设计光明百姓网标王推广丹竹头百度seo坪山百度爱采购坪山网站设计模板深圳阿里店铺运营龙华网站建设福田网站建设福田网页设计坂田网站推广工具平湖企业网站制作南联营销网站大芬网站关键词优化盐田网站推广方案东莞网站制作设计福永模板制作塘坑网站改版歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化