功能介紹 ApsaraVideo for Live是通過播放地址以即時資料流的形式播放推流端的資料,如果想要在直播結束後再次觀看或修改直播內容,就必須要使用ApsaraVideo for Live的錄製功能。
ApsaraVideo for Live錄製功能,就是將直播中心接收到的推流資料進行錄製,儲存至您指定的儲存位置。目前直播錄製儲存提供兩種方式,錄製儲存至VOD 和錄製儲存至OSS 。
直播錄製的原理 直播錄製的過程,是通過拉取您推上來的直播流,將音視頻封裝成單獨的一個個媒體切片(封裝格式為TS),然後進行儲存。直播錄製在工作時遵循以下原則:
功能對比 錄製儲存至VOD和錄製儲存至OSS都可以對直播內容進行錄製儲存。兩者使用情境有所不同,您可以根據您自己的業務決定具體採用哪種方式進行儲存。
儲存方式
關聯產品服務
封裝格式
適用情境
錄製儲存至VOD
開通ApsaraVideo for VOD服務
TS/M3U8
傾向於對錄製內容進行二次生產,注重錄製內容後期處理,如剪輯,播放,設定錄製視頻封面等。
錄製儲存至OSS
開通OSS服務
TS/M3U8
MP4
FLV
CMAF
說明 不管是哪種封裝格式,直播錄製都會先將直播流切片成一個個的TS切片,然後再合成對應封裝格式的錄製檔案。
傾向於錄製內容管理,注重儲存。
限制條件 音視頻編碼格式 由於直播錄製需要先將直播流切分成TS檔案,因此您推上來的直播流的音視頻編碼格式必須滿足TS封裝格式的要求。根據FLV標準和ISO/IEC 13818-1標準,直播錄製目前僅支援以下編碼格式:
視頻:H264、HEVC、MPEG4
音頻:AAC、MP3
說明 如果直播流包含了非以上格式編碼的音視頻,直播錄製可能會出現:無法產生錄製檔案、錄製黑屏、錄製沒有聲音,以及其他一些無法預見的異常情況。
異常的直播流 對於正常的直播流(沒有不支援的編碼格式、幀率穩定、時間戳記單調線性增長),直播錄製均能正常產生錄製檔案。當然,對於偶爾幀率不穩定,時間戳記跳變的流,直播錄製也能做出一定的相容,保證錄製檔案的正常產生。但是如果推上來的直播流存在嚴重異常(長時間沒有視訊框架,時間戳記增長沒有規律,音視頻頭缺失等等),直播錄製可能無法保證正常產生錄製檔案。
錄製儲存至VOD 功能配置 完成前置條件相關內容之後,就可以進行錄製儲存至VOD配置。
ApsaraVideo for Live目前提供兩種方式添加錄製儲存至VOD配置。
控制台配置錄製儲存至VOD
登入ApsaraVideo for Live控制台 。 在左側導覽列選擇功能管理>直播錄製 ,進入直播錄製 頁面,選擇儲存至VOD配置 頁簽。
選擇待配置的播流網域名稱。
單擊添加 。
配置錄製模板。
錄製模板參數及說明如下表所示。
參數
描述
AppName
視頻的應用程式名稱,輸入的AppName 必須與直播推流的AppName 保持一致,方可生效。如果您想要進行網域名稱層級錄製,輸入星號(*)即可。
StreamName
儲存至VOD支援流層級的錄製。您只需輸入指定的流名稱即可。如果您想要進行全部流錄製,即該AppName 下的流全部錄製,輸入星號(*)即可。
說明 AppName 與StreamName 參數支援英文、數字、“-”、“_”符號,長度限制在255個字元以內。
儲存地址
選擇儲存位置。
錄製周期
錄製周期 範圍為15~360分鐘,最大支援 6 小時錄製。超過 6 小時,系統將按照錄製命名規則產生新檔案。ts 切片時間長度預設為 30s。
說明 錄製周期為當前直播轉為點播檔案後的最大時間長度。
錄製轉碼模板
從列表中選擇儲存轉碼規則,可以在點播服務中對錄製的視頻進行轉碼處理。
儲存轉碼規則設定是將錄製下來的視頻轉換為可供傳播的點播檔案格式。可轉碼為不同規格的視頻,也可以不轉碼即保持原畫格式。
錄製轉碼模板具體操作,請參見ApsaraVideo for VOD轉碼配置 。
說明 ApsaraVideo for VOD轉碼模板所在地區需與您當前網域名稱所在地區保持一致。例如:當前網域名稱為華東2區,ApsaraVideo for VOD轉碼模板地區也需要在華東2區。
自動合并開關
開啟後可在直播錄製結束後自動將多個錄製周期檔案合并成一個錄製檔案儲存體到VOD中。
說明 開啟多錄製周期合并,會使用ApsaraVideo for VOD服務的基礎剪輯合成功能和轉碼功能。計費詳情參見剪輯合成計費 、媒資轉碼計費 。
自定合并轉碼模板
從列表中選擇儲存轉碼規則,對自動合成出來的視頻在點播服務中進行一次轉碼,錄製轉碼規則從當前點播系統中擷取。自動合并轉碼模板具體操作,請參見轉碼模板 。
說明 ApsaraVideo for VOD轉碼模板所在地區需與您當前網域名稱所在地區保持一致。例如:當前網域名稱為華東2區,ApsaraVideo for VOD轉碼模板地區也需要在華東2區。
單擊確定 。
API配置錄製儲存至VOD
說明 以上範例程式碼表示,對<DomainName>網域名稱進行錄製儲存至VOD配置,AppName為<AppName>,StreamName為<StreamName>。錄製內容不進行轉碼(VOD_NO_TRANSCODE),儲存至點播系統Bucket<StorageLocation>。
AppName和StreamName可以填為*,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。
可以配置多條規則,規則匹配時存在優先順序:
更多參數說明請參見AddLiveRecordVodConfig - 添加直播錄製轉點播配置 。
重要 完成配置後重新推流錄製配置才會生效。
斷流180秒後產生錄製檔案。
錄製內容轉碼 錄製儲存至VOD檔案格式為m3u8,如果想儲存其他格式可以通過轉碼配置實現。配置錄製轉碼範例程式碼如下:
說明 轉碼模板需要在點播系統進行配置,具體操作請參見點播轉碼模板 。
<TranscodeGroupId>為點播系統 配置的轉碼模板組ID 。
配置轉碼後,會對錄製檔案進行轉碼(原檔案仍然保留),產生轉碼地址。
錄製內容合并 錄製內容合并目前分為兩種形式:
同一路流斷流180秒以內 再次推流,錄製內容會自動合并成一個 錄製檔案。
推流時間長度超過錄製周期 之後的檔案合并。在推流時間長度超過錄製周期 之後,會產生一個新的錄製檔案(假設設定錄製周期5分鐘,推流時間長度8分鐘,一次推流將會產生兩個錄製檔案)。
如果需要將多個錄製周期的檔案進行合并,可以進行合并配置。
重要 開啟多錄製周期合并,會使用ApsaraVideo for VOD服務的基礎剪輯合成功能和轉碼功能。計費詳情參見 增值服務計費 以及基礎服務計費 。
配置錄製檔案合并範例程式碼如下:
設定錄製周期時間長度範例程式碼如下:
錄製檔案管理 目前可以通過ApsaraVideo for Live控制台查看 儲存至VOD的錄製檔案,若要對錄製檔案進行管理 請通過ApsaraVideo for VOD進行,詳情請參見ApsaraVideo for VOD媒體管理 。
在ApsaraVideo for Live控制台查看儲存至VOD錄製檔案
登入ApsaraVideo for Live控制台 。 在左側導覽列選擇功能管理>直播錄製 ,進入直播錄製 頁面,選擇錄製管理檔案 頁簽。
選擇配置的播流網域名稱。
單擊儲存至VOD 頁簽。
錄製儲存至OSS 前置條件 若採用錄製儲存至OSS方式進行直播錄製功能配置,需要開通OSS服務以及建立Bucket,具體操作請參見配置OSS 。
功能配置 完成前置條件相關內容之後,就可以進行錄製儲存至OSS配置。
ApsaraVideo for Live目前提供兩種方式添加錄製儲存至OSS配置。
控制台配置錄製儲存至OSS
登入ApsaraVideo for Live控制台 。 在左側導覽列選擇功能管理>直播錄製 ,進入直播錄製 頁面,選擇儲存至OSS配置 頁簽。
選擇待配置的播流網域名稱。
單擊添加 。
配置錄製模板。
表 1. 錄製模板參數
參數
描述
AppName
視頻的應用程式名稱,輸入的AppName 必須與直播推流地址的AppName 保持一致,方可生效。如果您想要進行網域名稱層級錄製,輸入星號(*)可。
StreamName
儲存至OSS支援流層級的錄製。您只需輸入指定的流名稱即可。如果您想要進行全部流錄製,即該AppName 下的流全部錄製,輸入星號(*)可。
儲存位置
選擇儲存位置。
說明 儲存Bucket列表中包含標準Bucket和媒體Bucket。標準Bucket是OSS Bucket,用於儲存。媒體Bucket是MPS定製的Bucket,存入媒體Bucket中的視頻,可執行MPS轉碼任務。目前Bucket列表中,未對Bucket做區分。如果您需要將視頻轉成媒體檔案,需要自行記住對應的媒體Bucket的名稱,方便您後期視頻轉成媒體檔案儲存位置的選擇。
斷流拼接時間長度
直播斷流時間長度超過設定的拼接時間長度後,將會產生新檔案,斷流拼接時間長度支援15~21600秒。
儲存格式
支援flv 、m3u8 、mp4 、cmaf 四種格式。
說明 至少配置一個儲存格式,其中CMAF格式不能與M3U8格式同時選擇。
儲存規則
預設的儲存路徑為
M3U8:record/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime }
TS:record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}
FMP4:record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}
MP4:record/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime }
FLV:record/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime }
樣本
AppName 為liveApp**** ,StreamName 為liveStream**** ,當錄製m3u8 格式的儲存路徑為record/liveApp****/liveStream****/{EscapedStartTime}_{EscapedEndTime } 。
單個TS時間長度
單個切片時間長度,預設為30秒。支援單個TS時間長度範圍5~30秒。
錄製周期
錄製周期 範圍為15分鐘~360分鐘,最大支援6小時錄製。超過6小時,系統將按照錄製命名規則產生新檔案。
說明 錄製周期為當前直播轉為點播檔案後的最大時間長度。
表 2. 錄製轉碼流參數
參數
描述
錄製轉碼流
開啟錄製轉碼流 開關,配置參數。
儲存格式
支援flv 、m3u8 、mp4 、cmaf 四種格式。
說明 至少配置一個儲存格式,其中CMAF格式不能與M3U8格式同時選擇。
儲存規則
預設的儲存路徑為
M3U8:transcodeRecord/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime }
TS:transcodeRecord/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}
FMP4:transcodeRecord/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}
MP4:transcodeRecord/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime }
FLV:transcodeRecord/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime }
樣本
AppName 為liveApp**** ,StreamName 為liveStream**** ,轉碼模板ID 為lld,當錄製m3u8 格式的實際儲存路徑為transcodeRecord/liveApp****/liveStream****_lld/{EscapedStartTime}_{EscapedEndTime } 。
單個TS時間長度
單個切片時間長度,預設為30秒。支援單個TS時間長度5~30秒。
錄製周期
錄製周期 範圍為15分鐘~360分鐘,最大支援6小時錄製。超過6小時,系統將按照錄製命名規則產生新檔案。
說明 錄製周期為當前直播轉為點播檔案後的最大時間長度。
轉碼模板ID
支援選擇指定轉碼模板(上限10個)或全部轉碼模板。
轉碼模板所屬AppName 需和錄製模板保持一致才可生效,若無轉碼模板,請先添加轉碼模板,請參見通用轉碼 。
單擊確定 。
API配置錄製儲存至OSS
說明 以上範例程式碼表示,對<DomainName>網域名稱進行錄製儲存至OSS配置,AppName為<AppName>,StreamName為<StreamName>,儲存格式為m3u8 ,儲存至<OssBucket>中。
OssObjectPrefix與SliceOssObjectPrefix長度不超過255字元(匹配變數後),具體支援變數請參見APIAddLiveAppRecordConfig - 添加錄製配置 說明。
<OssEndpoint>可通過<OssBucket>所屬地區在OSSOSS地區和訪問網域名稱 進行查看。
AppName和StreamName可以填為*,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。
可以配置多條規則,規則匹配時存在優先順序:
錄製轉碼流 如果希望在儲存錄製內容時減少錄製檔案體積,可通過錄製轉碼流實現(在保證畫質品質的前提下,調整視頻碼率、提高視頻壓縮率、減小檔案體積)。錄製儲存至OSS功能支援同時儲存轉碼流與原始流,也支援僅儲存轉碼流或原始流。
重要 使用直播轉碼功能會產生轉碼費用,按轉碼標準、解析度規格及對應總轉碼時間長度計費。計費規則詳見直播轉碼費用 。
配置錄製轉碼流範例程式碼>>>
說明 若僅需錄製轉碼流,則可以不設定 原始流(setRecordFormats)。
設定錄製轉碼流(setTranscodeRecordFormats)時,需同時指定轉碼模板ID(setTranscodeTemplatess),轉碼模板需要進行配置,具體操作請參見直播轉碼 。
錄製轉碼流需要在配置轉碼模板時,將轉碼配置為推流觸發 。
轉碼流錄製檔案名稱StreamName會轉換成StreamName
加_轉碼模板ID
的形式。
斷流拼接 同一路流斷流在斷流拼接 時間長度 (預設180秒)以內再次推流,錄製內容會自動合并成一個 錄製檔案。
說明 因需等待斷流拼接,所以才會在斷流拼接時間長度之後產生錄製檔案。
您可以根據您實際的業務調整斷流拼接時間長度,設定斷流拼接時間長度:
不建議調整為過短或過長的時間。若產生錄製檔案的時間設定過短,由於網路波動,斷流重推等原因,就會產生大量的錄製檔案。若設定過長則會導致錄製檔案在直播結束(斷流)之後很長時間才能看到。
在一些特定的業務情境中,您可能完全不希望 等待斷流拼接,而希望在直播結束後立即產生錄製檔案,這種情況也是可以實現的。您可以給推流設定回調事件 (設定推流回調事件請參見直播推流狀態回調 ),在接收到推流結束通知時通過調用 RealTimeRecordCommand - 即時錄製指令 API做到取消斷流拼接。
自訂錄製策略 在功能配置 中,我們進行了直播錄製功能的配置,在直播推流時即會開始對直播內容進行錄製,我們稱其為自動錄製 。
但有些時候,我們希望能夠通過業務決策自主決定是否需要對某一次直播內容進行錄製。直播錄製功能提供瞭解決這類問題的方法,自主決定錄製分為兩種情況:
一,由直播服務詢問您的業務系統是否需要對該直播內容進行錄製,得到響應需要錄製後再進行錄製,我們稱其為按需錄製 。
二,由您的業務系統給直播服務發出通知對直播內容進行錄製,我們稱其為手動錄製 。
手動錄製 實現手動錄製,需要將自動錄製功能關閉。範例程式碼如下:
//OnDemand欄位填7,表示不進行自動錄製。
addLiveAppRecordConfigRequest.setOnDemand(7);
然後在直播的過程中,您可以根據業務情況通過調用 RealTimeRecordCommand - 即時錄製指令 API開啟錄製。
停止錄製 無論是自動錄製 ,按需錄製 ,手動錄製 ,都可以調用RealTimeRecordCommand - 即時錄製指令 API主動停止錄製。
停止錄製範例程式碼>>>
說明 setCommand("stop")表示停止錄製。
主動停止錄製,同樣需等待斷流拼接 時間長度之後才會產生錄製檔案。
如果錄製的是轉碼流,此處需要將<StreamName>設定成StreamName
加_轉碼模板ID
的形式。
相關API
錄製周期配置 直播時間長度超過 設定的錄製周期後,將產生新檔案(例如直播20分鐘,錄製周期設定為15分鐘,將會產生兩個錄製檔案),錄製周期支援15-360分鐘 。
設定錄製周期範例程式碼>>>
說明 注意在以上樣本中,同時配置了兩種 儲存格式,分別設定了錄製周期。按照此設定進行推流20分鐘 ,將會產生3個錄製檔案(一個mp4,兩個m3u8)。
在直播未超過錄製周期的情況下,錄製檔案一般在直播結束後產生。若是您的業務需要在直播未結束的情況下查看錄製檔案,可以通過調用 RealTimeRecordCommand - 即時錄製指令 API重新整理錄製內容,強制重新開始錄製,如果restart之前在錄製,會立即產生錄製檔案。
重新開始錄製範例程式碼>>>
說明 setCommand("restart")表示重新開始錄製。
如果錄製的是轉碼流,此處需要將<StreamName>設定成StreamName
加_轉碼模板ID
的形式。
若您的直播流錄製配置了多種儲存格式,此操作會將多種儲存格式一起重新整理。
錄製內容合并與提取 ApsaraVideo for Live支援通過建立索引檔案將錄製內容按照時間段提取 出檔案,也可以將起止時間段內的多個錄製檔案內容合并 為一個。
調用CreateLiveStreamRecordIndexFiles - 建立錄製索引檔案 API建立錄製內容索引檔案。
建立錄製內容索引檔案範例程式碼>>>
重要 建立錄製索引必保證直播流發生過推流行為,如果設定的時間內未發生過直播或直播流名稱錯誤等會導致建立錄製索引失敗。
錄製內容分為檔案資訊(包含AppName,StreamName,OSS儲存路徑等)和檔案。檔案資訊(TS分區檔案資訊和建立的M3U8索引檔案資訊)儲存在ApsaraVideo for Live 中,檔案(TS分區檔案和M3U8索引檔案)儲存在OSS 中。
儲存在OSS中的檔案 儲存時間由OSS的儲存配置決定。
TS分區檔案資訊 在ApsaraVideo for Live系統中僅儲存3個月 ,建立M3U8索引檔案只能選擇最近3個月的錄製內容。
M3U8索引檔案資訊 在ApsaraVideo for Live系統中僅儲存6個月 ,若要查詢僅能查詢6個月內建立的索引檔案的資訊。
如要合并或提取轉碼流,需要將StreamName設定成StreamName
加_轉碼模板ID
的形式。
<OssBucket>需要與直播中心同地區,否則無法通過網域名稱查詢到建立的M3U8索引檔案資訊。
相關API
錄製檔案管理 查看錄製檔案 ApsaraVideo for Live支援三種方式進行錄製檔案查看。
API查看錄製檔案
Java //需要將<>內容替換成實際使用的值
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);
DescribeLiveStreamRecordIndexFilesRequest describeLiveStreamRecordIndexFilesRequest=new DescribeLiveStreamRecordIndexFilesRequest();
describeLiveStreamRecordIndexFilesRequest.setAppName("<AppName>");
describeLiveStreamRecordIndexFilesRequest.setStreamName("<StreamName>");
describeLiveStreamRecordIndexFilesRequest.setDomainName("<DomainName>");
describeLiveStreamRecordIndexFilesRequest.setStartTime("<StartTime>");
describeLiveStreamRecordIndexFilesRequest.setEndTime("<EndTime>");
DescribeLiveStreamRecordIndexFilesResponse describeLiveStreamRecordIndexFilesResponse = null;
try {
describeLiveStreamRecordIndexFilesResponse = client.getAcsResponse(describeLiveStreamRecordIndexFilesRequest);
} catch (ClientException e) {
e.printStackTrace();
}
for(int i=0;i<describeLiveStreamRecordIndexFilesResponse.getRecordIndexInfoList().size();i++){
System.out.println(new Gson().toJson(describeLiveStreamRecordIndexFilesResponse.getRecordIndexInfoList().get(i)));
}
OSS查看錄製檔案
在配置錄製功能時,您已指定了錄製檔案在OSS中的儲存地址。如果需要在OSS中查看錄製檔案,可參見OSS列舉檔案 。
刪除錄製檔案 ApsaraVideo for Live儲存的是錄製檔案資訊 ,如AppName,StreamName,OSS檔案儲存路徑等,檔案 是儲存在OSS中。如果在刪除錄製時需要同步刪除儲存在OSS中的檔案,則需要建立服務角色AliyunMTSVideoLifecycleRole,並精確授權 AliyunMTSVideoLifecycleRolePolicy系統策略。
詳細授權過程
在直播控制台刪除錄製檔案時需要先進行授權,您需要按照如下步驟在RAM控制台建立並授權RAM角色後,再登入直播控制台刪除錄製檔案。
使用阿里雲帳號登入RAM控制台 。
在左側導覽列,選擇。
在角色 頁面,單擊建立角色 。
在選擇類型 頁簽,可信實體類型選擇阿里雲服務 ,單擊下一步 。
在配置角色 頁簽,請按照以下參數配置:
配置完成後,單擊完成 。
在建立完成 頁簽,提示角色建立成功後,單擊精確授權 。
在添加許可權 頁簽,請按照以下參數配置:
配置完成後,單擊確定 。
目前有三種方式進行錄製檔案刪除。
控制台刪除錄製檔案
登入ApsaraVideo for Live控制台 。 在左側導覽列選擇錄製檔案管理 。
選擇待刪除錄製檔案的網域名稱。
單擊儲存至OSS 頁簽,選擇刪除 。
單擊確定 。
同步刪除選項預設不選中。若選中此選項,則在刪除ApsaraVideo for Live控制台 上錄製檔案記錄時會同步刪除OSS中的錄製檔案。
OSS刪除錄製檔案
一般情況下,不建議您直接刪除儲存在OSS中的錄製檔案。如果需要刪除儲存在OSS中的錄製檔案,可以通過ApsaraVideo for Live刪除錄製檔案時同步刪除儲存在OSS中的檔案。如果您因為業務需求需要直接刪除儲存在OSS中的錄製檔案,可參考文檔OSS刪除檔案 。
其他刪除檔案方法 刪除超過6個月的檔案:由於只能查詢6個月以內的錄製檔案資訊,若要刪除超過6個月的檔案請通過OSS進行,詳情請參見OSS刪除檔案 。
到期刪除錄製檔案:由於媒體資源均存放在OSS的Bucket中,需要授權訪問才能正常刪除錄製檔案,您可以點擊授權 進行一鍵授權。授權後,再提交工單申請,我們會在後台為您配置您需要的到期時間。關於如何提交工單,請參見聯絡我們 。配置到期時間後,錄製檔案到期刪除功能授權操作即為完成。
說明 雲資源訪問授權是對系統建立,供ApsaraVideo for Live使用授予訪問雲資源許可權的角色。授權後如果誤刪角色,可進行重新授權。