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