過(guò)去,構(gòu)建視頻應(yīng)用程序十分困難。在錄制、編碼和播放視頻背后有許多復(fù)雜的技術(shù)。幸運(yùn)的是,Cloudflare Stream分擔(dān)走了所有困難的部分,現(xiàn)在您可以輕松構(gòu)建自定義視頻和流媒體應(yīng)用程序。讓我們看一下,我們可以如何結(jié)合Cloudflare Stream、Access、Pages和Workers,使用極少的代碼創(chuàng)建一個(gè)高性能的視頻應(yīng)用程序。
我們將構(gòu)建一個(gè)受Cloudflare TV啟發(fā)的視頻應(yīng)用程序。我們將提供用戶(hù)身份驗(yàn)證,管理員可以上傳錄制的視頻或直播新內(nèi)容。能夠使用Cloudflare服務(wù)打造自己的YouTube或Twich,這多么令人興奮!
提取視頻列表
我們想要在應(yīng)用程序主頁(yè)顯示所有視頻的列表,使用Cloudflare Stream上傳和存儲(chǔ)的所有視頻,之后還會(huì)有更多功能!該代碼可以更改,以?xún)H顯示“熱門(mén)”視頻或?yàn)槊總€(gè)用戶(hù)選擇的視頻精選。目前,我們將使用搜索API并在一個(gè)空字符串中傳遞以返回全部。
我們將仔細(xì)檢查每個(gè)視頻,過(guò)濾掉任何私人視頻,并抽取出我們需要的元數(shù)據(jù),例如縮略圖URL、ID和創(chuàng)建日期。
播放視頻
要允許用戶(hù)從我們的應(yīng)用程序播放視頻,則需要公開(kāi)視頻,否則您將需要簽署每個(gè)請(qǐng)求。將視頻標(biāo)記為“公開(kāi)”可使整個(gè)過(guò)程更為簡(jiǎn)單。然而,可能出于許多原因,您想要控制對(duì)視頻的訪(fǎng)問(wèn)。如果您希望用戶(hù)登錄后才可播放視頻,或者想要能夠以任何方式限制訪(fǎng)問(wèn),可將視頻標(biāo)記為“私人”并使用簽名的URL來(lái)控制訪(fǎng)問(wèn)。您可在此處找到有關(guān)保護(hù)視頻的更多信息。
如果您在本地測(cè)試您的應(yīng)用程序,或希望每天的請(qǐng)求數(shù)少于10,000個(gè),您可以調(diào)用/token端點(diǎn)以生成一個(gè)簽名令牌。如果您希望每天超過(guò)10,000個(gè)請(qǐng)求,請(qǐng)使用JSON Web Tokens簽署您自己的令牌。
允許用戶(hù)上傳視頻
下一步是構(gòu)建管理員頁(yè)面,用戶(hù)可在其中上傳他們的視頻。您可在此處找到有關(guān)允許用戶(hù)上傳的說(shuō)明文檔。
Cloudflare Stream API使該過(guò)程得到了簡(jiǎn)化。您可使用您的API令牌和帳戶(hù)ID生成一個(gè)唯一的一次性上傳URL。僅需確保您的令牌擁有Stream:Edit權(quán)限即可。我們從應(yīng)用程序鉤入所有POST請(qǐng)求,并返回生成的上傳URL。
管理員頁(yè)面包含一個(gè)表單,允許用戶(hù)從他們的計(jì)算機(jī)拖放或上傳視頻。當(dāng)一個(gè)已登錄用戶(hù)點(diǎn)擊上傳表單上的“提交”時(shí),應(yīng)用程序會(huì)生成一個(gè)唯一的URL,然后向其發(fā)布FormData。該代碼可有效用于構(gòu)建視頻分享網(wǎng)站或與任何允許用戶(hù)生成內(nèi)容的應(yīng)用程序搭配使用。
使用Stream Live添加實(shí)時(shí)視頻
您還可以使用Stream Live,結(jié)合我們已經(jīng)討論過(guò)的技術(shù),向您的應(yīng)用程序添加直播部分。您可以允許已登錄用戶(hù)開(kāi)始直播,并允許其他已登錄用戶(hù)(甚至是未登錄用戶(hù))實(shí)時(shí)觀看!直播內(nèi)容將自動(dòng)保存至您的帳戶(hù),因此,當(dāng)直播結(jié)束后就可以立即在應(yīng)用程序的主要區(qū)域查看直播內(nèi)容。
使用中間件保護(hù)我們的應(yīng)用程序
我們將所有經(jīng)過(guò)身份驗(yàn)證的頁(yè)面都放在此中間件函數(shù)后方。它會(huì)檢查請(qǐng)求標(biāo)頭以確保用戶(hù)正在發(fā)送有效的經(jīng)過(guò)身份驗(yàn)證的用戶(hù)電子郵件。
使用Pages將所有功能組合起來(lái)
我們使用Cloudflare Access來(lái)控制我們的登錄流程,使用Stream API管理上傳、顯示和觀看視頻,使用Workers來(lái)管理fetch請(qǐng)求和處理API調(diào)用。現(xiàn)在,讓我們使用Cloudflare Pages將所有功能結(jié)合起來(lái)!
Pages提供一種簡(jiǎn)單的方法來(lái)部署和托管靜態(tài)網(wǎng)站。不過(guò)現(xiàn)在,Pages可與Workers平臺(tái)無(wú)縫集成。使用該新集成,我們可以使用單個(gè)可讀存儲(chǔ)庫(kù)來(lái)部署這一整個(gè)應(yīng)用程序。
控制訪(fǎng)問(wèn)
一些應(yīng)用程序更適合公開(kāi);另一些應(yīng)用程序包含敏感數(shù)據(jù),應(yīng)當(dāng)限制向特定用戶(hù)開(kāi)放。此應(yīng)用程序的主頁(yè)是公開(kāi)的,我們已使用Cloudflare Access將管理員頁(yè)面限制為僅向員工開(kāi)放。如果您要構(gòu)建內(nèi)部學(xué)習(xí)服務(wù),甚至想要推出新網(wǎng)站的測(cè)試版,您都可以輕松使用Access保護(hù)您的整個(gè)應(yīng)用程序!
當(dāng)用戶(hù)點(diǎn)擊我們演示網(wǎng)站上的管理員鏈接時(shí),將提示他們輸入電子郵件地址。如果他們輸入有效的Cloudflare電子郵件,則應(yīng)用程序會(huì)向他們發(fā)送訪(fǎng)問(wèn)代碼。否則,他們將無(wú)法訪(fǎng)問(wèn)該頁(yè)面。