如何使用OSS RTMP功能直播/鉴黄?

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 音视频直播平台如何实现数据存储?视频监管及风控需求如何满足?直播视频/图片内容如何自动审核?视频监控行业如何降低视频数据存储成本?OSS近期推出了RTMP收流功能。用户可以直接用RTMP协议将音视频数据上传到OSS,并且可以在推流的同时实时截图、鉴黄。

概述

音视频直播平台如何实现数据存储?视频监管及风控需求如何满足?直播视频/图片内容如何自动审核?视频监控行业如何降低视频数据存储成本?为了方便直播/监控用户使用OSS来存储音视频数据,OSS近期推出了RTMP收流功能。用户可以直接用RTMP协议将音视频数据上传到OSS。

OSS LiveChannel介绍

LiveChannel是OSS为了管理RTMP推流新增的概念;LiveChannel即直播频道,用来保存推流配置,获取推流状态等;直播频道从属于bucket,一个用户可以在bucket中创建无限多的直播频道。

用户创建一个LiveChannel即可以获取一个对应的RTMP推流地址,随后用户可以将音视频数据通过RTMP协议推送到OSS,转储为HLS协议的ts、m3u8文件。转储的文件可以用来做点播;在延迟要求不高的场景下也可以直接使用HLS协议做直播;另外,OSS还支持收流的同时实时截图,鉴黄来做协助用户做内容审查(内测中,有需求的用户可以通过工单、支持群来联系我们)。

通过LiveChannel,用户可以在直播的同时将内容存储到OSS,不需要任何的本地临时存储;在享受OSS高可靠、低成本、无限扩展的云存储的同时,还可以利用OSS强大并且还在不断丰富中的数据处理能力(截图、转码、鉴黄等等)来进行各种后期处理;还可以非常便捷的使用OSS的Lifecycle等功能来做数据的生命周期管理。

使用场景说明

一、RTMP直播转录为HLS

rtmp_proxy

步骤说明

  1. APP开始直播,推送RTMP流到CDN;
  2. APP或者CDN发送“开始直播”的消息到MNS Topic,信息中包含本次直播的CDN拉流地址;
  3. MNS推送消息到用户搭建在ECS上的RTMP Proxy;
  4. RTMP Proxy使用ffmpeg从CDN拉流;
  5. RTMP Proxy在OSS创建LiveChannel,并向OSS推流;
  6. 转推结束后,RTMP Proxy发送一条“推流结束”的消息到另一个MSN Topic;
  7. MNS向客户的应用服务器推送“转推结束”的消息,供后续处理(例如保存点播地址到数据库);
  8. APP从应用服务器得到点播地址,访问OSS获取点播视频。

备注

  1. 用户可以自己使用OSS/MNS SDK、ffmpeg、librtmp等来实现自己的RTMP Proxy,后续OSS会提供示例程序;
  2. 整个步骤中涉及到的组件都可以使用阿里云提供的服务搭建。

二、实时鉴黄

jianhuang

步骤说明

  1. 直播时使用RTMP Proxy转推一路数据到OSS,并设置LiveChannel开启截图;
  2. OSS按用户指定的间隔截图,并保存到OSS;
  3. OSS调用第三方鉴黄服务对图片进行打分;
  4. OSS将打分的结果推送到MNS Topic;
  5. MNS回调用户的应用服务器通知鉴黄结果;
  6. 另一种处理方式:用户也可以选择让OSS直接推送截图的图片链接,应用服务器将图片地址聚合后采用其他方式鉴别;

备注

  1. 第三方鉴黄服务会部署在阿里云提供的容器服务中,调用的延迟等有充分的保证;
  2. 截图的同时OSS仍然会将RTMP流转储为HLS文件;

三、权限控制(私有bucket支持HLS播放)

OSS提供了丰富的鉴权/授权机制让用户可以精细的控制数据的访问权限;对于HLS直播/点播场景,我们同样提供了“动态签名m3u8”的机制,使用户可以使用私有bucket提供HLS播放服务。

