1. 程式人生 > >V4L2視訊採集與視訊編碼學習目錄及總結

V4L2視訊採集與視訊編碼學習目錄及總結

    我們現在平時所看到的視訊,從攝像頭資料採集到最後顯示頻顯示出來,初略的歸納經過了下面的幾個環節:攝像頭採集影象資料->將影象資料進行壓縮->將壓縮的影象資料封裝成視訊格式。視訊格式檔案->去除視訊格式封裝->解壓縮影象資料->得到一幀影象的資料->顯示器顯示影象。

    這裡只介紹攝像頭資料的採集以及將採集到的資料壓縮成視訊流的一些操作。

    攝像頭輸出三類資料:YUV,RGB,JPEG。YUV是大多數視訊編碼所需要的資料格式,比如X264編碼器編碼h264視訊格式,它需要獨立分離Y,U,V三個分量上的資料。RGB 資料可以直接傳送到顯示屏顯示,通過R(紅),G(綠),B(藍),三色可以組合成其它的各種顏色。顯示屏最後都是通過RGB資料格式把顏色顯示出來。JPEG是一種經過壓縮的圖片格式,為了減少資料量,在有些攝像頭內部它就可以進行圖片的壓縮,一幀JPEG格式的資料直接儲存成檔案就是一張JPG的圖片,把一系列JPEG的圖片依循儲存就是MJPEG格式的視訊格式了。與x264編碼相比,MJPEG編碼清晰度較高,但是資料量較大(壓縮率低,失真率也低)

   三種類型資料:


攝像頭輸出YUV資料

     YUV資料分很多種,比如YUV420,YUV422,YUV422P等等,對於有些視訊編碼,它只能輸入YUV資料。比如X264編碼器編碼h264視訊格式資料,它需要輸入Y,U,V三個分量的具體資料。一幀影象的YUV資料並不能像圖片一樣檢視,需要專門的YUV檢視軟體檢視,比如pYUV。YUV資料的具體定義網上有很多資料這裡不再介紹,下面是對YUV資料的具體使用。

攝像頭輸出RGB資料

    RGB資料是攝像頭採集到的原始顏色資料,這種資料主要是提供給影象處理器進行影象ISP效果的處理,這裡待以後有時間在研究。

攝像頭輸出JPEG資料

    JPEG資料是攝像頭採集到影象資料後,在攝像頭感測器中就已經進行了一次壓縮處理。將攝像頭輸出的一幀JPEG資料儲存成檔案,就是一張圖片。可以將採集到的資料直接封裝成視訊格式,使用視訊播放器就可以直接播放。與h264編碼相比,h264雖然壓縮的資料比利非常大,但是它的影象失真也是比較明顯的。使用MJPEG封裝的視訊,清晰度高但資料量大。

資料格式轉換   

    在實際使用的過程中,由於裝置的受限,有些攝像頭可能只支援JPEG格式輸出,有些攝像頭可能只支援YUV422格式輸出,這裡就會涉及到資料資料格式的一個轉換。如果是在PC機或是手機上,這個很好處理,直接安裝FFMPEG就可以把問題解決,因為FFMPEG提供和很多可以使用的介面。但是在嵌入式裝置中,可能安裝不了FFMPEG,那麼就需要自己設計程式進行資料格式的轉換了。

裝置移植

    最後提供一個裝置移植的例項