一旦推流就啟動錄制,一旦斷流就停止錄制。您可以對某個域名下,所有流、某個appname下所有流、或者單獨某條流開啟自動錄制。
適用場景:
1. 只要有推流就錄制。同一條直播推流上來后,要么錄制,要么不錄制。
2. 事先指定錄制的時間段,如果該時間段內有推流,就啟動錄制。
限制:
如果不指定錄制周期,錄制文件會在每6個小時自動生成一個錄制文件。
使用流程:
1. 配置自動錄制規則
2. 推流
API:
1. 配置錄制規則,調用AddLiveAppRecordConfig配置APP錄制,輸出內容保存到OSS中。
前提要求:允許直播服務寫入用戶OSS
說明
- 修改配置后,新配置對修改之前的直播流不生效,必須重新推流才能生效!
- 如果指定了時間段,在該時間段內如果沒有推流,自然不會錄制。限定時間段的配置規則是一次性的,即當指定的時間段過去之后,該規則不會再觸發。需要注意的是,StartTime和EndTime字段填的是UTC時間,請注意和本地時區的對應。
- AddLiveAppRecordConfig接口中的AppName和StreamName可以填為
*,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。 - 可以通過AddLiveAppRecordConfig配置多條規則,規則匹配時存在優先級:如果想知道自動錄制是否生效,或者希望針對每個錄制文件做實時處理,可以設置錄制回調,詳見:錄制內容檢索與管理。
- 同時指定DomainName、AppName(不為
*)、StreamName(不為*)的優先級最高。 - 同時指定DomainName、AppName(不為
*)的優先級次之。 - 單獨指定DomainName,AppName為
*(即只限定域名)的優先級最低。
- 同時指定DomainName、AppName(不為
- 自動錄制每隔一定周期(周期時間通過RecordFormat.N.CycleDuration字段配置)會產生一個錄制文件。如果在一個錄制周期內,直播流發生了斷流,但是在3分鍾內,該直播流又推上來了,那么仍會在同一個錄制文件中繼續錄制。這就意味着,一條直播流必須斷流超過3分鍾,才會生成最后一個錄制文件。如果您希望修改這個默認的3分鍾斷流時間,可以提交工單在后台修改。
請求參數
| 名稱 | 類型 | 是否必選 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | AddLiveAppRecordConfig | 系統規定參數,取值:AddLiveAppRecordConfig。 |
| AppName | String | 是 | testApp | 直播流所屬應用名稱。 支持通配符(*),代表該域名下所有的AppName。 |
| DomainName | String | 是 | test.com | 加速域名,指播放域名。 |
| OssBucket | String | 是 | testBucket | OssBucket名稱。 |
| OssEndpoint | String | 是 | oss-cn-shanghai.aliyuncs.com | OssEndpoint域名。 |
| RecordFormat.N.Format | String | 否 | m3u8 | 格式。目前支持m3u8、flv或mp4。 |
| RecordFormat.N.OssObjectPrefix | String | 否 | record/{AppName}/{StreamName}/{Sequence}{EscapedStartTime}{EscapedEndTime} | OSS存儲的錄制文件名,小於256 byte,支持變量匹配,包含 {AppName}、{StreamName}、{Sequence}、{StartTime}、{EndTime}、{EscapedStartTime}、{EscapedEndTime}。參數值必須要有{StartTime}或{EscapedStartTime}和{EndTime}或{EscapedEndTime}變量。默認支持1小時周期錄制,最小周期時間15分鍾,最多6小時。 例如:record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}。 <note>{StartTime}/{EndTime}格式為:2006-01-02-15:04:05,{EscapedStartTime}/{EscapedEndTime}格式為:2006-01-02-15-04-05,推薦使用 Escaped 格式,避免特殊字符在URL中帶來的一些問題。</note> |
| RecordFormat.N.SliceOssObjectPrefix | String | 否 | record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence} | 當format格式是m3u8錄制,則需要配置,表示ts切片名稱。默認30秒一片,小於256byte,支持變量匹配,包含{AppName}、{StreamName}、{UnixTimestamp}、{Sequence}。 例如:record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence},參數值必須包含{UnixTimestamp}和{Sequence}變量。 |
| RecordFormat.N.CycleDuration | Integer | 否 | 1 | 周期錄制時長。單位:秒。不填則默認為6小時。 |
| StreamName | String | 否 | teststream | 流名稱。 |
| StartTime | String | 否 | 2018-04-10T09:57:21Z | 錄制開始時間。格式:UTC時間。 設置的時間必須是實際推流時間(這條流計划推流錄制的時間)開始7天之內的時間,只在流級別錄制(StreamName不為空)有效。 |
| EndTime | String | 否 | 2018-04-16T09:57:21Z | 錄制結束時間。格式:UTC時間。 設置的時間必須大於StartTime,且與StartTime相差不應超過7天,超過7天將按照7天計算,只在流級別錄制(StreamName不為空)有效。 |
| OnDemand | Integer | 否 | 1 | 按需錄制。
說明 使用1方式時候需要先通過
AddLiveRecordNotifyConfig接口設置OnDemandUrl,否則默認不錄制。
|
返回數據
| 名稱 | 類型 | 示例值 | 描述 |
|---|---|---|---|
| RequestId | String | 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8 | 請求ID |
2. 刪除自動錄制配置,調用DeleteLiveAppRecordConfig解除錄制配置。
通過AddLiveAppRecordConfig添加的配置,可以使用該接口刪除。會刪除DomainName、AppName、StreamName對應的配置。
請求參數
| 名稱 | 類型 | 是否必選 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | DeleteLiveAppRecordConfig | 系統規定參數。取值:DeleteLiveAppRecordConfig。 |
| AppName | String | 是 | testApp | 直播流所屬應用名稱。 |
| DomainName | String | 是 | www.yourdomain.com | 您的加速域名。 |
| StreamName | String | 否 | teststream | 流名稱。 |
返回數據
| 名稱 | 類型 | 示例值 | 描述 |
|---|---|---|---|
| RequestId | String | 6EBD1AC4-C34D-4AE1-963E-B688A228BE31 | 請求ID |
3. 查詢所有配置,調用DescribeLiveRecordConfig查詢域名下所有App錄制配置。
根據DomainName、AppName、StreamName匹配查詢,以列表形式返回(可能有多條配置)。支持分頁和排序。
請求參數
| 名稱 | 類型 | 是否必選 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | DescribeLiveRecordConfig | 系統規定參數。取值:DescribeLiveRecordConfig。 |
| DomainName | String | 是 | www.yourdomain.com | 您的加速域名。 |
| AppName | String | 否 | testApp | 直播流所屬應用名稱。 |
| Order | String | 否 | asc | 排序。取值:
|
| PageNum | Integer | 否 | 1 | 當前頁碼。默認值:1。 |
| PageSize | Integer | 否 | 5 | 每頁大小。默認值:10,取值范圍:5~30。 |
| StreamName | String | 否 | myStreamName | 直播流名稱。 |
返回數據
| 名稱 | 類型 | 示例值 | 描述 |
|---|---|---|---|
| RequestId | String | 5056369B-D337-499E-B8B7-B761BD37B08A | 請求ID。 |
| LiveAppRecordList | 錄制配置。 |
||
| DomainName | String | test.com | 流所屬加速域名。 |
| AppName | String | testApp | 流所屬應用名稱。 |
| OssEndpoint | String | oss-cn-shanghai.aliyuncs.com | OSS endpoint。 |
| OssBucket | String | test123 | OSS存儲bucket名稱。 |
| CreateTime | String | 2016-05-20T09:33:38Z | 創建時間。 |
| RecordFormatList | 格式列表。 |
||
| Format | String | xxx | 格式名稱。 |
| OssObjectPrefix | String | xxx | OSS存儲文件名。 |
| SliceOssObjectPrefix | String | xxx | 存儲分片的OSS文件名。 |
| CycleDuration | Integer | 3600 | 周期錄制時間,單位:秒。 |
| EndTime | String | 2018-11-08T03:49:18Z | 計划錄制結束時間,UTC時間。 |
| OnDemond | Integer | 0 | 按需錄制。可取值:0 | 1 | 2。0表示關閉,1表示通過HTTP回調方式,2表示通過推流參數方式。 使用1方式時候需要設置OnDemandCallback, 否則默認不錄制。 |
| StartTime | String | 2018-11-08T02:49:18Z | 計划錄制開始時間,UTC時間。 |
| StreamName | String | myStreamName | 流名稱。 |
| PageNum | Integer | 5 | 分頁的頁碼。 |
| PageSize | Integer | 10 | 每頁大小。 |
| Order | String | desc | 排序。 |
| TotalPage | Integer | 20 | 總頁數。 |
| TotalNum | Integer | 12 | 符合條件的總個數。 |
