开发者社区 问答 正文

RTMP推流地址及签名?

RTMP推流地址形如:rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/test-channel
其组成规则为: rtmp://${bucket}.${host}/live/${channel}?${params}

  • live为RTMP协议的app名称,OSS固定使用live。
  • params为推流的参数,格式与HTTP请求的query string相同,即形如”varA=valueA&varB=valueB“。
  • BucketAcl非public-read-write时,推流地址需要签名才可以使用;签名方法类似OSS的Url签名,但有一些细节上的不同,后文会描述具体的规则。


RTMP推流支持的url参数

名称描述
playlistName用来指定生成的m3u8文件名称,其值覆盖LiveChannel中的配置。注意:生成的m3u8名称仍然会被添加”${channel_name}/“前缀。


推流地址的签名规则


一个带签名的推流地址形如:rtmp://${bucket}.${host}/live/${channel}?OSSAccessKeyId=xxx&Expires=yyy&Signature=zzz&${params}
参数名称描述
OSSAccessKeyId意义同OSS的HTTP签名的AccessKeyId
Expires过期时间戳,格式采用Unit timestamp
Signature签名字符串,后文会描述其计算方法
params其他参数,所有的参数都需要参与签名

Signature的计算规则如下: base64(hmac-sha1(AccessKeySecret,
    + Expires + "\n"
    + CanonicalizedParams
    + CanonicalizedResource))

名称描述
CanonicalizedResource格式为 “/BucketName/ChannelName”
[tr=rgb(239, 251, 255)][td]CanonicalizedParams 按照param key字典序拼接”key:value\n”,将所有的参数拼起来,如果参数个数为0,那么这一项为空。参数中不包含SecurityToken、OSSAccessKeyId和Expire以及Signature。每一个param key只能出现一次。

展开
收起
青衫无名 2017-10-23 10:07:47 2397 分享 版权
阿里云 AI 助理回答

RTMP推流地址的组成遵循特定规则,确保音视频数据能正确推送到阿里云对象存储服务(OSS)上的指定频道。根据提供的知识库资料,推流地址的基本结构如下:

rtmp://${bucket}.${host}/live/${channel}?${params}
  • rtmp://:协议前缀,表示使用RTMP(Real-Time Messaging Protocol)协议进行实时音视频数据传输。
  • ${bucket}:您的OSS存储空间名称,例如examplebucket
  • ${host}:OSS所在地域的域名,如oss-cn-hangzhou.aliyuncs.com,代表华东1(杭州)区域。
  • /live/:固定路径,用于标识RTMP协议下的直播内容。
  • ${channel}:您在OSS上创建的Live Channel名称,例如test-channel,用于区分不同的直播频道。
  • ?${params}:推流参数部分,采用HTTP请求中query string的格式附加额外信息,包括但不限于:
    • playlistName:播放列表名称,如playlist.m3u8
    • OSSAccessKeyId:访问OSS所需的Access Key ID。
    • Expires:签名过期时间戳。
    • Signature:签名字符串,确保推流地址的安全性。

推流操作简述

  1. 获取推流地址:首先,通过调用OSS SDK的CreateLiveChannel接口创建Live Channel,并获取其推流地址。这一步骤需考虑Bucket的访问权限,决定是否需要对推流地址进行签名处理。

  2. 使用工具或代码推流

    • ffmpeg:利用命令行工具ffmpeg,可以将本地视频文件推送到上述推流地址。示例命令已展示如何包含所有必要参数执行推流任务。
    • OBS Studio:安装并配置OBS,设置服务器地址为不包含签名信息的基础URL(如rtmp://examplebucket.oss-cn-hangzhou.aliyuncs.com/live),并在串流密钥处输入频道名称完成配置。

注意事项

  • 权限控制:确保Bucket的ACL设置与推流需求相匹配,私有或公共读权限的Bucket需进行签名。
  • 签名时效:关注推流地址中的Expires参数,确保推流期间地址有效。
  • 安全实践:妥善保管Access Key ID和Secret,避免泄露,特别是在公开分享或记录日志时。

以上信息基于引用的知识库资料整理而成,旨在帮助您理解RTMP推流地址的构成及如何进行有效的推流操作。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: