日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

直播錄制

更新時(shí)間:

視頻直播錄制可對(duì)當(dāng)前直播實(shí)時(shí)錄制并可回放歷史直播視頻。本文將詳細(xì)為您介紹視頻直播錄制功能。

功能介紹

視頻直播是通過(guò)播放地址以實(shí)時(shí)流的形式播放推流端的數(shù)據(jù),如果想要在直播結(jié)束后再次觀看或修改直播內(nèi)容,就必須要使用視頻直播的錄制功能。

視頻直播錄制功能,就是將直播中心接收到的推流數(shù)據(jù)進(jìn)行錄制,保存至您指定的存儲(chǔ)位置。目前直播錄制存儲(chǔ)提供兩種方式,錄制存儲(chǔ)至VOD錄制存儲(chǔ)至OSS

直播錄制的原理

直播錄制的過(guò)程,是通過(guò)拉取您推上來(lái)的直播流,將音視頻封裝成單獨(dú)的一個(gè)個(gè)媒體切片(封裝格式為TS),然后進(jìn)行儲(chǔ)存。直播錄制在工作時(shí)遵循以下原則:

  • 直播錄制只修改音視頻的封裝格式(RTMP/FLV轉(zhuǎn)成TS),絕不修改音視頻內(nèi)容(即編碼層內(nèi)容)。舉個(gè)例子,如果您推上來(lái)的直播流是花屏的,那錄制下來(lái)的也是花屏的。

  • 直播錄制有權(quán)限往用戶儲(chǔ)存地址寫(xiě)入錄制文件,但是不會(huì)也沒(méi)有權(quán)限修改/刪除用戶儲(chǔ)存地址的任務(wù)文件(包括已寫(xiě)入的錄制文件)。用戶儲(chǔ)存地址中的錄制文件,完全由您自己管理。

功能對(duì)比

錄制存儲(chǔ)至VOD和錄制存儲(chǔ)至OSS都可以對(duì)直播內(nèi)容進(jìn)行錄制存儲(chǔ)。兩者使用場(chǎng)景有所不同,您可以根據(jù)您自己的業(yè)務(wù)決定具體采用哪種方式進(jìn)行存儲(chǔ)。

存儲(chǔ)方式

關(guān)聯(lián)產(chǎn)品服務(wù)

封裝格式

適用場(chǎng)景

錄制存儲(chǔ)至VOD

開(kāi)通視頻點(diǎn)播服務(wù)

TS/M3U8

傾向于對(duì)錄制內(nèi)容進(jìn)行二次生產(chǎn),注重錄制內(nèi)容后期處理,如剪輯,播放,設(shè)置錄制視頻封面等。

錄制存儲(chǔ)至OSS

開(kāi)通OSS服務(wù)

  • TS/M3U8

  • MP4

  • FLV

  • CMAF

    說(shuō)明

    不管是哪種封裝格式,直播錄制都會(huì)先將直播流切片成一個(gè)個(gè)的TS切片,然后再合成對(duì)應(yīng)封裝格式的錄制文件。

傾向于錄制內(nèi)容管理,注重存儲(chǔ)。

說(shuō)明

同一個(gè)直播流不能同時(shí)配置兩種存儲(chǔ)方式。

限制條件

音視頻編碼格式

由于直播錄制需要先將直播流切分成TS文件,因此您推上來(lái)的直播流的音視頻編碼格式必須滿足TS封裝格式的要求。根據(jù)FLV標(biāo)準(zhǔn)和ISO/IEC 13818-1標(biāo)準(zhǔn),直播錄制目前僅支持以下編碼格式:

  • 視頻:H264、HEVC、MPEG4

  • 音頻:AAC、MP3

說(shuō)明

如果直播流包含了非以上格式編碼的音視頻,直播錄制可能會(huì)出現(xiàn):無(wú)法生成錄制文件、錄制黑屏、錄制沒(méi)有聲音,以及其他一些無(wú)法預(yù)見(jiàn)的異常情況。

異常的直播流

對(duì)于正常的直播流(沒(méi)有不支持的編碼格式、幀率穩(wěn)定、時(shí)間戳單調(diào)線性增長(zhǎng)),直播錄制均能正常生成錄制文件。當(dāng)然,對(duì)于偶爾幀率不穩(wěn)定,時(shí)間戳跳變的流,直播錄制也能做出一定的兼容,保證錄制文件的正常生成。但是如果推上來(lái)的直播流存在嚴(yán)重異常(長(zhǎng)時(shí)間沒(méi)有視頻幀,時(shí)間戳增長(zhǎng)沒(méi)有規(guī)律,音視頻頭缺失等等),直播錄制可能無(wú)法保證正常生成錄制文件。

錄制存儲(chǔ)至VOD

前置條件

若采用錄制存儲(chǔ)至VOD方式進(jìn)行直播錄制功能配置,需要開(kāi)通視頻點(diǎn)播服務(wù)啟用點(diǎn)播系統(tǒng)Bucket

重要
  • 錄制文件存儲(chǔ)在視頻點(diǎn)播VOD中,會(huì)產(chǎn)生存儲(chǔ)費(fèi)用,在VOD中計(jì)費(fèi)請(qǐng)參見(jiàn)點(diǎn)播基礎(chǔ)服務(wù)計(jì)費(fèi)

  • 在啟用點(diǎn)播系統(tǒng)Bucket時(shí),需要注意點(diǎn)播系統(tǒng)Bucket需要與待配置域名的直播中心同地域。

  • 使用金融云賬號(hào)不支持視頻直播錄制到點(diǎn)播。

功能配置

完成前置條件相關(guān)內(nèi)容之后,就可以進(jìn)行錄制存儲(chǔ)至VOD配置。

視頻直播目前提供兩種方式添加錄制存儲(chǔ)至VOD配置。

控制臺(tái)配置錄制存儲(chǔ)至VOD

  1. 登錄視頻直播控制臺(tái)
  2. 在左側(cè)導(dǎo)航欄選擇功能管理>直播錄制,進(jìn)入直播錄制頁(yè)面,選擇存儲(chǔ)至VOD配置頁(yè)簽。

  3. 選擇待配置的播流域名。

  4. 單擊添加

  5. 配置錄制模板。

    image

    錄制模板參數(shù)及說(shuō)明如下表所示。

    參數(shù)

    描述

    AppName

    視頻的應(yīng)用名稱,輸入的AppName必須與直播推流的AppName保持一致,方可生效。如果您想要進(jìn)行域名級(jí)別錄制,輸入星號(hào)(*)即可。

    StreamName

    存儲(chǔ)至VOD支持流級(jí)別的錄制。您只需輸入指定的流名稱即可。如果您想要進(jìn)行全部流錄制,即該AppName下的流全部錄制,輸入星號(hào)(*)即可。

    說(shuō)明

    AppNameStreamName參數(shù)支持英文、數(shù)字、“-”、“_”符號(hào),長(zhǎng)度限制在255個(gè)字符以內(nèi)。

    存儲(chǔ)地址

    選擇存儲(chǔ)位置。

    錄制周期

    錄制周期范圍為15~360分鐘,最大支持 6 小時(shí)錄制。超過(guò) 6 小時(shí),系統(tǒng)將按照錄制命名規(guī)則生成新文件。ts切片時(shí)長(zhǎng)默認(rèn)為 30s。

    說(shuō)明

    錄制周期為當(dāng)前直播轉(zhuǎn)為點(diǎn)播文件后的最大時(shí)長(zhǎng)。

    錄制轉(zhuǎn)碼模板

    從列表中選擇存儲(chǔ)轉(zhuǎn)碼規(guī)則,可以在點(diǎn)播服務(wù)中對(duì)錄制的視頻進(jìn)行轉(zhuǎn)碼處理。

    存儲(chǔ)轉(zhuǎn)碼規(guī)則設(shè)置是將錄制下來(lái)的視頻轉(zhuǎn)換為可供傳播的點(diǎn)播文件格式。可轉(zhuǎn)碼為不同規(guī)格的視頻,也可以不轉(zhuǎn)碼即保持原畫(huà)格式。

    錄制轉(zhuǎn)碼模板具體操作,請(qǐng)參見(jiàn)視頻點(diǎn)播轉(zhuǎn)碼配置

    說(shuō)明

    視頻點(diǎn)播轉(zhuǎn)碼模板所在區(qū)域需與您當(dāng)前域名所在區(qū)域保持一致。例如:當(dāng)前域名為華東2區(qū),視頻點(diǎn)播轉(zhuǎn)碼模板區(qū)域也需要在華東2區(qū)。

    自動(dòng)合并開(kāi)關(guān)

    開(kāi)啟后可在直播錄制結(jié)束后自動(dòng)將多個(gè)錄制周期文件合并成一個(gè)錄制文件存儲(chǔ)到VOD中。

    說(shuō)明

    開(kāi)啟多錄制周期合并,會(huì)使用視頻點(diǎn)播服務(wù)的基礎(chǔ)剪輯合成功能和轉(zhuǎn)碼功能。計(jì)費(fèi)詳情參見(jiàn)剪輯合成計(jì)費(fèi)媒資轉(zhuǎn)碼計(jì)費(fèi)

    自定合并轉(zhuǎn)碼模板

    從列表中選擇存儲(chǔ)轉(zhuǎn)碼規(guī)則,對(duì)自動(dòng)合成出來(lái)的視頻在點(diǎn)播服務(wù)中進(jìn)行一次轉(zhuǎn)碼,錄制轉(zhuǎn)碼規(guī)則從當(dāng)前點(diǎn)播系統(tǒng)中獲取。自動(dòng)合并轉(zhuǎn)碼模板具體操作,請(qǐng)參見(jiàn)轉(zhuǎn)碼模板

    說(shuō)明

    視頻點(diǎn)播轉(zhuǎn)碼模板所在區(qū)域需與您當(dāng)前域名所在區(qū)域保持一致。例如:當(dāng)前域名為華東2區(qū),視頻點(diǎn)播轉(zhuǎn)碼模板區(qū)域也需要在華東2區(qū)。

  6. 單擊確定

API配置錄制存儲(chǔ)至VOD

//需要將<>內(nèi)容替換成實(shí)際使用的值
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);   
AddLiveRecordVodConfigRequest addLiveRecordVodConfigRequest=new AddLiveRecordVodConfigRequest();
addLiveRecordVodConfigRequest.setDomainName("<DomainName>");
addLiveRecordVodConfigRequest.setAppName("<AppName>");
addLiveRecordVodConfigRequest.setStreamName("<StreamName>");
addLiveRecordVodConfigRequest.setVodTranscodeGroupId("VOD_NO_TRANSCODE");
//點(diǎn)播系統(tǒng)Bucket地址
addLiveRecordVodConfigRequest.setStorageLocation("<StorageLocation>");
AddLiveRecordVodConfigResponse dddLiveRecordVodConfigResponse = null;
try {
    dddLiveRecordVodConfigResponse = client.getAcsResponse(addLiveRecordVodConfigRequest);
} catch (ClientException e) {
    e.printStackTrace();
}
 System.out.println(new Gson().toJson(dddLiveRecordVodConfigResponse));

說(shuō)明
  • 以上示例代碼表示,對(duì)<DomainName>域名進(jìn)行錄制存儲(chǔ)至VOD配置,AppName為<AppName>,StreamName為<StreamName>。錄制內(nèi)容不進(jìn)行轉(zhuǎn)碼(VOD_NO_TRANSCODE),存儲(chǔ)至點(diǎn)播系統(tǒng)Bucket<StorageLocation>。

  • AppName和StreamName可以填為*,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。

  • 可以配置多條規(guī)則,規(guī)則匹配時(shí)存在優(yōu)先級(jí):

    • AppName(不為*)、StreamName(不為*)的優(yōu)先級(jí)最高。

    • AppName(不為*)的優(yōu)先級(jí)次之。

    • AppName為*(即只限定域名)的優(yōu)先級(jí)最低。

  • 更多參數(shù)說(shuō)明請(qǐng)參見(jiàn)AddLiveRecordVodConfig - 添加直播錄制轉(zhuǎn)點(diǎn)播配置

重要
  • 完成配置后重新推流錄制配置才會(huì)生效。

  • 斷流180秒后生成錄制文件。

