注:此文章為轉載,希望大家一起分享作者的經歷并一起學習
簡單來說就是采集、編碼、傳輸、解碼、顯示3個部分
采集: 1.先找個USB的攝像頭吧,連在開發(fā)板上點那個“USB攝像頭”應用程序,如果可以正常顯示視頻圖像,那這USB攝像頭就OK了 2.采集圖像需要用到一個叫做V4L2的程序(就是V4L的升級版,但是已經進行了很大的改變,所以兩者的程序不能混用),好消息 是mini自帶的那個linux系統(tǒng)已經包含了V4L2庫文件,所以就不用再做移植和編譯了。 3.到網(wǎng)上下載V4L2的應用手冊,是個PDF的文檔,看它提供的那個例程,看懂那個例程后就可以按照自己的需要進行改寫了。 4.在那個例程中有個process_image的子程序,我們要做的主要工作就是自己完成這個子程序的改寫。編碼: 1.編碼(也就是所謂的壓縮)的技術有很多,對應的庫文件也很多,可以用xvid,x264等,自己選擇吧 2.從網(wǎng)上下載xvid的源程序,然后移植編譯,使其可以在ARM上使用。 3.xvid自帶了例程,仍然是看懂這個例程,然后按照自己的需要修改例程,最后把這部分代碼添加到V4L2那個例程的process_image 子程序中,兩者結合就可以對采集到的視頻數(shù)據(jù)進行編碼了。傳輸: 1.傳輸(發(fā)送和接收)的技術也有若干種,可以用TCP或者UDP的socket編程,也可以用RTP 2.如果用socket編程,那直接寫代碼就OK了,如果用RTP,需要下載相應的庫文件代碼,然后移植編譯,使其可以在ARM上使用。 3.發(fā)送的程序也添加到process_image子程序中,將編碼后的數(shù)據(jù)發(fā)送出去就OK了 4.接收的程序是運行在PC上的,所以就要用到windows的socket編程;如果用RTP,同樣要編譯生成庫文件才能用,我用的是VC6.0來編譯的解碼: 1.如同編碼,用VC6.0編譯xvid的源代碼,生成庫文件 2.看懂那個解碼的例程,然后改寫,沒什么好說的,自己努力吧^_^!顯示: 1.顯示的技術也有很多,什么direct show,SDL之類的,看情況自己選一個吧 2.我用的是SDL,同樣先下載它的源代碼,然后用VC6.0編譯生成庫文件以待編程使用 3.下載個SDL的顯示例程,自己看,看懂后自己修改其它: 1.需要注意一點,SDL中顯示的格式和V4L2中采集的格式要一致才行 2.那個process_image程序如下圖: 致謝: 非常感謝“友善之臂2440群”中各位好心人,在這個過程中大家給了我很多幫助和指點,非常感謝大家!! 最后,希望上面簡單的介紹能對大家有所幫助,使gprs、視頻采集之類的設計成為入門級的練習,大家一起去追求更高的目標。 |
|