C#阿里云视频中心——直播

阿里云视频中心

最近用阿里云视频中心做了一个小小的直播Demo,后续打算用于公司的直播服务播放器,功能包含推流、播流、未开始显示KV图、观众访问记录收集、是否匿名用户。

是否匿名
客户端类型
推流中断
推流开始
阿里云视频中心
直播状态
显示KV图

阿里云官方支持文档

阿里云视频直播官方文档

阿里云直播间Web版直播间演出

阿里云Aliplayer在线配置

(一)地址生成

参考文档

推流地址与播流地址无需调用API即可生成,只需要符合阿里云的规则即可,如下图所示。
图片来源于阿里云官方文档

代码中涉及到的枚举类

public enum iLiveAddresSchema
    {
        rtmp = 1,
        http = 2,
        https = 3
    }

    public enum iLiveStreamFormat
    {
        rtmp = 1,
        flv = 2,
        m3u8 = 3
    }

    public enum iLiveEncodeType
    {
        None = 0,
        /// <summary>
        /// 流畅 宽度自适应,高度:360
        /// </summary>
        lld = 1,
        /// <summary>
        /// /// <summary>
        /// 标清 宽度自适应,高度:480
        /// </summary>
        /// </summary>
        lsd = 2,
        /// <summary>
        /// /// <summary>
        /// 高清 宽度自适应,高度:720
        /// </summary>
        /// </summary>
        lhd = 3,
        /// <summary>
        /// /// <summary>
        /// 超清 宽度自适应,高度:1080
        /// </summary>
        /// </summary>
        lud = 4
    }
        /// <summary>
        /// 生成推流or播流地址
        /// </summary>
        /// <param name="schema">推流/播流域名前缀(rtmp/http/https)</param>
        /// <param name="domainName">推流/播流域名</param>
        /// <param name="appName">appName</param>
        /// <param name="streamName">streamName</param>
        /// <param name="exipresTime">有效期,最大8小时</param>
        /// <param name="key">鉴权Key</param>
        /// <param name="uid">暂时无用,传0即可</param>
        /// <param name="format">播流方式(rtmp/FLY/H3u8)</param>
        /// <param name="encodeType">视频清晰度()</param>
        /// <returns></returns>
protected string BuildSignedUrl(iLiveAddresSchema schema, string domainName, string appName, string streamName, int exipresTime, string key, string uid = "0", iLiveStreamFormat format = iLiveStreamFormat.rtmp, iLiveEncodeType encodeType = iLiveEncodeType.None)
        {
            long timestamp = (long)((DateTime.UtcNow.AddSeconds(exipresTime) - new DateTime(1970, 1, 1)).TotalSeconds);
            string random = Guid.NewGuid().ToString().Replace("-", "");
            string path = BuildPath(appName, streamName, format, encodeType);
            string signature = GetSignature(path, key, uid, timestamp, random);
            //auth_key 参数名区分大小写
            return string.Format("{0}{1}{2}?auth_key={3}-{4}-{5}-{6}", schema.ConvertToString(), domainName, path, timestamp, random, uid, signature);
        }

调用示例
温馨提示: 播流的时候参数选择http或者https,取决于播流域名是否有https安全证书。

			string pushAddress = AliyunGenerator.BuildSignedUrl(iLiveAddresSchema.rtmp,推流地址, appName,streamName, 3600 * 8, 推流的鉴权Key,"0");
            string rtmp = AliyunGenerator.BuildSignedUrl(iLiveAddresSchema.rtmp,播流地址, appName, streamName,  3600 * 8, 播流的鉴权Key, "0",iLiveStreamFormat.rtmp,iLiveEncodeType.None);
            string flv = AliyunGenerator.BuildSignedUrl(iLiveAddresSchema.http,播流地址, appName, streamName, 3600 * 8, 播流的鉴权Key,"0",iLiveStreamFormat.flv,iLiveEncodeType.None);
            string m3u8 = AliyunGenerator.BuildSignedUrl(iLiveAddresSchema.http,播流地址, appName, streamName,  3600 * 8,播流的鉴权Key,"0",iLiveStreamFormat.m3u8,iLiveEncodeType.None);

(二)Obs导播台推流

服务选择自定义,服务器填生成的推流域名+AppName

比如生成的推流地址是rtmp://push-ilive.anruisocial.com/sanyue/test?auth_key=1592841123-ef63d73d615045c7a7c07110f2039b26-0-789bf6c7493803abceb820bca8cfed92

服务器:rtmp://push-ilive.anruisocial.com/sanyue
串流密钥:test?auth_key=1592841123-ef63d73d615045c7a7c07110f2039b26-0-789bf6c7493803abceb820bca8cfed92
在这里插入图片描述

(三)使用阿里云Aliplayer播流

1、打开阿里云Aliplayer在线配置配置一个直播的网站。在这里插入图片描述
2、复制生成的代码并保存一个HTML,然后打开即可。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值