錄制內(nèi)容轉(zhuǎn)碼

錄制存儲(chǔ)至VOD文件格式為m3u8,如果想存儲(chǔ)其他格式可以通過(guò)轉(zhuǎn)碼配置實(shí)現(xiàn)。配置錄制轉(zhuǎn)碼示例代碼如下:

 addLiveRecordVodConfigRequest.setVodTranscodeGroupId("<TranscodeGroupId>");
說(shuō)明
  • 轉(zhuǎn)碼模板需要在點(diǎn)播系統(tǒng)進(jìn)行配置,具體操作請(qǐng)參見(jiàn)點(diǎn)播轉(zhuǎn)碼模板

  • <TranscodeGroupId>為點(diǎn)播系統(tǒng)配置的轉(zhuǎn)碼模板組ID

  • 配置轉(zhuǎn)碼后,會(huì)對(duì)錄制文件進(jìn)行轉(zhuǎn)碼(原文件仍然保留),生成轉(zhuǎn)碼地址。

錄制內(nèi)容合并

錄制內(nèi)容合并目前分為兩種形式:

  1. 同一路流斷流180秒以內(nèi)再次推流,錄制內(nèi)容會(huì)自動(dòng)合并成一個(gè)錄制文件。

  2. 推流時(shí)長(zhǎng)超過(guò)錄制周期之后的文件合并。在推流時(shí)長(zhǎng)超過(guò)錄制周期之后,會(huì)生成一個(gè)新的錄制文件(假設(shè)設(shè)置錄制周期5分鐘,推流時(shí)長(zhǎng)8分鐘,一次推流將會(huì)產(chǎn)生兩個(gè)錄制文件)。

    如果需要將多個(gè)錄制周期的文件進(jìn)行合并,可以進(jìn)行合并配置。

    重要

    開(kāi)啟多錄制周期合并,會(huì)使用視頻點(diǎn)播服務(wù)的基礎(chǔ)剪輯合成功能和轉(zhuǎn)碼功能。計(jì)費(fèi)詳情參見(jiàn) 增值服務(wù)計(jì)費(fèi)以及基礎(chǔ)服務(wù)計(jì)費(fèi)

    配置錄制文件合并示例代碼如下:

    addLiveRecordVodConfigRequest.setAutoCompose("ON");
    addLiveRecordVodConfigRequest.setComposeVodTranscodeGroupId("<TranscodeGroupId>");
    說(shuō)明
    • 合并之后會(huì)產(chǎn)生一個(gè)新的文件,原錄制文件仍然保留。

    • 轉(zhuǎn)碼模板需要在點(diǎn)播系統(tǒng)進(jìn)行配置,具體操作請(qǐng)參見(jiàn)點(diǎn)播轉(zhuǎn)碼模板

    • <TranscodeGroupId>為點(diǎn)播系統(tǒng)配置的轉(zhuǎn)碼模板組ID

    設(shè)置錄制周期時(shí)長(zhǎng)示例代碼如下:

    //單位秒,取值范圍(300~21600),默認(rèn)值900
    addLiveRecordVodConfigRequest.setCycleDuration(<300>);

錄制文件管理

目前可以通過(guò)視頻直播控制臺(tái)查看存儲(chǔ)至VOD的錄制文件,若要對(duì)錄制文件進(jìn)行管理請(qǐng)通過(guò)視頻點(diǎn)播進(jìn)行,詳情請(qǐng)參見(jiàn)視頻點(diǎn)播媒體管理

在視頻直播控制臺(tái)查看存儲(chǔ)至VOD錄制文件

  1. 登錄視頻直播控制臺(tái)
  2. 在左側(cè)導(dǎo)航欄選擇功能管理>直播錄制,進(jìn)入直播錄制頁(yè)面,選擇錄制管理文件頁(yè)簽。

  3. 選擇配置的播流域名。

  4. 單擊存儲(chǔ)至VOD頁(yè)簽。

    image

錄制存儲(chǔ)至OSS

前置條件

若采用錄制存儲(chǔ)至OSS方式進(jìn)行直播錄制功能配置,需要開(kāi)通OSS服務(wù)以及創(chuàng)建Bucket,具體操作請(qǐng)參見(jiàn)配置OSS

重要
  • 錄制文件存儲(chǔ)在OSS中,會(huì)產(chǎn)生存儲(chǔ)費(fèi)用,在OSS中計(jì)費(fèi)請(qǐng)參見(jiàn)存儲(chǔ)費(fèi)用

  • OssBucket需要與待配置域名的直播中心同地域。

功能配置

完成前置條件相關(guān)內(nèi)容之后,就可以進(jìn)行錄制存儲(chǔ)至OSS配置。

視頻直播目前提供兩種方式添加錄制存儲(chǔ)至OSS配置。