用户只需要使用URL签名方式访问m3u8,并且增加参数“x-oss-process=hls/sign”,OSS会对返回的播放列表中的所有ts地址按照与m3u8完全的相同的方式进行签名(相同的accessId、accessKey、expireTime)。

假设某个m3u8文件的内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:54
#EXT-X-TARGETDURATION:6
#EXTINF:6.006,
1470971233380.ts
#EXTINF:6.006,
1470971233398.ts
#EXTINF:1.944,
1470971233415.ts

动态签名后返回的内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:54
#EXT-X-TARGETDURATION:6
#EXTINF:6.006,
1470971233380.ts?Expires=1470973160&OSSAccessKeyId=YJjHKOKWDWINLKXv&Signature=6aJidj9VCRqnv%2Bwszh9MeROeHPM%3D
#EXTINF:6.006,
1470971233398.ts?Expires=1470973160&OSSAccessKeyId=YJjHKOKWDWINLKXv&Signature=ek3I5uK3R8FlnZLLWCmzsJXo7wk%3D
#EXTINF:1.944,
1470971233415.ts?Expires=1470973160&OSSAccessKeyId=YJjHKOKWDWINLKXv&Signature=JMjdUcCGu63bgtiIHeEi0USyY18%3D

备注

  1. “动态签名”不会改变存储在OSS中的m3u8文件的内容;
  2. 支持子账号、STS,使用STS访问时,Token必须通过URL参数提供;
  3. x-oss-process参数需要参与签名。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
3月前
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
532 2
|
对象存储 开发者
对象OSS生命周期(LifeCycle)管理功能|学习笔记
快速学习对象 OSS 生命周期(LifeCycle)管理功能
1448 0
对象OSS生命周期(LifeCycle)管理功能|学习笔记
|
存储 前端开发 Java
四步解决!OSS对象存储文件上传功能(服务端签名后直传,建议收藏)
普通上传方式通过InputStream作为OSS文件的数据源。用户(浏览器)把文件交给我们自已的服务器,再由服务器携带相关验证信息上传文件至阿里云,这种方式每上传一次,文件就会经过一次我们自已的服务器(占用大量带宽),我们的服务器也会在大量的用户下带来瓶颈。影响服务器处理别的请求,大大降低了效率。
3423 0
四步解决!OSS对象存储文件上传功能(服务端签名后直传,建议收藏)
|
3月前
|
存储 对象存储 Python
Python中使用阿里云OSS存储实现文件上传和下载功能
Python中使用阿里云OSS存储实现文件上传和下载功能
417 2
|
7月前
|
存储 对象存储 索引
针对OSS数据集成场景下的功能全面优化【Dataphin V3.12]
OSS(Object Storage Service)是对象存储服务,适用于存放各种文件类型,Dataphin已经支持连接到OSS进行文件数据的读取与写入。本期版本升级中,Dataphin对于OSS的数据同步场景做了全面的功能升级,包括数据源、输入组件与数据组件,一起来了解一下吧~
205 0
|
11月前
|
存储 Java 测试技术
后台管理系统引入OSS实现图片上传功能
后台管理系统引入OSS实现图片上传功能
379 0
|
存储 前端开发 Java
四步解决!OSS对象存储文件上传功能(服务端签名后直传,建议收藏)
四步解决!OSS对象存储文件上传功能(服务端签名后直传,建议收藏)
2537 2
四步解决!OSS对象存储文件上传功能(服务端签名后直传,建议收藏)
|
域名解析 存储 网络协议
对象存储OSS域名管理功能|学习笔记
快速学习对象存储OSS域名管理功能
159 0
|
对象存储 开发者
对象存储 OSS 文件(Object)管理功能|学习笔记
快速学习对象存储 OSS 文件(Object)管理功能
367 0
|
存储 安全 对象存储
对象存储 OSS 日志统计功能|学习笔记
快速学习对象存储 OSS 日志统计功能
342 0

相关产品

  • 对象存储