OSS 解决方案篇-OSS 结合 视频直播使用

本文涉及的产品
对象存储 OSS,20GB 3个月
视频点播 VOD,流量+存储+转码
.cn 域名,1个 12个月
简介: OSS 作为多媒体的使用,不仅能结合媒体处理使用,也可以结合视频直播,作为 录制、截图的存储原站;

功能描述

  • 视频直播是将推流端的数据流实时的通过播流地址进行播放,因此后续如果需要再对播放历史直播数据就必须要使用视频直播的录制功能。视频直播的录制功能就是将视频中心接收到的推流端推流的数据进行录制,并将其保存成 hls 协议的封装格式存储到 OSS 中。
  • 用户常需要对视频直播的内容进行分析。例如,需要对直播中的某一帧的内容作为封面图片或者对于直播内容进行鉴黄以查看内容合法性等需求。因此,视频直播提供了实时截图功能满足用户的截图需求。
  • 视频直播的录制功能可以将直播数据录制成 HLS 协议文件,详情参考 直播录制功能介绍。视频直播录制在直播过程中会生成 TS 文件,但是仅在推流结束 180 秒后才会生成 m3u8 索引文件,无法在直播过程中生成,并且该索引文件时间为推流开始到结束,用户无法根据业务需要自定义索引范围。因此,视频直播提供录制索引管理功能供用户对录制索引 m3u8 文件的管理功能。

录制功能介绍

配置视频直播的录制功能

  • 通过控制台创建:控制台配置方法请参考 录制存储至OSS、录制存储至VOD。
  • 通过 API/SDK 创建:API/SDK 提供了创建、删除以及查询的功能,创建录制配置请参考 添加 APP 录制配置,删除录制配置请参考 删除 APP 录制配置,查看录制配置可以分别查询整个直播域名和单个 AppName 的录制配置,请参考 查询域名录制配置 和 查询 APP 录制配置。下面提供使用 Java SDK 添加 APP 录制配置的示例代码。