控制臺(tái)配置錄制存儲(chǔ)至OSS

  1. 登錄視頻直播控制臺(tái)
  2. 在左側(cè)導(dǎo)航欄選擇功能管理>直播錄制,進(jìn)入直播錄制頁(yè)面,選擇存儲(chǔ)至OSS配置頁(yè)簽。

  3. 選擇待配置的播流域名。

  4. 單擊添加

  5. 配置錄制模板。

    image

    表 1. 錄制模板參數(shù)

    參數(shù)

    描述

    AppName

    視頻的應(yīng)用名稱,輸入的AppName必須與直播推流地址的AppName保持一致,方可生效。如果您想要進(jìn)行域名級(jí)別錄制,輸入星號(hào)(*)可。

    StreamName

    存儲(chǔ)至OSS支持流級(jí)別的錄制。您只需輸入指定的流名稱即可。如果您想要進(jìn)行全部流錄制,即該AppName下的流全部錄制,輸入星號(hào)(*)可。

    說(shuō)明
    • AppNameStreamName參數(shù)支持英文、數(shù)字、短劃線(-)、下劃線(_)符號(hào),長(zhǎng)度限制在255字符以內(nèi)。

    • AppNameStreamName參數(shù)如果使用(*)號(hào)需注意

      • (*)號(hào)不能匹配任意字符串,只能通配當(dāng)前已有的應(yīng)用名稱或流名稱。

      • (*)號(hào)無(wú)法在字符串中進(jìn)行通配。

    存儲(chǔ)位置

    選擇存儲(chǔ)位置。

    說(shuō)明

    存儲(chǔ)Bucket列表中包含標(biāo)準(zhǔn)Bucket和媒體Bucket。標(biāo)準(zhǔn)Bucket是OSS Bucket,用于存儲(chǔ)。媒體Bucket是MPS定制的Bucket,存入媒體Bucket中的視頻,可執(zhí)行MPS轉(zhuǎn)碼任務(wù)。目前Bucket列表中,未對(duì)Bucket做區(qū)分。如果您需要將視頻轉(zhuǎn)成媒體文件,需要自行記住對(duì)應(yīng)的媒體Bucket的名稱,方便您后期視頻轉(zhuǎn)成媒體文件存儲(chǔ)位置的選擇。

    斷流拼接時(shí)長(zhǎng)

    直播斷流時(shí)長(zhǎng)超過(guò)設(shè)定的拼接時(shí)長(zhǎng)后,將會(huì)生成新文件,斷流拼接時(shí)長(zhǎng)支持15~21600秒。

    存儲(chǔ)格式

    支持flvm3u8mp4cmaf四種格式。

    說(shuō)明

    至少配置一個(gè)存儲(chǔ)格式,其中CMAF格式不能與M3U8格式同時(shí)選擇。

    存儲(chǔ)規(guī)則

    默認(rèn)的存儲(chǔ)路徑為

    • 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 }

    示例

    AppNameliveApp****StreamNameliveStream****,當(dāng)錄制m3u8格式的存儲(chǔ)路徑為record/liveApp****/liveStream****/{EscapedStartTime}_{EscapedEndTime }

    單個(gè)TS時(shí)長(zhǎng)

    單個(gè)切片時(shí)長(zhǎng),默認(rèn)為30秒。支持單個(gè)TS時(shí)長(zhǎng)范圍5~30秒。

    錄制周期

    錄制周期范圍為15分鐘~360分鐘,最大支持6小時(shí)錄制。超過(guò)6小時(shí),系統(tǒng)將按照錄制命名規(guī)則生成新文件。

    說(shuō)明

    錄制周期為當(dāng)前直播轉(zhuǎn)為點(diǎn)播文件后的最大時(shí)長(zhǎng)。

    image

    表 2. 錄制轉(zhuǎn)碼流參數(shù)

    參數(shù)

    描述

    錄制轉(zhuǎn)碼流

    打開(kāi)錄制轉(zhuǎn)碼流開(kāi)關(guān),配置參數(shù)。

    存儲(chǔ)格式

    支持flvm3u8mp4cmaf四種格式。

    說(shuō)明

    至少配置一個(gè)存儲(chǔ)格式,其中CMAF格式不能與M3U8格式同時(shí)選擇。

    存儲(chǔ)規(guī)則

    默認(rèn)的存儲(chǔ)路徑為

    • 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 }

    示例

    AppNameliveApp****StreamNameliveStream****轉(zhuǎn)碼模板ID為lld,當(dāng)錄制m3u8格式的實(shí)際存儲(chǔ)路徑為transcodeRecord/liveApp****/liveStream****_lld/{EscapedStartTime}_{EscapedEndTime }

    單個(gè)TS時(shí)長(zhǎng)

    單個(gè)切片時(shí)長(zhǎng),默認(rèn)為30秒。支持單個(gè)TS時(shí)長(zhǎng)5~30秒。

    錄制周期

    錄制周期范圍為15分鐘~360分鐘,最大支持6小時(shí)錄制。超過(guò)6小時(shí),系統(tǒng)將按照錄制命名規(guī)則生成新文件。

    說(shuō)明

    錄制周期為當(dāng)前直播轉(zhuǎn)為點(diǎn)播文件后的最大時(shí)長(zhǎng)。

    轉(zhuǎn)碼模板ID

    支持選擇指定轉(zhuǎn)碼模板(上限10個(gè))或全部轉(zhuǎn)碼模板。

    轉(zhuǎn)碼模板所屬AppName需和錄制模板保持一致才可生效,若無(wú)轉(zhuǎn)碼模板,請(qǐng)先添加轉(zhuǎn)碼模板,請(qǐng)參見(jiàn)通用轉(zhuǎn)碼

  6. 單擊確定

