基于live555框架和ffmpeg庫的密文H264視頻直播和點播平臺的制作方法
【技術領域】
[0001]本發明涉及一種應用于城市安防監控體系的視頻平臺,尤其是一種密文H264視頻直播和點播平臺。
【背景技術】
[0002]Live555流媒體框架是一個為流媒體提供解決方案的跨平臺的C++開源項目,它實現了對標準流媒體的傳輸,并提供對標準流媒體傳輸協議如RTP/RTCP、RTSP, SIP等的支持,主要應用于對流媒體的音視頻的處理,實現媒體的實時推送;ffmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。
[0003]隨著視頻編解碼技術和網絡技術的快速發展,網絡視頻通信技術成為了人們生活的一部分,然而在開放網絡中,視頻信息很容易遭受人為的攻擊,尤其是在一些重要的應用場景。在城市安防監控體系中,網絡信息采集是公共安防系統的基礎,目前面臨的威脅有
1.劫持前端信息采集設備2.盜取、篡改所采集的信息3.前端設備故障、信息采集質量診斷4.特殊應用場景對攝錄器材的安全性有特別要求。現在市面上已經有部分對視頻加密的產品,主要方法是將視頻視為普通文本,對存儲在本地的視頻文件全部加密。這種方式未考慮數據格式不變性和數據可操作性,難以針對傳輸中的視頻進行加密,因此應用受到極大的限制。在城市安防監控體系中,設計的加密方案是在視頻被壓縮編碼成H.264格式后,保留視頻幀的參數和其它重要信息,僅對幀的數據主體進行加密。這樣可以既保證視頻內容的安全性,又能通過普通視頻傳輸協議進行視頻的傳輸。
[0004]由于加密方式的選擇,完全沒有破壞加密視頻的結構,對其進行流傳輸完全可以實現,然而不同于明文視頻流推送,密文視頻流推送主要面臨兩個問題,第一:要保證密文視頻傳輸過程中的可靠性,關鍵幀一旦丟失,會影響密文播放器對于加密視頻的解密;第二:對密文視頻的封裝,一旦視頻的幀結構和字節改變,后期將無法解密播放。要實現密文視頻的可用性,需要研制相應的密文視頻流推送平臺。
[0005]對于密文視頻推送平臺的建立,必須針對于上述存在的兩個問題進行解決。
【發明內容】
[0006]本發明的目的在于提供一種基于live555和ffmpeg庫的密文H264視頻直播和點播平臺,此方案結合了 live555框架和ffmpeg開源庫提出了一套應用于城市安防監控體系中針對加密視頻流流媒體直播點播的平臺,可以實現密文視頻流的直播和密文視頻文件的點播,可靠性高,可以保證密文視頻傳輸的實時性需求和保證用戶的較佳體驗度。本發明采用的技術方案是:
一種基于live555框架和ffmpeg庫的密文H264視頻直播和點播平臺,包括:基于live555框架的流媒體服務器和外部存儲服務器;所述流媒體服務器和外部存儲服務器通過網絡連接; 所述流媒體服務器包括live555直播代理邏輯服務器和live555點播邏輯服務器;所述外部存儲服務器上設有基于ffmpeg庫的密文H264視頻轉碼模塊和ffmpeg庫;live555點播邏輯服務器和外部存儲服務器之間通過TCP協議通信,為此,在live555點播邏輯服務器上建有TCP客戶端,在外部存儲服務器上建有TCP服務器端。
[0007]進一步地,
所述live555直播代理邏輯服務器采用RTSP/RTP/RTCP協議簇,接收從加密攝像機傳送來的密文H264視頻流,并進行RTP打包,在用戶視頻播放器的直播請求下,將密文H264視頻流通過RTSP/RTP/RTCP協議簇推送至用戶視頻播放器進行播放;
在外部存儲服務器上,所述密文H264視頻轉碼模塊,通過調用ffmpeg庫,對密文H264視頻文件進行關鍵幀和視頻幀的解析,并對密文H264視頻文件的幀進行MKV容器的封裝,形成密文MKV視頻文件并作保存;密文H264視頻文件通過接收加密攝像機的密文H264視頻流并保存獲得或在外部存儲服務器中預置密文H264視頻文件獲得;
所述live555點播邏輯服務器采用RTSP/RTP/RTCP協議簇,在收到用戶視頻播放器的點播請求時,通過TCP協議從外部存儲服務器上獲取與密文H264視頻文件對應的密文MKV視頻文件,并將密文MKV視頻文件進行RTP打包,然后通過RTSP/RTP/RTCP協議簇推送至用戶視頻播放器進行播放。
[0008]更進一步地,
所述密文H264視頻轉碼模塊進行如下操作,以形成密文MKV視頻文件:
S201,首先,輸入密文H264視頻文件和音頻文件;
S202,打開并初始化密文H264視頻文件,調用編解碼庫libavcodec,賦值AVCodeContext參數;調用媒體格式庫Iibavformat ;產生密文H264視頻碼流;
S203,打開并初始化音頻文件,調用編解碼庫libavcodec,賦值AVCodeContext參數;調用媒體格式庫Iibavformat ;產生音頻碼流;
S204,比較視頻碼流中的數據流分包AVpacket和音頻碼流中的數據流分包AVpacket的時間戳,按照時間戳先后順序決定讀取視頻碼流還是音頻碼流中的AVpacket ;
S205,按照時間戳先后依次讀取視頻碼流中的數據流分包AVpacket或音頻碼流中的數據流分包AVpacket ;
S206,將讀取的數據流分包AVpacket封裝入MKV容器;
S207,輸出密文MKV視頻文件。
[0009]本發明的優點在于:
I)本發明采用了實時流協議,很好的保證密文視頻傳輸的實時性需求和保證用戶的較佳體驗度。
[0010]2)保證了密文視頻文件封裝過程中對密文視頻流數據結構的保護。
[0011]3)基于可靠傳輸層協議TCP協議,可以實現多路密文視頻文件的點播,測試穩定性可靠。
【附圖說明】
[0012]圖1為本發明的結構組成示意圖。
[0013]圖2為本發明的密文H264視頻轉碼模塊工作流程圖。
【具體實施方式】
[0014]下面結合具體附圖和實施例對本發明作進一步說明。
[0015]本發明中的密文視頻包括密文視頻流和密文視頻文件。
[0016]如圖1所示,一種基于live555框架和ffmpeg庫的密文H264視頻直播和點播平臺,包括:基于live555框架的流媒體服務器和外部存儲服務器;所述流媒體服務器和外部存儲服務器通過網絡連接。
[0017]所述流媒體服務器包括live555直播代理邏輯服務器和live555點播邏輯服務器;所述外部存儲服務器上設有基于ffmpeg庫的密文H264視頻轉碼模塊和ffmpeg庫;live555點播邏輯服務器和外部存儲服務器之間通過TCP協議通信,為此,在live555點播邏輯服務器上建有TCP客戶端,在外部存儲服務器上建有TCP服務器端。
[0018]城市安防監控體系中的加密攝像機可提供密文H264視頻流。
[0019]下面對本發明的幾個主要組成部分做詳細說明。
[0020](一)基于live555框架的流媒體服務器。
[0021]現在通用的流媒體服務器,主要是基于三種協議,RTSP/RTP/RTCP、RTMP, HTTP協議,這三種都是應用層協議。HTTP協議不屬于實時流媒體協議,是順序流傳輸協議,直接通過HTTP協議下載文件到本地播放,不能滿足實時觀看的需求;RTMP和RTSP/RTP/RTCP協議滿足實時流傳輸的要求,目前主要用于視頻的直播,也能滿足點播視頻的需求;RTMP目前主流是用于FLV的直播點播,協議性能方面能滿足要求,但是,在城市安防監控體系中的加密攝像頭是對編碼后的H264裸流進行推送,在進行密文視頻直播時,如果采用RTMP協議,通常需要將其封裝為FLV格式,大大降低了直播的效率且提高了直播時延,RTSP/RTP/RTCP協議簇,可以直接進行密文H264裸流的推送,因此,流媒體服務器上的live555直播代理邏輯服務器和live555點播邏輯服務器都采用RTSP/RTP/RTCP協議簇。
[0022]Live555開發庫源代碼主要包含:(I)UsageEnvironment模塊是Live555中最基本的基類之一,它的功能簡單,主要是用于消息的輸入輸出和用戶交互功能。(2)BasicUsageEnvr1nment庫。(3)GroupSock模塊主要是對套接字和網絡接口的封裝,用于實現視音頻數據包的發送和接收功能。(4)LiveMedia是Live555的核心模塊。它聲明了一個抽象基類Medium,其他許多類包括RTSPClient、MediaSource、MediaSink、MediaSess1n 和 RTCPInstance 都派生自該類。
[0023]實時傳輸協議RTP (Realtime Transport Protocol):是針對 Internet 上多媒體數據流的一個傳輸協議,由IETF (Internet工程任務組)作為RFC1889發布。RTP本身只保證實時數據的傳輸,并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。實時傳輸控制協議RTCP(Realtime TransportControl Protocol):負責管理傳輸質量,在當前應用進程之間交換控制信息。RTSP (RealTime Streaming Protocol),實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議。詳見RFC2326。RTSP是一個非常類似于HTTP的應用層協議。它是一個多媒體播放控制協議,主要用來使用戶在播放流媒體時可以像操作本地的影碟機一樣進行控制,即可以對流媒體進行暫停/繼續、后退和前進等控制。
[0024](二)外部存儲服務器。
[0025]由于本平臺針對城市安防監控體系應用,最終要迀移到嵌入式系統之中,由于嵌入式板子空間容量有限,必須將密文視頻文件存儲在外部存儲設備中,因此