使用场景

视频直播是将推流端的数据流实时的通过播流地址进行播放,因此后续如果需要再对播放历史直播数据进行观看或操作就必须要使用视频直播的录制功能。视频直播的录制功能就是将视频中心接收到的推流端推流的数据进行录制,并将其保存成 hls 协议的封装格式。

录制功能介绍

  • 配置录制功能

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

            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 文件列表示意图。

常见问题

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

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

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

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

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

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

  • 暂时录制存放的 Bucket 仅支持杭州和上海数据中心,暂时不支持其他数据中心。

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