攝像頭視頻采集壓縮及傳輸
引言:
攝像頭基本的功能還是視頻傳輸,那么它是依靠怎樣的原理來實現的呢?所謂視頻傳輸:
就是將圖片一張張傳到屏幕,由于傳輸速度很快,所以可以讓大家看到連續動態的畫面,就像放電影一樣。一般當畫面的傳輸數量達到每秒24幀時,畫面就有了連續性。
下邊我們將介紹攝像頭視頻采集壓縮及傳輸的整個過程。
一.攝像頭的工作原理(獲取視頻數據)
攝像頭的工作原理大致為:景物通過鏡頭(LENS)生成的光學圖像投射到圖像傳感器表面上,然后轉為電信號,經過A/D(模數轉換)轉換后變為數字圖像信號,再送到數字信號處理芯片(DSP)中加工處理,再通過USB接口傳輸到電腦中處理,通過顯示器就可以看到圖像了。下圖是攝像頭工作的流程圖:
注1:圖像傳感器(SENSOR)是一種半導體芯片,其表面包含有幾十萬到幾百萬的光電二極管。光電二極管受到光照射時,就會產生電荷。
注2:數字信號處理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通過一系列復雜的數學算法運算,對數字圖像信號參數進行優化處理,并把處理后的信號通過USB等接口傳到PC等設備。
DSP結構框架:
1. ISP(image signal processor)(鏡像信號處理器)
2. JPEG encoder(JPEG圖像解碼器)
3. USB device controller(USB設備控制器)
而視頻要求將獲取的視頻圖像通過互聯網傳送到異地的電腦上顯示出來這其中就涉及到對于獲得的視頻圖像的傳輸。
在進行這種圖片的傳輸時,必須將圖片進行壓縮,一般壓縮方式有如H.261、JPEG、MPEG等,否則傳輸所需的帶寬會變得很大。大家用RealPlayer不知是否留意,當播放電影的時候,在播放器的下方會有一個傳輸速度250kbps、400kbps、1000kbps…畫面的質量越高,這個速度也就越大。而攝像頭進行視頻傳輸也是這個原理,如果將攝像頭的分辨率調到640×480,捕捉到的圖片每張 大小約為50kb左右,每秒30幀,那么攝像頭傳輸視頻所需的速度為50×30/s=1500kbps=1.5Mbps。而在實際生活中,人們一般用于網絡視頻聊天時的分辨率為320×240甚至更低,傳輸的幀數為每秒24幀。換言之,此時視頻傳輸速率將不到300kbps,人們就可以進行較為流暢的視頻傳輸聊天。如果采用更高的壓縮視頻方式,如MPEG-1等等,可以將傳輸速率降低到200kbps不到。這個就是一般視頻聊天時,攝像頭所需的網絡傳輸速度。
二.視頻壓縮部分
視頻的壓縮是視頻處理的核心,按照是否實時性可以分為非實時壓縮和實時壓縮。而視頻傳輸(如QQ視頻即時聊天)屬于要求視頻壓縮為實時壓縮。
下面對于視頻為什么能壓縮進行說明。
視頻壓縮是有損壓縮,一般說來,視頻壓縮的壓縮率都很高,能夠做到這么
高的壓縮率是因為視頻圖像有著非常大的時間和空間的冗余度。所謂的時間冗余度指的是兩幀相鄰的圖像他們相同位置的像素值比較類似,具有很大的相關性,尤其是靜止圖像,甚至兩幀圖像完全相同,對運動圖像,通過某種運算(運動估計),應該說他們也具有很高的相關性;而空間相關性指的是同一幀圖像,相鄰的兩個像素也具備一定的相關性。這些相關性是視頻壓縮算法的初始假設,換句話說,如果不滿足這兩個條件(全白噪聲圖像,場景頻繁切換圖像等),視頻壓縮的效果是會很差的。
去除時間相關性的關鍵算法是運動估計,它找出當前圖像宏塊在上一幀圖像中最匹配的位置,很多時候,我們只需要把這個相對坐標記錄下來,就夠了,這樣就節省了大量碼字,提高了壓縮率。視頻壓縮算法中,運動估計永遠是最關鍵最核心的部分。去除空間相關性是通過DCT變換來實現的,把時域上的數據映射到頻域上,然后對DCT系數進行量化處理,基本上,所有的有損壓縮,都會有量化,它提高壓縮率最明顯。
圖像的原始文件是比較大的,必須經過圖像壓縮才能夠進行快速的傳輸以及順暢的播放。而壓縮比正是來衡量影像壓縮大小的參數。一般來說,攝像頭的壓縮比率大都是5:1。也就是說,如果在未壓縮之前30秒的圖像的容量是30MB,那么按照攝像頭5:1的壓縮比率來對圖像進行壓縮以后,它的大小就變成了6MB了。
主要的視頻壓縮算法包括:M-JPEG、Mpeg、H.264、Wavelet(小波壓縮)、JPEG 2000、AVS。
基本上視頻壓縮的核心就這些。
三.視頻傳輸部分
為了保證數字視頻網絡傳輸的實時性和圖像的質量,傳輸層協議的選擇是整個設計和實現的關鍵。Internet在IP層上使用兩種傳輸協議:一種是TCP(傳輸控制協議),它是面向連接的網絡協議;另一種是UDP(用戶數據報協議),它是無連接的網絡協議。
TCP傳輸:TCP(傳輸控制協議)是一種面向連接的網絡傳輸協議。支持多數據流操作,提供流控和錯誤控制,乃至對亂序到達報文的重新排序,因此,TCP傳輸提供了可靠的數據傳輸服務。
使用TCP傳輸的一般的過程:
客戶機向服務器發出連接的請求后,服務器接收到后,向客戶機發出連接確認,實現連接后,雙方進行數據傳輸。
UDP傳輸: UDP(用戶數據報協議)是一種無連接的網絡傳輸協議。提供一種基本的低延時的稱謂數據報的傳輸服務。不需要像TCP傳輸一樣需預先建立一條連接。UDP無計時機制、流控或擁塞管理機制。丟失的數據不會重傳。因此提供一種不可靠的的應用數據傳輸服務。但在一個良好的網絡環境下如 局域網內,使用UDP傳輸數據還是比較可靠,且效率很高。
IP組播技術:組播技術是一種允許一個或多個發送者發送單一或多個發送者的數據包到多個接收者的網絡技術。組播源把數據報發送到特定的組播組,而只有加入到該組播組的主機才能接收到這些數據包。組播可大大節省網絡寬帶,因為無論有多少個目標地址,在整個網絡的任何一條鏈路上只船送單一的數據包。
1.TCP/IP協議和實時傳輸
TCP/IP協議最初是為提供非實時數據業務而設計的。IP協議負責主機之間的數據傳輸,不進行檢錯和糾錯。因此,經常發生數據丟失或失序現象。為保證數據的可靠傳輸,人們將TCP協議用于IP數據的傳輸,以提高接收端的檢錯和糾錯能力。當檢測到數據包丟失或錯誤時,就會要求發送端重新發送,這樣一來就不可避免地引起了傳輸延時和耗用網絡的帶寬。因此傳統的TCP/IP協議傳輸實時音頻、視頻數據的能力較差。當然在傳輸用于回放的視頻和音頻數據時,TCP協議也是一種選擇。如果有足夠大的緩沖區、充足的網絡帶寬,在TCP協議上,接近實時的視音頻傳輸也是可能的。然而,如果在丟包率較高、網絡狀況不好的情況下,利用TCP協議進行視頻或音頻通信幾乎是不可能的。
TCP和其它可靠的傳輸層協議如XTP不適合實時視音頻傳輸的原因主要有以下幾個方面:
1 .TCP的重傳機制
我們知道,在TCP/IP協議中,當發送方發現數據丟失時,它將要求重傳丟失的數據包。然而這將需要一個甚至更多的周期(根據TCP/IP的快速重傳機制,這將需要三個額外的幀延遲),這種重傳對于實時性要求較高的視音頻數據通信來說幾乎是災難性的,因為接收方不得不等待重傳數據的到來,從而造成了延遲和斷點(音頻的不連續或視頻的凝固等等)。
2 .TCP的擁塞控制機制
TCP的擁塞控制機制在探測到有數據包丟失時,它就會減小它的擁塞窗口。而另一方面,音頻、視頻在特定的編碼方式下,產生的編碼數量(即碼率)是不可能突然改變的。正確的擁塞控制應該是變換音頻、視頻信息的編碼方式,調節視頻信息的幀頻或圖像幅面的大小等等。
3 .TCP報文頭的大小
TCP不適合于實時視音頻傳輸的另一個缺陷是,它的報文頭比UDP的報文頭大。TCP的報文頭為40個字節,而UDP的報文頭僅為12個字節。并且,這些可靠的傳輸層協議不能提供時間戳(Time Stamp)和編解碼信息(Encoding Information),而這些信息恰恰是接收方(即客戶端)的應用程序所需要的。因此TCP是不適合于視音頻信息的實時傳輸的。
4 .啟動速度慢
即便是在網絡運行狀態良好、沒有丟包的情況下,由于TCP的啟動需要建立連接,因而在初始化的過程中,需要較長的時間,而在一個實時視音頻傳輸應用中,盡量少的延遲正是我們所期望的。
由此可見,TCP協議是不適合用來傳輸實時視音頻數據的,為了實現視音頻數據的實時傳輸,我們需要尋求其它的途徑。
2.RTP協議適合實時視音頻傳輸
RTP(Real-Time Transport Protocol)/RTCP(Real-Time Transport Control Protocol)是一種應用型的傳輸層協議,它并不提供任何傳輸可靠性的保證和流量的擁塞控制機制。它是由IETF(Internet Engineering Task Force)為視音頻的實時傳輸而設計的傳輸協議。RTP協議位于UDP協議之上,在功能上獨立于下面的傳輸層(UDP)和網絡層,但不能單獨作為一個層次存在,通常是利用低層的UDP協議對實時視音頻數據進行組播(Multicast)或單播(Unicast),從而實現多點或單點視音頻數據的傳輸。
UDP是一種無連接的數據報投遞服務,雖然沒有TCP那么可靠,并且無法保證實時視音頻傳輸業務的服務質量(QoS),需要RTCP實時監控數據傳輸和服務質量,但是,由于UDP的傳輸延時低于TCP,能與音頻和視頻流很好地匹配。因此,在實際應用中,RTP/RTCP/UDP用于音視頻媒體,而TCP用于數據和控制信令的傳輸。
總結:如果接收端和發送端處于同一個局域網內,由于有充分的帶寬保證,在滿足視頻傳輸的實時性方面,TCP也可以有比較好的表現,TCP和基于UDP的RTP的視頻傳輸性能相差不大。由于在局域網內帶寬不是主要矛盾,此時視頻數據傳輸所表現出來的延時主要體現為處理延時,它是由處理機的處理能力以及采用的處理機制所決定的 。但是當在廣域網中進行視頻數據傳輸時,此時的傳輸性能極大地取決于可用的帶寬,由于TCP是面向連接的傳輸層協議,它的重傳機制和擁塞控制機制,將使網絡狀況進一步惡化,從而帶來災難性的延時。同時,在這種網絡環境下,通過TCP傳輸的視頻數據,在接收端重建、回放時,斷點非常明顯,體現為明顯的斷斷續續,傳輸的實時性和傳輸質量都無法保障。相對而言,采用RTP傳輸的視頻數據的實時性和傳輸質量就要好得多。
四.視頻圖像的異地顯示
當壓縮過的視頻通過互聯網傳輸到異地的時候,對于互聯網傳輸過來的視頻信息,首先是要進行解碼,然后才是顯示。解碼的芯片有一定的性能要求,比編碼器低些,但是畢竟是視頻數據處理,通用的芯片(不支持MMX等多媒體指令)可能會比較吃力。顯示設備主要有電視、監視器和顯示器,他們的信號接口是不一樣的,電視監視器是模擬的電信號,顯示器的輸入應該是數字信號。
以上是攝像頭如何獲取圖像數據及獲取的數據存放在什么地方,如何壓縮和傳輸及如何在異地釋放和播放出來的整個過程
原文地址:http://www.cnblogs.com/yzhe/archive/2010/02/08/1666011.html