如何?一個c/s模式的flvApsaraVideo for VOD系統

來源:互聯網
上載者:User

標籤:

一、寫在前面

  ApsaraVideo for VOD,是一個曾經很熱,現如今依然很熱的一項視頻服務技術。本人最近致力於研究將各種視頻格式應用於點播系統中,現已研究成功FLVF4VMP4TS格式的ApsaraVideo for VOD解決方案,完全支援以上格式中存放H.264編碼視頻的情況,並將繼續研究其他格式。

  這裡有一點需要說明的是,F4V本來指的是Adobe基於ISO/IEC 14496-12標準推出來的視頻格式,與MP4格式相同,但因為國內許多的視頻網站,均把存放H.264編碼視頻的FLV檔案標註為.f4v格式,而這種檔案的點播實現方式和普通的FLV是有所不同的,所以,為了避免更加混淆,我沿用了它們的命名方式,因此,“FLV”將僅指包含H.264/AAC編碼的一般FLV視頻。

  本文簡單介紹如何?一個簡單的基於flv的ApsaraVideo for VOD系統。

二、FLV格式

  FLV(Flash Video)是Adobe公司推出的視頻格式,是一種專門用來在網路上傳輸的視頻儲存容器格式。其格式相對簡單,不需要很大的媒體頭部資訊,因此載入速度極快。國內各大視頻網站,均有採用FLV格式作為其點播、甚至直播的視頻格式。FLV容器格式的主要特點是tag,整個FLV由Video Tag, Audio Tag以及其他Tag組成,沒有映射表。

  基本上,可以把FLV格式簡要畫為如下形式:

  

  其中,FLV Header指的是FLV的頭部,只有9個位元組,和常規的MP4檔案頭部相比,這個小太多了。FLV MetaData存放的是一些整個視頻檔案的媒體資訊,包括作者、視頻寬高、時間長度、主要畫面格列表等等,這些資訊對於解析視頻檔案來說,當然很重要,不過可惜的是,因為FLV的MetaData是可有可無的,所以有不少FLV沒有MetaData,而且即便有,其MetaData中的資訊也是不正確的,這導致MetaData非常不值得信賴。所以,在解析FLV的時候,應該直接忽略FLV MetaData部分,通過遍曆FLV的所有Tag,來擷取相應的媒體資訊。

三、方案

  點播系統的實現,有幾個關鍵點,最重要的應該是“播放網路流”和“拖動”這兩點。其中,關於“拖動”,由於整個系統是基於網路的,用戶端在拖動之後,必須重新向伺服器端發送請求,伺服器根據用戶端的拖動請求,尋找最接近的拖動點,返回可以播放的資料流,從而完成點播拖動。

  對於FLV來說,因為其格式簡單,頭部非常小,而MetaData可以不要,所以只需要尋找到主要畫面格,然後拼上FLV Header,就可以組成一個可播放的視頻檔案。如所示:

  根據FLV格式的特點,以及拖動後產生新的可播放檔案的方法,可以將flv點播系統設計成如下方案:

  1. 伺服器端

  首先,解析flv檔案,產生flv視頻主要畫面格列表,表明時間和便宜量的對應關係。然後,當接收到用戶端發來的資料請求時,根據用戶端拖動的時間點的請求,找出時間距離最近的主要畫面格,根據位移量,讀取flv的檔案資料,然後拼接flv的9位元組檔案頭部(還需要再加上4個位元組全零的pre tag size,共13位元組),返回。

  2. 用戶端

  用戶端需要特別注意的,除了正確的解析視頻流並播放,還需要小心時間軸的行進,因為使用者拖動的時間位置並不一定是主要畫面格,所以,需要根據伺服器返回的主要畫面格的真即時間,重新置放播放進度。

四、實現

  伺服器可以實現為一個http server,只需要提供http下載,在響應下載之前,需要完成之前所描述的邏輯。可以完全自己實現,可以直接使用現有的成熟web server,如果對效能要求很高,強烈推薦nginx,藉助於nginx強大的處理效能,通過實現自己的nginx module,可以完成你所有的需求。

  用戶端播放器,對於不太熟悉播放器開發技術的,可基於libvlc,藉助於vlc良好的網路播放能力,基本可以滿足需要。

下面是前些日子做的一個示範程式,

------------------------------------------------------------

轉載請註明作者和出處,謝謝~

如何?一個c/s模式的flvApsaraVideo for VOD系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.