北京2016年10月24日電 /美通社/ -- 隨著互聯(lián)網(wǎng)帶寬的不斷提升,視頻內(nèi)容的分發(fā)與播放,在新聞娛樂、在線教育、社交網(wǎng)絡(luò)和自媒體場景下越來越普遍。在滿足成本預(yù)算的情況下、保證視頻的快速分發(fā)與播放,也成了各家視頻內(nèi)容提供商不斷優(yōu)化的方向。為了幫助用戶節(jié)省帶寬、快速分發(fā)視頻內(nèi)容、保證在網(wǎng)絡(luò)不好的情況下流暢播放,七牛數(shù)據(jù)處理產(chǎn)品推出了實(shí)時(shí)流式轉(zhuǎn)碼和多碼率自適應(yīng)轉(zhuǎn)碼這兩個(gè)功能。
1. 實(shí)時(shí)流式轉(zhuǎn)碼
目前國內(nèi)外主流的基礎(chǔ)音視頻云服務(wù),都是使用的異步轉(zhuǎn)碼模式,而異步轉(zhuǎn)碼有很多的問題。
異步轉(zhuǎn)碼的問題
異步轉(zhuǎn)碼通常要經(jīng)過“上傳-轉(zhuǎn)碼-分發(fā)-播放”的流程。使用異步轉(zhuǎn)碼,往往會給開發(fā)者和終端用戶帶來一定的局限性。
首先,視頻轉(zhuǎn)碼需要一定時(shí)間,片源清晰度越高轉(zhuǎn)碼耗費(fèi)的時(shí)間越是長久。異步轉(zhuǎn)碼方案決定了視頻內(nèi)容生產(chǎn)者必須要等待視頻完全轉(zhuǎn)碼完畢后才能進(jìn)行內(nèi)容分發(fā)播放,這會為視頻內(nèi)容的生產(chǎn)和消費(fèi)之間帶來一定延遲效應(yīng)。
其次,無論是開發(fā)者使用視頻服務(wù) SDK 輪詢,或者自建回調(diào)服務(wù)接受回調(diào)結(jié)果,還是直接通過人工方式定期查詢轉(zhuǎn)碼結(jié)果,都會給開發(fā)者帶來一定的心智負(fù)擔(dān)。同時(shí),基礎(chǔ)視頻服務(wù)與上層業(yè)務(wù)產(chǎn)生了一定的耦合,任何使用變動都會影響上層業(yè)務(wù)。
再者,開發(fā)者需要預(yù)先設(shè)定轉(zhuǎn)碼參數(shù),分辨率碼率等相對固定。任何對轉(zhuǎn)碼參數(shù)的修改,都需要重新請求轉(zhuǎn)碼才能完成,無法由終端用戶設(shè)置參數(shù)或者自適應(yīng)用戶請求場景。
此外,從業(yè)務(wù)上看,視頻生產(chǎn)者無法預(yù)測視頻播放情況,會有視頻轉(zhuǎn)碼完卻沒有終端用戶播發(fā)的情況,為此開發(fā)者需要付出多余的視頻服務(wù)和存儲花費(fèi)。
七牛實(shí)時(shí)流式轉(zhuǎn)碼
針對上述異步轉(zhuǎn)碼的局限性,七牛推出了實(shí)時(shí)轉(zhuǎn)碼服務(wù)。與異步轉(zhuǎn)碼相比,實(shí)時(shí)轉(zhuǎn)碼僅需“上傳-分發(fā)-播放”的流程,將轉(zhuǎn)碼和播放合二為一,即邊轉(zhuǎn)邊播,按需轉(zhuǎn)碼。實(shí)時(shí)轉(zhuǎn)碼使用流媒體協(xié)議(目前支持 HLS 協(xié)議)進(jìn)行網(wǎng)絡(luò)分發(fā),使用七牛多媒體處理服務(wù)進(jìn)行分布式轉(zhuǎn)碼,使用七牛對象存儲服務(wù)作為基礎(chǔ)存儲,結(jié)合七牛CDN服務(wù)進(jìn)行網(wǎng)絡(luò)加速,構(gòu)建了完整的轉(zhuǎn)碼播放方案。
云端收到用戶播放請求,讀取源視頻,根據(jù)播放參數(shù)將源視頻快速分割成子視頻分塊,向多媒體處理集群分發(fā)任務(wù),并生成相應(yīng)的播放索引(如 m3u8)返回給用戶。并發(fā)執(zhí)行的轉(zhuǎn)碼任務(wù)結(jié)果將緩存在云端,或者按用戶需求進(jìn)行持久化存儲。通常,用戶按照索引依次請求視頻分塊,按序播放;而當(dāng)遇到快捷或者拖拽時(shí)間軸時(shí),云端會相應(yīng)進(jìn)行實(shí)時(shí)加速轉(zhuǎn)碼和任務(wù)二次調(diào)度,降低用戶播放卡頓。
七牛實(shí)時(shí)流式轉(zhuǎn)碼服務(wù)有如下優(yōu)點(diǎn):
2. 多碼率自適應(yīng)轉(zhuǎn)碼
單個(gè)碼率視頻分發(fā)的問題
在視頻分發(fā)之前,由于各個(gè)終端(iOS、Android、PC 端)的網(wǎng)絡(luò)帶寬、屏幕分辨率的不同,內(nèi)容提供者會為不同的客戶端生成固定碼率的視頻文件,這一定程度上保證了視頻的流暢性,但是這會帶來一定的問題。
由于端上播放的是某種碼率的視頻,在網(wǎng)絡(luò)帶寬、屏幕分辨率滿足的情況下,用戶無法選擇更高清晰度的碼率,沒法為用戶提供更好的播放體驗(yàn)。反之,如果網(wǎng)絡(luò)質(zhì)量不好,用戶也無法切換到更低碼率的視頻,從而導(dǎo)致播放卡頓。
七牛多碼率自適應(yīng)轉(zhuǎn)碼
單碼率視頻無法應(yīng)對客戶端網(wǎng)絡(luò)帶寬環(huán)境的變化,提供給客戶優(yōu)質(zhì)的播放體驗(yàn),但是HLS多碼率自適應(yīng)特性正好解決了這一問題。
HLS (全稱 HTTP Live Streaming),是由蘋果公司提出的基于 HTTP 的流媒體網(wǎng)絡(luò)傳輸協(xié)議。利用該協(xié)議,客戶端可以接收持續(xù)的多媒體流來自于一個(gè)普通的 web 服務(wù)器。并且支持客戶端在不同的網(wǎng)絡(luò)帶寬環(huán)境下,播放不同碼率、分辨率的視頻。
HLS 的實(shí)現(xiàn)原理是把整個(gè)多媒體文件切成一個(gè)個(gè)小的基于 HTTP 的資源 (MPEG-2 Transport Stream 格式的文件),生成一個(gè)包含元數(shù)據(jù)的擴(kuò)展 M3U (M3U8) Playlist 文件,每次只下載列表中的一些資源,客戶端根據(jù)帶寬環(huán)境可以選擇不同的的資源。M3U8 是一種播放多媒體列表的文件格式,可以指定一個(gè)或多個(gè)多媒體資源的位置,并且 M3U8 Playlist 中可以包含多個(gè)子 M3U8 文件。
七牛官方提供的 HLS 多碼率自適應(yīng)功能,幫助客戶從單一原視頻,一步生成多碼率自適應(yīng)的多媒體文件,只需要提供原始資源和操作命令。實(shí)現(xiàn)原理如下圖所示:
更多信息,請瀏覽:https://www.qiniu.com