如何使用OSS RTMP功能直播/鉴黄?-阿里云开发者社区

开发者社区> yanwb0613> 正文

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

简介: 音视频直播平台如何实现数据存储?视频监管及风控需求如何满足?直播视频/图片内容如何自动审核?视频监控行业如何降低视频数据存储成本?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参数需要参与签名。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言:         SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
4228 0
Entity Framework6使用SQL Server Compact免安装部署
原文:Entity Framework6使用SQL Server Compact免安装部署 使用Nuget安装以下包: EntityFramework.6.0.2 EntityFramework.SqlServerCompact.6.0.2 EntityFramework.SqlServerCompact.PrivateConfig.1.0.0 安装后在App.config会发现多个新增的配置。
724 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12064 0
使用阿里云容器服务Kubernetes实现蓝绿发布功能
背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性。但是Kubernets的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的路径,只能有一个service来进行服务。
8836 0
App爬虫神器mitmproxy和mitmdump的使用
mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。 mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。
1402 0
阿里云对象存储OSS版本控制功能开通详细说明
阿里云OSS版本控制功能有必要开通吗?版本控制功能收费吗?不懂云来详细说下对象存储的版本控制功能
11909 0
iOS使用xcode可视化图像编辑功能进行图片拉伸
iOS使用xcode可视化图像编辑功能进行图片拉伸
26 0
+关注
1
文章
9
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载
《2021云上架构与运维峰会演讲合集》
立即下载