API配置錄制存儲(chǔ)至OSS

        //需要將<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);   
        AddLiveAppRecordConfigRequest addLiveAppRecordConfigRequest=new AddLiveAppRecordConfigRequest();
        addLiveAppRecordConfigRequest.setAppName("<AppName>");
        addLiveAppRecordConfigRequest.setStreamName("<StreamName>");
        addLiveAppRecordConfigRequest.setDomainName("<DomainName>");
        addLiveAppRecordConfigRequest.setOssEndpoint("<OssEndpoint>");
        addLiveAppRecordConfigRequest.setOssBucket("<OssBucket>");
        List<AddLiveAppRecordConfigRequest.RecordFormat> formatList=new ArrayList<AddLiveAppRecordConfigRequest.RecordFormat>();
        AddLiveAppRecordConfigRequest.RecordFormat m3u8Format=new AddLiveAppRecordConfigRequest.RecordFormat();
        m3u8Format.setFormat("m3u8");
        //OSS存儲(chǔ)的錄制文件名
        m3u8Format.setOssObjectPrefix("<record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        //切片名稱
        m3u8Format.setSliceOssObjectPrefix("<record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}>");
        formatList.add(m3u8Format);
        addLiveAppRecordConfigRequest.setRecordFormats(formatList);
        AddLiveAppRecordConfigResponse addLiveAppRecordConfigResponse = null;
        try {
            addLiveAppRecordConfigResponse = client.getAcsResponse(addLiveAppRecordConfigRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(addLiveAppRecordConfigResponse));
說(shuō)明
  • 以上示例代碼表示,對(duì)<DomainName>域名進(jìn)行錄制存儲(chǔ)至OSS配置,AppName為<AppName>,StreamName為<StreamName>,儲(chǔ)存格式為m3u8,存儲(chǔ)至<OssBucket>中。

  • OssObjectPrefix與SliceOssObjectPrefix長(zhǎng)度不超過(guò)255字符(匹配變量后),具體支持變量請(qǐng)參見(jiàn)APIAddLiveAppRecordConfig - 添加錄制配置說(shuō)明。

  • <OssEndpoint>可通過(guò)<OssBucket>所屬地域在OSSOSS地域和訪問(wèn)域名進(jìn)行查看。

  • AppName和StreamName可以填為*,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。

  • 可以配置多條規(guī)則,規(guī)則匹配時(shí)存在優(yōu)先級(jí):

    • AppName(不為*)、StreamName(不為*)的優(yōu)先級(jí)最高。

    • AppName(不為*)的優(yōu)先級(jí)次之。

    • AppName為*(即只限定域名)的優(yōu)先級(jí)最低。

重要
  • 完成配置后重新推流錄制配置才會(huì)生效。

  • 斷流180秒(該時(shí)間可以設(shè)置,詳見(jiàn)斷流拼接)后生成錄制文件。

錄制轉(zhuǎn)碼流

如果希望在存儲(chǔ)錄制內(nèi)容時(shí)減少錄制文件體積,可通過(guò)錄制轉(zhuǎn)碼流實(shí)現(xiàn)(在保證畫(huà)質(zhì)質(zhì)量的前提下,調(diào)整視頻碼率、提高視頻壓縮率、減小文件體積)。錄制存儲(chǔ)至OSS功能支持同時(shí)存儲(chǔ)轉(zhuǎn)碼流與原始流,也支持僅存儲(chǔ)轉(zhuǎn)碼流或原始流。

重要

使用直播轉(zhuǎn)碼功能會(huì)產(chǎn)生轉(zhuǎn)碼費(fèi)用,按轉(zhuǎn)碼標(biāo)準(zhǔn)、分辨率規(guī)格及對(duì)應(yīng)總轉(zhuǎn)碼時(shí)長(zhǎng)計(jì)費(fèi)。計(jì)費(fèi)規(guī)則詳見(jiàn)直播轉(zhuǎn)碼費(fèi)用

配置錄制轉(zhuǎn)碼流示例代碼>>>

        //需要將<>內(nèi)容替換成實(shí)際使用的值        
        List<AddLiveAppRecordConfigRequest.TranscodeRecordFormat> transcodeFormatList=new ArrayList<AddLiveAppRecordConfigRequest.TranscodeRecordFormat>();
        AddLiveAppRecordConfigRequest.TranscodeRecordFormat m3u8TranscodeFormat=new AddLiveAppRecordConfigRequest.TranscodeRecordFormat();
        m3u8TranscodeFormat.setFormat("m3u8");
        //轉(zhuǎn)碼流錄制OSS存儲(chǔ)的錄制文件名
        m3u8TranscodeFormat.setOssObjectPrefix("<transcodeRecord/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        //轉(zhuǎn)碼流錄制切片名稱
        m3u8TranscodeFormat.setSliceOssObjectPrefix("<transcodeRecord/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}>");
        transcodeFormatList.add(m3u8TranscodeFormat);
        addLiveAppRecordConfigRequest.setTranscodeRecordFormats(transcodeFormatList);
        List<String> transcodeTemplateList=new ArrayList<String>();
        //轉(zhuǎn)碼模板ID
        transcodeTemplateList.add("<lld>");
        addLiveAppRecordConfigRequest.setTranscodeTemplatess(transcodeTemplateList);
說(shuō)明
  • 若僅需錄制轉(zhuǎn)碼流,則可以不設(shè)置原始流(setRecordFormats)。

  • 設(shè)置錄制轉(zhuǎn)碼流(setTranscodeRecordFormats)時(shí),需同時(shí)指定轉(zhuǎn)碼模板ID(setTranscodeTemplatess),轉(zhuǎn)碼模板需要進(jìn)行配置,具體操作請(qǐng)參見(jiàn)直播轉(zhuǎn)碼

  • 錄制轉(zhuǎn)碼流需要在配置轉(zhuǎn)碼模板時(shí),將轉(zhuǎn)碼配置為推流觸發(fā)

  • 轉(zhuǎn)碼流錄制文件名StreamName會(huì)轉(zhuǎn)換成StreamName_轉(zhuǎn)碼模板ID的形式。

斷流拼接

同一路流斷流在斷流拼接時(shí)長(zhǎng)(默認(rèn)180秒)以內(nèi)再次推流,錄制內(nèi)容會(huì)自動(dòng)合并成一個(gè)錄制文件。

說(shuō)明

因需等待斷流拼接,所以才會(huì)在斷流拼接時(shí)長(zhǎng)之后生成錄制文件。

您可以根據(jù)您實(shí)際的業(yè)務(wù)調(diào)整斷流拼接時(shí)長(zhǎng),設(shè)置斷流拼接時(shí)長(zhǎng):

//單位秒,取值范圍(15~21600)
addLiveAppRecordConfigRequest.setDelayTime(<180>);

不建議調(diào)整為過(guò)短或過(guò)長(zhǎng)的時(shí)間。若生成錄制文件的時(shí)間設(shè)置過(guò)短,由于網(wǎng)絡(luò)波動(dòng),斷流重推等原因,就會(huì)生成大量的錄制文件。若設(shè)置過(guò)長(zhǎng)則會(huì)導(dǎo)致錄制文件在直播結(jié)束(斷流)之后很長(zhǎng)時(shí)間才能看到。

在一些特定的業(yè)務(wù)場(chǎng)景中,您可能完全不希望等待斷流拼接,而希望在直播結(jié)束后立即生成錄制文件,這種情況也是可以實(shí)現(xiàn)的。您可以給推流設(shè)置回調(diào)事件(設(shè)置推流回調(diào)事件請(qǐng)參見(jiàn)直播推流狀態(tài)回調(diào)),在接收到推流結(jié)束通知時(shí)通過(guò)調(diào)用 RealTimeRecordCommand - 實(shí)時(shí)錄制指令API做到取消斷流拼接。

取消斷流拼接示例代碼>>>

        //需要將<>內(nèi)容替換成實(shí)際使用的值
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("cancel_delay");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
說(shuō)明
  • 如果錄制的是轉(zhuǎn)碼流,此處需要將<StreamName>設(shè)置成StreamName_轉(zhuǎn)碼模板ID的形式。

  • setCommand("cancel_delay") 即表示重置斷流延遲時(shí)間,完全停止錄制,立刻生成錄制文件。

自定義錄制策略

功能配置中,我們進(jìn)行了直播錄制功能的配置,在直播推流時(shí)即會(huì)開(kāi)始對(duì)直播內(nèi)容進(jìn)行錄制,我們稱其為自動(dòng)錄制

但有些時(shí)候,我們希望能夠通過(guò)業(yè)務(wù)決策自主決定是否需要對(duì)某一次直播內(nèi)容進(jìn)行錄制。直播錄制功能提供了解決這類問(wèn)題的方法,自主決定錄制分為兩種情況:

一,由直播服務(wù)詢問(wèn)您的業(yè)務(wù)系統(tǒng)是否需要對(duì)該直播內(nèi)容進(jìn)行錄制,得到響應(yīng)需要錄制后再進(jìn)行錄制,我們稱其為按需錄制

二,由您的業(yè)務(wù)系統(tǒng)給直播服務(wù)發(fā)出通知對(duì)直播內(nèi)容進(jìn)行錄制,我們稱其為手動(dòng)錄制

按需錄制

實(shí)現(xiàn)按需錄制,需要您業(yè)務(wù)系統(tǒng)提供直播服務(wù)調(diào)用的URL地址,具體說(shuō)明可參見(jiàn)按需錄制回調(diào)

設(shè)置錄制功能按需錄制示例代碼如下:

        //OnDemand字段填1,表示通過(guò)HTTP回調(diào)開(kāi)啟按需錄制。
        addLiveAppRecordConfigRequest.setOnDemand(1);

同時(shí)調(diào)用 AddLiveRecordNotifyConfig - 添加域名級(jí)別錄制回調(diào)配置API進(jìn)行錄制回調(diào)配置。

添加錄制回調(diào)配置示例代碼>>>

        //需要將<>內(nèi)容替換成實(shí)際使用的值
        AddLiveRecordNotifyConfigRequest addLiveRecordNotifyConfigRequest=new AddLiveRecordNotifyConfigRequest();
        //設(shè)置按需錄制回調(diào)請(qǐng)求URL地址
        addLiveRecordNotifyConfigRequest.setOnDemandUrl("<OnDemandUrl>");
        addLiveRecordNotifyConfigRequest.setNotifyUrl("<NotifyUrl>");
        addLiveRecordNotifyConfigRequest.setDomainName("<DomainName>");
        AddLiveRecordNotifyConfigResponse addLiveRecordNotifyConfigResponse = null;
        try {
            addLiveRecordNotifyConfigResponse = client.getAcsResponse(addLiveRecordNotifyConfigRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(addLiveRecordNotifyConfigResponse));
重要
  • <OnDemandUrl>為按需錄制回調(diào)請(qǐng)求URL地址,<NotifyUrl>為錄制回調(diào)(包括錄制事件和狀態(tài)回調(diào)) URL地址。

  • 因接口<NotifyUrl>參數(shù)不能為空,所以必須要設(shè)置<NotifyUrl>,如果您只需要接收按需錄制請(qǐng)求,不需要錄制事件和錄制狀態(tài)回調(diào),可以配置<NotifyUrl>為一個(gè)沒(méi)有方法實(shí)現(xiàn)的URL地址。

手動(dòng)錄制

實(shí)現(xiàn)手動(dòng)錄制,需要將自動(dòng)錄制功能關(guān)閉。示例代碼如下:

        //OnDemand字段填7,表示不進(jìn)行自動(dòng)錄制。
        addLiveAppRecordConfigRequest.setOnDemand(7);

然后在直播的過(guò)程中,您可以根據(jù)業(yè)務(wù)情況通過(guò)調(diào)用 RealTimeRecordCommand - 實(shí)時(shí)錄制指令API開(kāi)啟錄制。

開(kāi)啟錄制示例代碼>>>

        //需要將<>內(nèi)容替換成實(shí)際使用的值 
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("start");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
說(shuō)明
  • 如果錄制的是轉(zhuǎn)碼流,此處需要將<StreamName>設(shè)置成StreamName_轉(zhuǎn)碼模板ID的形式。

  • setCommand("start")表示啟動(dòng)錄制。

停止錄制

無(wú)論是自動(dòng)錄制按需錄制手動(dòng)錄制,都可以調(diào)用RealTimeRecordCommand - 實(shí)時(shí)錄制指令API主動(dòng)停止錄制。

停止錄制示例代碼>>>

        //需要將<>內(nèi)容替換成實(shí)際使用的值 
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("stop");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
說(shuō)明
  • setCommand("stop")表示停止錄制。

  • 主動(dòng)停止錄制,同樣需等待斷流拼接時(shí)長(zhǎng)之后才會(huì)生成錄制文件。

  • 如果錄制的是轉(zhuǎn)碼流,此處需要將<StreamName>設(shè)置成StreamName_轉(zhuǎn)碼模板ID的形式。

相關(guān)API

錄制周期配置

直播時(shí)長(zhǎng)超過(guò)設(shè)定的錄制周期后,將生成新文件(例如直播20分鐘,錄制周期設(shè)置為15分鐘,將會(huì)生成兩個(gè)錄制文件),錄制周期支持15-360分鐘

設(shè)置錄制周期示例代碼>>>

        List<AddLiveAppRecordConfigRequest.RecordFormat> formatList=new ArrayList<AddLiveAppRecordConfigRequest.RecordFormat>();
        AddLiveAppRecordConfigRequest.RecordFormat m3u8Format=new AddLiveAppRecordConfigRequest.RecordFormat();
        m3u8Format.setFormat("m3u8");
        m3u8Format.setOssObjectPrefix("<record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        m3u8Format.setSliceOssObjectPrefix("<record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}>");
       //設(shè)置錄制周期,單位秒
        m3u8Format.setCycleDuration(<900>);
        AddLiveAppRecordConfigRequest.RecordFormat mp4Format=new AddLiveAppRecordConfigRequest.RecordFormat();
        mp4Format.setFormat("mp4");
        mp4Format.setOssObjectPrefix("<record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        //設(shè)置錄制周期,單位秒
        mp4Format.setCycleDuration(<1500>);
        formatList.add(mp4Format);
        formatList.add(m3u8Format);
        addLiveAppRecordConfigRequest.setRecordFormats(formatList);
說(shuō)明

注意在以上示例中,同時(shí)配置了兩種存儲(chǔ)格式,分別設(shè)置了錄制周期。按照此設(shè)置進(jìn)行推流20分鐘,將會(huì)生成3個(gè)錄制文件(一個(gè)mp4,兩個(gè)m3u8)。

在直播未超過(guò)錄制周期的情況下,錄制文件一般在直播結(jié)束后生成。若是您的業(yè)務(wù)需要在直播未結(jié)束的情況下查看錄制文件,可以通過(guò)調(diào)用 RealTimeRecordCommand - 實(shí)時(shí)錄制指令API刷新錄制內(nèi)容,強(qiáng)制重新開(kāi)始錄制,如果restart之前在錄制,會(huì)立即生成錄制文件。

重新開(kāi)始錄制示例代碼>>>

        //需要將<>內(nèi)容替換成實(shí)際使用的值 
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("restart");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
說(shuō)明
  • setCommand("restart")表示重新開(kāi)始錄制。

  • 如果錄制的是轉(zhuǎn)碼流,此處需要將<StreamName>設(shè)置成StreamName_轉(zhuǎn)碼模板ID的形式。

  • 若您的直播流錄制配置了多種存儲(chǔ)格式,此操作會(huì)將多種存儲(chǔ)格式一起刷新。

錄制內(nèi)容合并與提取

視頻直播支持通過(guò)創(chuàng)建索引文件將錄制內(nèi)容按照時(shí)間段提取出文件,也可以將起止時(shí)間段內(nèi)的多個(gè)錄制文件內(nèi)容合并為一個(gè)。

說(shuō)明
  • 無(wú)論錄制內(nèi)容最終保存成哪種格式,直播錄制都會(huì)先將直播流切片成一個(gè)個(gè)的TS切片,然后再合成對(duì)應(yīng)封裝格式的錄制文件。通過(guò)此特性,可以自主創(chuàng)建M3U8索引文件,將TS切片文件進(jìn)行組合,從而實(shí)現(xiàn)錄制內(nèi)容的合并與提取。

  • 錄制內(nèi)容需要包含M3U8存儲(chǔ)格式才能夠進(jìn)行合并或提取。

調(diào)用CreateLiveStreamRecordIndexFiles - 創(chuàng)建錄制索引文件API創(chuàng)建錄制內(nèi)容索引文件。

創(chuàng)建錄制內(nèi)容索引文件示例代碼>>>

        CreateLiveStreamRecordIndexFilesRequest createLiveStreamRecordIndexFilesRequest=new CreateLiveStreamRecordIndexFilesRequest();
        createLiveStreamRecordIndexFilesRequest.setAppName("<AppName>");
        createLiveStreamRecordIndexFilesRequest.setStreamName("<StreamName>");
        createLiveStreamRecordIndexFilesRequest.setDomainName("<DomainName>");
        createLiveStreamRecordIndexFilesRequest.setOssEndpoint("<OssEndpoint>");
        createLiveStreamRecordIndexFilesRequest.setOssBucket("<OssBucket>");
        createLiveStreamRecordIndexFilesRequest.setStartTime("<StartTime>");
        createLiveStreamRecordIndexFilesRequest.setEndTime("<EndTime>");
        createLiveStreamRecordIndexFilesRequest.setOssObject("<IndexFiles/OssObject.m3u8>");
        CreateLiveStreamRecordIndexFilesResponse createLiveStreamRecordIndexFilesResponse = null;
        try {
            createLiveStreamRecordIndexFilesResponse = client.getAcsResponse(createLiveStreamRecordIndexFilesRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(createLiveStreamRecordIndexFilesResponse));
說(shuō)明
  • 以上示例表示,將直播流<AppName> <StreamName>的錄制內(nèi)容,按照起止時(shí)間<StartTime>至<EndTime>創(chuàng)建出一個(gè)新的索引文件。存儲(chǔ)至<OssEndpoint>的<OssBucket>中,索引文件名為<IndexFiles/OssObject.m3u8>。

  • <StartTime>至<EndTime>格式為:yyyy-MM-ddTHH:mm:ssZ(UTC時(shí)間)。

重要
  • 創(chuàng)建錄制索引必保證直播流發(fā)生過(guò)推流行為,如果設(shè)置的時(shí)間內(nèi)未發(fā)生過(guò)直播或直播流名稱錯(cuò)誤等會(huì)導(dǎo)致創(chuàng)建錄制索引失敗。

  • 錄制內(nèi)容分為文件信息(包含AppName,StreamName,OSS存儲(chǔ)路徑等)和文件。文件信息(TS分片文件信息和創(chuàng)建的M3U8索引文件信息)保存在視頻直播中,文件(TS分片文件和M3U8索引文件)保存在OSS中。

  • 存儲(chǔ)在OSS中的文件保存時(shí)間由OSS的存儲(chǔ)配置決定。

  • TS分片文件信息在視頻直播系統(tǒng)中僅保存3個(gè)月,創(chuàng)建M3U8索引文件只能選擇最近3個(gè)月的錄制內(nèi)容。

  • M3U8索引文件信息在視頻直播系統(tǒng)中僅保存6個(gè)月,若要查詢僅能查詢6個(gè)月內(nèi)創(chuàng)建的索引文件的信息。

  • 如要合并或提取轉(zhuǎn)碼流,需要將StreamName設(shè)置成StreamName_轉(zhuǎn)碼模板ID的形式。

  • <OssBucket>需要與直播中心同地域,否則無(wú)法通過(guò)域名查詢到創(chuàng)建的M3U8索引文件信息。

相關(guān)API

錄制文件管理

查看錄制文件

視頻直播支持三種方式進(jìn)行錄制文件查看。

控制臺(tái)查看錄制文件

  1. 登錄視頻直播控制臺(tái)
  2. 在左側(cè)導(dǎo)航欄選擇功能管理>直播錄制,進(jìn)入直播錄制頁(yè)面,選擇錄制管理文件頁(yè)簽。

  3. 選擇待配置的播流域名。

  4. 單擊存儲(chǔ)至OSS頁(yè)簽。

    image

API查看錄制文件

        //需要將<>內(nèi)容替換成實(shí)際使用的值 
        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查看錄制文件

在配置錄制功能時(shí),您已指定了錄制文件在OSS中的存儲(chǔ)地址。如果需要在OSS中查看錄制文件,可參見(jiàn)OSS列舉文件

刪除錄制文件

視頻直播儲(chǔ)存的是錄制文件信息,如AppName,StreamName,OSS文件儲(chǔ)存路徑等,文件是儲(chǔ)存在OSS中。如果在刪除錄制時(shí)需要同步刪除儲(chǔ)存在OSS中的文件,則需要?jiǎng)?chuàng)建服務(wù)角色AliyunMTSVideoLifecycleRole,并精確授權(quán)AliyunMTSVideoLifecycleRolePolicy系統(tǒng)策略。

詳細(xì)授權(quán)過(guò)程

在直播控制臺(tái)刪除錄制文件時(shí)需要先進(jìn)行授權(quán),您需要按照如下步驟在RAM控制臺(tái)創(chuàng)建并授權(quán)RAM角色后,再登錄直播控制臺(tái)刪除錄制文件。

  1. 使用阿里云賬號(hào)登錄RAM控制臺(tái)

  2. 在左側(cè)導(dǎo)航欄,選擇身份管理 > 角色

  3. 角色頁(yè)面,單擊創(chuàng)建角色

  4. 選擇類型頁(yè)簽,可信實(shí)體類型選擇阿里云服務(wù),單擊下一步image

  5. 配置角色頁(yè)簽,請(qǐng)按照以下參數(shù)配置:

    • 角色類型:普通服務(wù)角色

    • 角色名稱:AliyunMTSVideoLifecycleRole

    • 備注:該參數(shù)為可選,您可以按照需求自定義填寫(xiě)。

    • 選擇受信服務(wù):多媒體轉(zhuǎn)碼服務(wù)

    配置完成后,單擊完成image

  6. 創(chuàng)建完成頁(yè)簽,提示角色創(chuàng)建成功后,單擊精確授權(quán)

  7. 添加權(quán)限頁(yè)簽,請(qǐng)按照以下參數(shù)配置:

    • 選擇權(quán)限類型:系統(tǒng)策略

    • 輸入策略名稱:AliyunMTSVideoLifecycleRolePolicy

    配置完成后,單擊確定image

目前有三種方式進(jìn)行錄制文件刪除。

控制臺(tái)刪除錄制文件

  1. 登錄視頻直播控制臺(tái)
  2. 在左側(cè)導(dǎo)航欄選擇錄制文件管理

  3. 選擇待刪除錄制文件的域名。

  4. 單擊存儲(chǔ)至OSS頁(yè)簽,選擇刪除

    刪除錄制文件

  5. 單擊確定

    同步刪除選項(xiàng)默認(rèn)不選中。若選中此選項(xiàng),則在刪除視頻直播控制臺(tái)上錄制文件記錄時(shí)會(huì)同步刪除OSS中的錄制文件。確定刪除

API刪除錄制文件

        DeleteLiveStreamRecordIndexFilesRequest deleteLiveStreamRecordIndexFilesRequest=new DeleteLiveStreamRecordIndexFilesRequest();
        deleteLiveStreamRecordIndexFilesRequest.setAppName("<AppName>");
        deleteLiveStreamRecordIndexFilesRequest.setStreamName("<StreamName>");
        deleteLiveStreamRecordIndexFilesRequest.setDomainName("<DomainName>");

        List<String> recordList=new ArrayList<>();
        //添加索引文件ID
        recordList.add("<recordId>");
        deleteLiveStreamRecordIndexFilesRequest.setRecordIds(recordList);
        deleteLiveStreamRecordIndexFilesRequest.setRemoveFile("<true>");
        DeleteLiveStreamRecordIndexFilesResponse deleteLiveStreamRecordIndexFilesResponse = null;
        try {
            deleteLiveStreamRecordIndexFilesResponse = client.getAcsResponse(deleteLiveStreamRecordIndexFilesRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }

        System.out.println(new Gson().toJson(deleteLiveStreamRecordIndexFilesResponse));
重要

OSS刪除錄制文件

一般情況下,不建議您直接刪除存儲(chǔ)在OSS中的錄制文件。如果需要?jiǎng)h除存儲(chǔ)在OSS中的錄制文件,可以通過(guò)視頻直播刪除錄制文件時(shí)同步刪除存儲(chǔ)在OSS中的文件。如果您因?yàn)闃I(yè)務(wù)需求需要直接刪除存儲(chǔ)在OSS中的錄制文件,可參考文檔OSS刪除文件

其他刪除文件方法

刪除超過(guò)6個(gè)月的文件:由于只能查詢6個(gè)月以內(nèi)的錄制文件信息,若要?jiǎng)h除超過(guò)6個(gè)月的文件請(qǐng)通過(guò)OSS進(jìn)行,詳情請(qǐng)參見(jiàn)OSS刪除文件

過(guò)期刪除錄制文件:由于媒體資源均存放在OSS的Bucket中,需要授權(quán)訪問(wèn)才能正常刪除錄制文件,您可以點(diǎn)擊授權(quán)進(jìn)行一鍵授權(quán)。授權(quán)后,再提交工單申請(qǐng),我們會(huì)在后臺(tái)為您配置您需要的過(guò)期時(shí)間。關(guān)于如何提交工單,請(qǐng)參見(jiàn)聯(lián)系我們。配置過(guò)期時(shí)間后,錄制文件過(guò)期刪除功能授權(quán)操作即為完成。

說(shuō)明

云資源訪問(wèn)授權(quán)是對(duì)系統(tǒng)創(chuàng)建,供視頻直播使用授予訪問(wèn)云資源權(quán)限的角色。授權(quán)后如果誤刪角色,可進(jìn)行重新授權(quán)。

相關(guān)文檔

使用Java SDK,可參見(jiàn)Java SDK使用說(shuō)明

更多錄制回調(diào)功能使用,可參見(jiàn)直播錄制回調(diào)以及按需錄制回調(diào)