OSS 解决方案篇-OSS 结合 视频直播使用-阿里云开发者社区

开发者社区> 张医博> 正文

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

简介: 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参数必须二者选一进行配置,暂时没有默认值设置。

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

相关文章
Oracle 11g R2版本使用exp命令导出表不全的解决方案
建议使用 expdp和 impdp 替代  exp和imp 命令!
617 0
201604深圳云栖大会Workshop - 用OSS搭建一个视频直播网站
使用OSS搭建一个完整的视频直播网站,可以创建删除直播频道,并且能够使用直播软件从PC端或者移动端推送视频流,并在PC或者移动端观看直播
4668 0
直播APP源码,视频直播技术篇 。
直播行业现在是越发的火热,人们对于视频直播的热情也是久盛不衰,云豹直播的技术人员在这里就教大家编写一个小小的视频直播片段。Windows Media Player 系列(不同面板样式) 综合型:id=MediaPlayer type=application/x-oleobject width=21...
2863 0
201604深圳云栖大会Workshop - 使用推流软件加入视频直播
使用推流软件加入视频直播 我们提供了一个公共体验平台供大家体验。在直播公共体验网页上添加完成频道之后,可以在网页上获取到RTMP的推流链接。 在电脑上安装一个直播软件,这里使用开源软件OBS作为推流的来源。可以通过以下链接来下载。 OBS(WINDOWS) OBS(MAC) 这里以ma
4049 0
去百度API的百度地图准确叠加和坐标转换的解决方案研究
原文:去百度API的百度地图准确叠加和坐标转换的解决方案研究 1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百度提供的接口来调用百度地图以及将需要标记的点显示在百度地图中等等。 此方案存在明显劣势: a.对原系统的破坏。
1188 0
fiddler抓取https失败解决方案
原文:fiddler抓取https失败解决方案 众所周知,Fiddler默认只能抓取到http请求,要抓取到https请求我们还需要FiddlerCertMaker插件的支持, 至于怎么使用fiddler抓https及插件的使用方式,大家可以去百度随便一搜就可以找到大量的教程,今天这 篇文章的主...
1695 0
+关注
张医博
喜欢钻研新的语言,动手实践自己想要学会的知识。
116
文章
0
问答
来源圈子
更多
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载