欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于安卓otg接口驅(qū)動多個攝像頭的方法和系統(tǒng)的制作方法_2

文檔序號:9667146閱讀:來源:國知局
ATF0RM\
[0062] --extra-ldflags= "_ldl"
[0063] 將x264config文件與x264的源代碼放置在jni根目錄中,然后運行該腳本文件。經(jīng) 過交叉編譯后,系統(tǒng)會在jni根目錄中生成x264.a文件,該文件為x264編碼器的靜態(tài)庫,在 編碼時進行調(diào)用。
[0064] (2)libjpeg編碼器移植
[0065]到官網(wǎng)上下載源碼,本專利使用的是jpegsr9,然后加壓,生成jpeg-9,進入并創(chuàng)建jni目錄,將里面的內(nèi)容都拷貝到jni里面,生成配置文件,在jni目錄下面創(chuàng)建 jpegconfig·sh文件,然后在里面添加:
[0066]exportNDK= /home/syan/android/android-ndk_r9
[0067] exportPLATFORM= $NDK/platforms/android-8/arch-arm/
[0068] exportPREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt
[0069] exportCC=$PREBUILT/bin/arm-linux-androideabi-gcc
[0070] . /configure-prefix=/home/jpeg-9/jni/dist-host=armCC= ^$CC- sysroot= $PLATF0RM〃
[0071] 接著生成Android.mk文件,內(nèi)容如下:
[0072]
[0073]最后,運行jpegconfig.sh腳本文件,在該jni目錄下,得到jpeg編碼的動態(tài)庫,該 動態(tài)庫可以在jpeg壓縮時進行調(diào)用。
[0074] 步驟三:JNI編寫
[0075]目前市面上支持0TG功能的主流安卓設備,一個0TG接口只能同時與一個設備進行 通信,但是通過實驗發(fā)現(xiàn),當用戶通過USBHUB外接多個攝像頭的時候,安卓系統(tǒng)能夠正確 識別多個UVC攝像頭,這為我們進行多攝像頭的支持提供了可能。本發(fā)明利用系統(tǒng)能夠正確 識別多攝像頭同時連接的技術,分別打開多個攝像頭,單獨進行通信、圖像獲取,只要在多 個攝像頭之間進行切換的間隙足夠小,展現(xiàn)給用戶的圖像或視頻,不會存在視覺上的延時、 卡頓等現(xiàn)象。在進行攝像頭數(shù)據(jù)采集的過程中,需要用到JNI通信方式,完成底層代碼與應 用層代碼的通信,如圖2所示,圖中描述了JNI完成了C/C++代碼層與JAVA層的函數(shù)、動態(tài)庫 的調(diào)用。在進行JNI編寫的過程中,本發(fā)明所采用的的方法主要進行:
[0076] (1)視頻設備號檢測
[0077]當一個UVC攝像頭303正確連接安卓系統(tǒng)后,在系統(tǒng)的/dev目錄下,會相應產(chǎn)生videoX設備,其中X表示設備號,我們利用循環(huán),檢測設備號從0至10,在有效的設備號中,數(shù) 值較大的設備即我們連接的外接UVC攝像頭。如果有效的攝像頭設備號只有一個,本發(fā)明的 方法能夠進行單一攝像頭進行圖像采集,如果有效設備為多個,可以開啟我們多攝像頭錄 像的功能。
[0078] (2)打開設備,初始化設置,輸出格式YUV
[0079]按照我們上一步記錄下的有效設備號,分別打開多個攝像頭,然后進行攝像頭初 始化,包括攝像頭通信協(xié)議、分辨率、輸出數(shù)據(jù)格式等,本發(fā)明采用v412通信方式,分辨率根 據(jù)用戶需求及攝像頭標準進行設置,這里默認采用640x480,輸出格式采用YUV格式。
[0080] (3)編碼器初始化
[0081]本發(fā)明采用H264編碼方式,對采集到的攝像頭數(shù)據(jù)進行壓縮。其中,設置幀率為25 幀每秒,為了節(jié)省編碼時間,編碼等級為baseline,其他參數(shù)采用編碼器默認。
[0082]步驟四:音視頻采集及封裝方式設計
[0083]完成JNI編寫后,可以通過安卓應用層代碼調(diào)用底層的方法。絕大多數(shù)攝像頭能夠 提供YUV的數(shù)據(jù)輸出,本發(fā)明所采用的攝像頭輸出數(shù)據(jù)格式為YUV420。本發(fā)明應用端提供拍 照和錄像的接口,我們在JNI層實現(xiàn)具體的拍照和錄像的功能,應用端可以調(diào)用底層的方 法。在拍照階段,獲取YUV-幀數(shù)據(jù),利用移植到安卓系統(tǒng)的libjpeg壓縮庫,對YUV數(shù)據(jù)進行 jpeg壓縮,從而獲取jpeg圖像。在錄像階段,本發(fā)明中選用H. 264壓縮方式,打開多個攝像 頭,獲取輸出的YUV數(shù)據(jù),將數(shù)據(jù)利用x264壓縮庫進行視頻編碼,利用安卓手機或pad自帶的 麥克風進行音頻錄制,同時,選用MP4視頻封裝格式,錄像完成,形成可播放的MP4視頻文件。
[0084]本發(fā)明的優(yōu)選的實施方案的整體流程如下:
[0085] 1、軟硬件平臺搭建
[0086] 安卓平臺采用三星S5手機302,如圖3所示進行攝像頭303、304通過0TG接口 310進 行擴展連接。圖3中可以看到,連接線0TG接口 301-端連接Pad或者安卓手機302,另一端為 兩個USB接口 312、313和一個供電接口 311,供電接口為可選,在0TG供電不足的情況下可以 外接電源305,兩個USB接口 312、313分別連接兩個UVC攝像頭304、303。
[0087]由于三星S5手機在出廠時,系統(tǒng)權限被鎖定,本發(fā)明中使用"ROOT大師"PC版進行 手機權限的解鎖。軟件安裝完成后,打開軟件,可以看到圖4所示界面,按軟件提示連接設 備。
[0088]連接成功后,點擊界面中間的"獲取ROOT權限"按鈕,之后需要大約1分鐘的時間,ROOT成功后,會給出獲取權限成功提示,如圖5所示。
[0089] 2、圖像庫、視頻庫移植
[0090]在進行音視頻編碼的過程,需要用到對應的編碼庫。在本發(fā)明中,視頻編碼采用了 開源的x264編碼庫,圖像編碼采用libjpeg實現(xiàn),音頻利用手機自帶的麥克風和編碼接口, 進行AAC音頻編碼。為了能夠在安卓平臺上使用x264和libjpeg開源庫,需要進行部分代碼 的修改和移植。首先,從網(wǎng)絡上獲取x264的開源實現(xiàn),在Ubuntu系統(tǒng)的終端中,進入x264代 碼的根目錄,其中提供了文件編譯需要的config文件,這里需要根據(jù)發(fā)明需要進行配置,首 先將x264編譯成后綴名為.a的靜態(tài)庫,然后在JNI編寫階段,調(diào)用該靜態(tài)庫,跟其他函數(shù)一 起編譯成能夠被安卓系統(tǒng)調(diào)用的動態(tài)庫。針對libjped,進行與x264類似的交叉編譯獲取能 夠在安卓系統(tǒng)運行的靜態(tài)庫。獲取了視頻編碼和jpeg圖像壓縮需要的靜態(tài)庫之后,在進行 JNI編寫時,通過包含這兩個庫的頭文件,即可進行庫函數(shù)的調(diào)用。
[0091] 3、JNI編寫
[0092]這部分涉及到應用層程序編寫,JNI與應用層通信(如圖2所示),在JNI層,程序提 供了攝像頭初始化、YUV轉化RGB、JPEG圖像壓縮、視頻錄制等函數(shù)接口,這些接口可以在應 用層被調(diào)用。
[0093] 4、完成首視頻米集
[0094] 在完成以上幾個工作之后,我們可以進行音視頻采集工作。在應用層,首先利用接 口函數(shù)進行攝像頭的識別和初始化,在多個攝像頭被正確打開后,即可獲取視頻流。為了能 夠在手機屏幕實時顯示攝像頭獲取的圖像,需要將攝像頭的YUV數(shù)據(jù)轉化為RGB數(shù)據(jù)顯示在 屏幕上,然后定時刷新屏幕UI線程。此時,用戶可以一邊進行圖像采集,一邊實時觀察采集 到的圖像數(shù)據(jù)。
[0095] 在搭建安卓0TG多攝像頭硬件平臺的基礎上,針對多個攝像進行驅(qū)動開發(fā),實現(xiàn)在 安卓平臺上利用0TG接口進行多個攝像頭圖像采集。為基于安卓平臺的圖像采集、監(jiān)控、圖 像處理提供了一個方便、易于實現(xiàn)的方式。
[0096]結論:在基于安卓0TG攝像頭圖像采集方面,本發(fā)明提出了一種基于安卓0TG接口 驅(qū)動多個攝像頭的方法。我們通過0TG擴展多個USB接□,分別連接支持UVC的攝像頭,進行 JNI編寫完成圖像、視頻的采集。在應用層調(diào)用JNI函數(shù),可以實現(xiàn)實時顯示,圖像拍攝,視頻 錄制等功能,為基于安卓多攝像頭應用提供了一種簡單、有效的解決方案。本發(fā)明在監(jiān)控、 圖像處理方面有著良好的應用前景。
【主權項】
1. 一種基于安卓OTG接口驅(qū)動多個攝像頭的方法,所述方法包括以下步驟: a. 搭建硬件平臺,使用0TG線和USBHUB將安卓設備和多個攝像頭連接起來; b. 移植圖像庫、視頻庫,對視頻庫進行編譯獲得安卓系統(tǒng)視頻編碼的靜態(tài)庫并且對圖 像庫進行編譯獲得安卓系統(tǒng)圖像壓縮的靜態(tài)庫; c. 編寫JNI,調(diào)用該視頻編碼的靜態(tài)庫和圖像壓縮的靜態(tài)庫,編譯成能夠被安卓系統(tǒng)調(diào) 用的動態(tài)庫,提供被應用層調(diào)用的接口函數(shù); d. 采集及封裝音視頻,安卓系統(tǒng)利用所述接口函數(shù)進行攝像頭的識別和初始化,打開 攝像頭獲得圖像和視頻,利用麥克風進行音頻錄制,同時進行視頻封裝,形成可播放的視頻 文件。2. 根據(jù)權利要求1所述的基于安卓0TG接口驅(qū)動多個攝像頭的方法,其中在步驟a之后 在步驟b之前還包括獲得安卓系統(tǒng)ROOT權限的步驟。3. 根據(jù)權利要求1所述的基于安卓0TG接口驅(qū)動多個攝像頭的方法,其中所述USBHUB 還包括一個供電接口。4. 根據(jù)權利要求1所述的基于安卓0TG接口驅(qū)動多個攝像頭的方法,其中所述接口函數(shù) 包括攝像頭初始化、YUV轉化RGB、JPEG圖像壓縮、視頻錄制接口函數(shù)。5. 根據(jù)權利要求4所述的基于安卓0TG接口驅(qū)動多個攝像頭的方法,其中所述攝像頭初 始化包括攝像頭通信協(xié)議、分辨率、輸出數(shù)據(jù)格式、編碼器的初始化。6. 根據(jù)權利要求5所述的基于安卓0TG接口驅(qū)動多個攝像頭的方法,其中通信協(xié)議采用 v412,分辨率采用640X480,輸出格式采用YUV格式。7. 根據(jù)權利要求5所述的基于安卓0TG接口驅(qū)動多個攝像頭的方法,其中所述編碼器采 用H264編碼方式,設置幀率為25幀每秒,編碼等級為baseline。8. 根據(jù)權利要求2所述的基于安卓OTG接口驅(qū)動多個攝像頭的方法,其中所述獲得安卓 系統(tǒng)ROOT權限的步驟包括: a. 下載所述平臺設備對應的內(nèi)核文件; b. 在Ubuntu系統(tǒng)下,通過命令makemenuconfig進行內(nèi)核配置如下: CONFIG_VIDEO_DEV=y C0NFIG_VIDE0_V4L2_C0MM0N=y CONFIG_VIDEO_MEDIA=y CONFIG_USB_VIDEO_CLASS=y C0NFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y 并且將UCV配置成build-in形式,不需要在使用中進行驅(qū)動的插入; c. 將內(nèi)核刷入手機中。9. 一種基于安卓0TG接口驅(qū)動多個攝像頭的系統(tǒng),所述系統(tǒng)包括:多個支持UVC的攝像 頭、一臺安卓4.0以上平臺的安卓設備,一條0TG連接線、一個USBHUB,其特征在于: 0TG連接線的一端連接至安卓設備,0TG連接線的另一端連接至USBHUB,所述USBHUB連 接至多個UVC攝像頭; 所述安卓設備的內(nèi)核對UVC支持,安卓系統(tǒng)可調(diào)用JNI提供的接口函數(shù)利用已經(jīng)移植的 圖像庫和視頻庫來米集圖像和視頻。10.根據(jù)權利要求9所述的基于安卓OTG接口驅(qū)動多個攝像頭的系統(tǒng),其中所述USBHUB還包括一個供電接口。
【專利摘要】本發(fā)明提供一種基于安卓OTG接口驅(qū)動多個攝像頭的方法和系統(tǒng)。通過OTG擴展多個USB接口,分別連接支持UVC的攝像頭,進行JNI編寫完成圖像、視頻的采集。在應用層調(diào)用JNI函數(shù),可以實現(xiàn)實時顯示、圖像拍攝、視頻錄制等功能,為基于安卓多攝像頭應用提供了一種簡單、有效的解決方案。
【IPC分類】H04N5/232, G06F9/44
【公開號】CN105426194
【申請?zhí)枴緾N201510883061
【發(fā)明人】李思遠, 甘韻, 楊雅麗, 孫云峰
【申請人】北京利云技術開發(fā)公司
【公開日】2016年3月23日
【申請日】2015年12月3日
當前第2頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
灯塔市| 沙坪坝区| 正宁县| 正蓝旗| 克山县| 磴口县| 崇文区| 襄樊市| 新源县| 固阳县| 延寿县| 诸暨市| 祁门县| 正镶白旗| 泊头市| 高密市| 南乐县| 闸北区| 云林县| 双牌县| 云霄县| 交口县| 焦作市| 盐池县| 北票市| 济阳县| 上饶市| 宜章县| 韶山市| 长寿区| 黔西| 咸阳市| 莒南县| 隆林| 金门县| 伊春市| 日照市| 阳朔县| 九江市| 遵义县| 铜陵市|