基于FFmpeg的遠程視頻監(jiān)控系統(tǒng)編解碼
3 接收處理端
接收處理端可以與任意一個采集發(fā)送端進行連接通信。連接后可以接收采集發(fā)送端發(fā)送的視頻數(shù)據(jù),經(jīng)過FFmpeg解碼后顯示。
3.1 FFmpeg解碼
用FFmpeg解碼的流程與編碼的流程大致相同,只是解碼的核心函數(shù)為avcodec_decode_video()。接收處理端接收到一幀數(shù)據(jù)后,通過avpicture_fill()存儲到AVFrame格式的內存空間中,然后再使用avcodec_decode_video()函數(shù)進行解碼。其解碼流程如圖3所示:本文引用地址:http://butianyuan.cn/article/148086.htm
3.2.視頻顯示
FFmpeg對H.264解碼出來格式是YUV(.i420)格式,需要轉換成RGB(.rgb24)格式顯示,使用FFMPEG中的sws_scalc()函數(shù)可以實現(xiàn)格式轉換。
顯示視頻采用的是OpenCV。顯示的核心函數(shù)是cVShowImage(char* name,lpllmage* dst),將得到的RGB(.rgb24)格式數(shù)據(jù)轉換為OpenCV格式的lpllmage數(shù)據(jù),然后顯示在監(jiān)控窗口上,如圖4所示:
4 結束語
隨著視頻壓縮技術的發(fā)展成熟,嵌入式視頻監(jiān)控逐漸在監(jiān)控領域占有重要地位。以S3C2440為嵌入式硬件平臺,通過攝像頭采集數(shù)據(jù),在嵌入式Linux與Windows操作系統(tǒng)相結合的跨平臺上,實現(xiàn)FFmpeg的編解碼,為實際嵌入式視頻監(jiān)控系統(tǒng)的視頻壓縮傳輸設計,提供了一種可行的方法。
評論