录制代码如下

        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou","<AccessKeyId>", "<AccessKeyScret>");
        IAcsClient client = new DefaultAcsClient(profile);

        AddLiveAppRecordConfigRequest addLiveAppRecordConfigRequest = new AddLiveAppRecordConfigRequest();
        addLiveAppRecordConfigRequest.setDomainName("<DomainName>");
        addLiveAppRecordConfigRequest.setAppName("<AppName>");
        addLiveAppRecordConfigRequest.setOssEndpoint("<Endpoint>");
        addLiveAppRecordConfigRequest.setOssBucket("<BucketName>");
        addLiveAppRecordConfigRequest.setOssObjectPrefix("<ObjectPrefix>");
        try {
            AddLiveAppRecordConfigResponse addLiveAppRecordConfigResponse = client.getAcsResponse(addLiveAppRecordConfigRequest);
            System.out.println(addLiveAppRecordConfigResponse.getRequestId());
            // todo something.
        } catch (ServerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

查看录制文件

录制配置后新发起的推流在满足 AppName 录制配置时即会自动录制推流的数据。推流过程中即会生成对应的 TS 文件到配置目录中。而对应的索引 m3u8 文件需要在推流 180 秒结束后生成(180 秒为兼容直播推流过程由于网络抖动等问题导致的推流短时间中断)。其默认命名规则为{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}.m3u8,其中,AppName为直播流所属应用名称,StreamName为流名称,EscapedStartTime为录制开始时间,EscapedEndTime为录制结束时间,下图即是一组录制后的 ts 和 m3u8 文件列表示意图。

image.png

截图功能

用户常需要对视频直播的内容进行分析。例如,需要对直播中的某一帧的内容作为封面图片或者对于直播内容进行鉴黄以查看内容合法性等需求。因此,视频直播提供了实时截图功能满足用户的截图需求。

截图功能配置

配置视频直播的截图功能可以通过两种方法:

  • 通过控制台创建。参见 配置截图。
  • 通过API/SDK:API/SDK提供了添加、删除、查询和更新截图配置的接口。详情参见 添加截图配置、删除截图配置、查询截图配置、更新截图配置、查询截图信息。下面提供使用Java SDK添加截图配置的示例代码。
  IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou","<AccessKeyId>", "<AccessKeySecret>");
    IAcsClient client = new DefaultAcsClient(profile);

    AddLiveAppSnapshotConfigRequest addLiveAppSnapshotConfigRequest = new AddLiveAppSnapshotConfigRequest();
    addLiveAppSnapshotConfigRequest.setDomainName("<DomainName>");
    addLiveAppSnapshotConfigRequest.setAppName("<AppName>");
    addLiveAppSnapshotConfigRequest.setTimeInterval(5);
    addLiveAppSnapshotConfigRequest.setOssEndpoint("<Endpoint>");
    addLiveAppSnapshotConfigRequest.setOssBucket("<BucketName>");
    addLiveAppSnapshotConfigRequest.setOverwriteOssObject("{AppName}/{StreamName}.jpg");
    try {
        AddLiveAppSnapshotConfigResponse addLiveAppSnapshotConfigResponse = client.getAcsResponse(addLiveAppSnapshotConfigRequest);
        System.out.println(addLiveAppSnapshotConfigResponse.getRequestId());
        // todo something.
    } catch (ServerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClientException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

查看截图文件

上述截图配置完成后新发起的推流即可生成截图,查看截图的方法包括以下三种:
OSS控制台提供截图管理功能。参见 删除截图。
API/SDK提供了查询截图信息的接口。参见 查询截图信息。
在知晓截图录制地址时可以直接在该媒体Bucket的对应目录查看生成结果,请参考下图。

image.png

FQA

录制常见问题

1、直播录制是针对于推流的 AppName 为粒度设置的,用户可以设置某个 AppName 下的所有 StreamName 的录制规则。并且 AppName 支持 “*” 通配符,表示该录制规则是针对于该直播域名下的所有推流均生效的,录制生效需要注意推流的 AppName 需要与配置的 AppName 匹配。

2、使用直播录制功能是需要开通视频点播服务的,并且录制生成的 m3u8 和 TS 文件都将存放在视频点播的输入媒体 Bucket 中,详情参考 媒体 Bucket 的增删改操作。

3、录制设置中可以设置变量,默认的录制TS文件存放地址为:record/{Date}/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence},其中的变量均是使用 “{}” 引起的,用户可以自行修改或者变更为常量。各变量的意义请参考控制台配置录制。

4、录制设置仅会对配置完成后的新发起的推流记录生效,当前的推流需中断 180 秒后重新推流方可生效。

5、录制配置中 ObjectName 是包括了前缀的文件名称,OSS 中的目录是逻辑概念,目录是 Object 的 key 值的前缀。详情参考 OSS目录/文件夹概念。

6、录制自动生成的索引 m3u8 文件仅有在断流 180 秒后才可以正常生成,如果用户需要在没有断流时生成索引文件提供播流访问,请参考 直播录制索引创建。

7、同样的AppName 和 StreamName不能同时存储至VOD和OSS,只能二者选其一,不能重复添加、冲突。

截图常见问题

1、直播截图是针对于推流的AppName为粒度设置的,用户可以设置某个AppName下的所有StreamName的截图规则。并且AppName支持“*”通配符,表示该截图规则是针对于该直播域名下的所有推流均生效的,截图生效需要注意推流的AppName需要与配置的AppName匹配。

2、与直播录制功能类似,截图功能也需要将截图结果存放在媒体Bucket中。因此,截图功能也需要开通OSS服务,并且在媒体Bucket中设置输入媒体Bucket。详情参见 媒体Bucket的增删改操作。

3、配置截图功能时,ObjectName可以定义为覆盖和非覆盖两种类型,其中覆盖是按照截图频率每次新生成的截图将覆盖之前生成的截图文件,因此仅会得到一张截图文件;而不覆盖则是每次新产生的截图将不覆盖之前生成的截图文件,各截图文件使用{Sequence}区分,{Sequence}将通过1,2,……,n的方式表示。

4、使用API/SDK配置截图配置是需要输入OSS的Endpoint,OSS的Endpoint为不包括Bucket名称的OSS访问地址,详情参见 OSS Endpoint设置,并且这里请不要加http://或者https://协议头。

5、使用API/SDK配置截图时OverwriteOssObject参数和SequenceOssObject参数必须二者选一进行配置,暂时没有默认值设置。

目录
相关文章
|
对象存储
阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
508 0
阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
|
3月前
|
Java 开发工具 对象存储
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
57 2
|
3月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
179 9
|
6月前
|
存储 SQL 分布式计算
对象存储解决方案 开源对象存储平台 自建对象存储解决方案
对象存储解决方案 开源对象存储平台 自建对象存储解决方案
319 4
|
开发工具 对象存储 C++
UE4 x 阿里云OSS 配置问题和解决方案
在OSS配置到UE4时遇到一些问题,已解决,分享一些解决方案。
1337 0
|
存储 容灾 Cloud Native
利用阿里云对象存储OSS-RC实现经济实惠的云备份容灾解决方案
本文主要分享《如何利用阿里云对象存储OSS-RC实现经济实惠的云备份容灾解决方案》,帮助中小企业解决因难以负担备份容灾支出而遭受到业务中断威胁的问题。
利用阿里云对象存储OSS-RC实现经济实惠的云备份容灾解决方案
|
7月前
|
存储 缓存 开发工具
某海外视频网站AWS S3 搬迁至OSS解决方案
某网站主体位于AWS,经营视频直播/点播以及其他互联网衍生业务,面向广大的海外手机端客户。目前已经在使用阿里云的VOD SDK,并将主要视频数据存放于S3。现需要将业务从AWS S3迁移至阿里云OSS。
268 0
某海外视频网站AWS S3 搬迁至OSS解决方案
|
API C++ Windows
【Live555】Live555 Windows下使用VS2017编译教程
【Live555】Live555 Windows下使用VS2017编译教程
【Live555】Live555 Windows下使用VS2017编译教程
|
数据建模 C++ Windows
live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板
live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板
live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板
下一篇
DataWorks