999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于局域網(wǎng)的視頻聊天系統(tǒng)一一蛙酷

2015-04-29 00:00:00邱超丁建輝陽(yáng)平
電子產(chǎn)品世界 2015年1期

摘要:隨著無(wú)線網(wǎng)絡(luò)的發(fā)展,支持Wi-Fi的電子產(chǎn)品越來(lái)越多,與Wi-Fi綁定的應(yīng)用也層出不窮,但還沒(méi)有一款基于Wi-Fi的視頻聊天軟件能夠滿足人們的日常交互需求,因此我們開(kāi)發(fā)出“蛙酷”,一款基于局域網(wǎng)的視頻聊天軟件,能夠在局域網(wǎng)覆蓋下實(shí)現(xiàn)隨時(shí)隨地視頻聊天和視頻會(huì)議,且無(wú)需耗費(fèi)任何手機(jī)數(shù)據(jù)流量,真正給用戶帶來(lái)了隨聊隨見(jiàn)的交互體驗(yàn)。本文網(wǎng)絡(luò)版地址:http://www.eepw.com.cn/article/267433.htm

關(guān)鍵詞:局域網(wǎng);視頻聊天;視頻會(huì)議;簡(jiǎn)單實(shí)用

DOI:10.3969/j.issn.1005-5517.2015.1.014

本項(xiàng)目獲得2014英特爾杯移動(dòng)計(jì)算創(chuàng)新競(jìng)賽“最受歡迎作品獎(jiǎng)”

1 引言

目前,社會(huì)所流行的聊天軟件所專(zhuān)注的問(wèn)題僅限于視頻效果和軟件盈利上,應(yīng)用目的趨于商業(yè)化,而沒(méi)有真正從用戶的角度出發(fā)去設(shè)計(jì)開(kāi)發(fā)軟件,由于視頻通訊不同于文字通訊和語(yǔ)言通訊,傳輸信息量大且十分耗費(fèi)數(shù)據(jù)流量,導(dǎo)致用戶想用能用卻不敢用。基于這一點(diǎn),我們提出了“蛙酷”,這是一款基于無(wú)線局域網(wǎng)的視頻聊天軟件,主要包含在線視頻聊天和視頻組播功能,用戶可以使用這款軟件與同一局域網(wǎng)內(nèi)的任意一位好友隨時(shí)隨地進(jìn)行視頻通訊,也可邀請(qǐng)多名好友開(kāi)啟在線視頻會(huì)議。這款軟件最大的特性在于我們能夠通過(guò)訪問(wèn)局域網(wǎng)的方式來(lái)滿足各種交互需求且節(jié)省數(shù)據(jù)流量,適用于高校、企業(yè)、商城以及其它有無(wú)線局域網(wǎng)覆蓋的各大場(chǎng)所,這款軟件簡(jiǎn)單實(shí)用,穩(wěn)定的后臺(tái)服務(wù)能夠讓用戶隨時(shí)隨地與好友進(jìn)行視頻通訊。

2 成果展示及介紹

2.1 主界面

如圖l所示。

2.2系統(tǒng)架構(gòu)

(1)視頻聊天一方客戶端發(fā)出邀請(qǐng)(發(fā)送IP及端口),然后服務(wù)器在此局域網(wǎng)內(nèi)檢索該IP地址,一旦檢索到即鎖定IP并發(fā)送端口號(hào),接收端接收到邀請(qǐng)后,即做出應(yīng)答(接受/拒絕),拒絕則關(guān)閉連接,接受則開(kāi)啟連接并互相發(fā)送數(shù)據(jù)給對(duì)方,實(shí)現(xiàn)視頻聊天。

(2)視頻會(huì)議由發(fā)送端客戶端開(kāi)啟視頻會(huì)議號(hào)(組播IP地址段),開(kāi)啟時(shí)即開(kāi)始發(fā)送數(shù)據(jù)到服務(wù)器端f不管有沒(méi)有終端客戶端連入),開(kāi)啟組播后,多個(gè)終端客戶端可以通過(guò)加入同一組播IP而開(kāi)始接收發(fā)送端發(fā)送的數(shù)據(jù)信息,實(shí)現(xiàn)視頻會(huì)議。3詳細(xì)分析硬件與軟件模塊

3.1 Wi-Fi

3.1.1 Wi-Fi程序模塊

(1)開(kāi)源庫(kù)wpa_supplicant

一個(gè)開(kāi)源庫(kù),加入到Android源碼中,經(jīng)過(guò)修改后成為Android實(shí)現(xiàn)Wi-Fi功能的基礎(chǔ)。它的代碼位于./external/wpa_supplicant文件夾中,主要用C和C++寫(xiě)成,實(shí)現(xiàn)了從上層接到命令后,發(fā)送給硬件驅(qū)動(dòng)程序,接著操作硬件完成需要的操作,這里是通過(guò)socket來(lái)與硬件驅(qū)動(dòng)進(jìn)行通信的。

(2)硬件驅(qū)動(dòng)程序

前文所說(shuō)的wpa_supplicant,與之通信的硬件驅(qū)動(dòng)的代碼位于./hardware/libhardware_legacy/wifi/wifi.e中。

(3)JNI部分

首先簡(jiǎn)要介紹一下JNI,JNI是JavaNativelnterface的縮寫(xiě),它實(shí)現(xiàn)了Java代碼與其他代碼進(jìn)行交互,使得在Java虛擬機(jī)中運(yùn)行的java代碼能夠與用其他語(yǔ)言編寫(xiě)的應(yīng)用程序和庫(kù)進(jìn)行交互。在Android中,JNI可以讓Java程序調(diào)用C程序。

與Wi-Fi相關(guān)的JNI代碼位于./frameworks/base/core/jni/android_net_wifi_Wifi.cpp中。

(4)Wi-Fi API部分

這部分源代碼使用Java完成了對(duì)Wi-FiAPI的封裝,使應(yīng)用程序可以使用Wi-Fi功能,它們位于frameworks/base/services/java/com/android/server/和frameworks/base/wifi/java/android/net/wifi/中。

(5)Wi-Fi Settings應(yīng)用程序部分

這是Android自帶的一個(gè)應(yīng)用程序,在手機(jī)的Settings中,它可以讓用戶手動(dòng)打開(kāi)或關(guān)閉Wi-Fi功能。當(dāng)用戶打開(kāi)Wi-Fi功能后,它會(huì)自動(dòng)搜索周?chē)臒o(wú)線網(wǎng)絡(luò),并以列表的形式顯示、供用戶選擇,默認(rèn)會(huì)連接用戶上一次成功連接的無(wú)線網(wǎng)絡(luò)。這部分代碼位于./Packages/apps/Settings/src/com/android/settings/wifi中。

3.2 Wi-Fi執(zhí)行過(guò)程

3.2.1 從Settings中啟動(dòng)Wi-Fi

當(dāng)用戶按下Wi-Fi按鈕后,Android調(diào)用WifiEnabler的onPreferenceChange,再由WifiEnabler調(diào)用WifiManager的setWifiEnabled接口函數(shù),通過(guò)AIDL,調(diào)用WifiService的setWifiEnabled函數(shù),WifiService接著向自身發(fā)送一條MESSAGE_ENABLE_WIFI消息,在處理該消息的代碼中做真正的使能工作:首先裝載WIFI內(nèi)核模塊(該模塊的位置硬編碼為”/system/lib/modules/wlan.ko”),然后啟動(dòng)wpa_supplicant(配置文件硬編碼為”/data/misc/wifi/wpa_supplicant.conf\"),再通過(guò)WifiStateTracker啟動(dòng)WifiMonitor中的監(jiān)視線程。

當(dāng)成功使能后,廣播發(fā)送WIFISTATE_CHANGED_ACTION這個(gè)Intent通知外界Wi-Fi已經(jīng)成功使能。WifiEnabler創(chuàng)建的時(shí)候就會(huì)向Android注冊(cè)接收

WIFI_STATE_CHANGED_ACTION,因此它會(huì)收到該Intent,從而開(kāi)始掃描。

3.2.2 查找AccessPoint(AP)

掃描的入口函數(shù)是WifiService的startScan,它往wpa_supplicant發(fā)送SCAN命令。當(dāng)wpa_supplicant處理完SCAN命令后,它會(huì)向控制通道發(fā)送事件通知掃描完成,wifi_wait_ for_event函數(shù)會(huì)接收到該事件,由此WifiMonitor中的MonitorThread會(huì)被執(zhí)行處理這個(gè)事件,WifiStateTracker接著廣播SCANRESULTS_AVAILABLE_ACTION這個(gè)Intent,WifiLayer注冊(cè)了接收SCANRESULTS_AVAILABLE_ACTION這個(gè)Intent,所以它的相關(guān)處理函數(shù)handleScanResultsAvailable會(huì)被凋用,在該函數(shù)中拿到SCAN的結(jié)果f最終是往wpa_supplicant發(fā)送SCAN RESULT命令并讀取返同值來(lái)實(shí)現(xiàn)的)。

對(duì)每一個(gè)掃描返同的AP,WifiLayer會(huì)調(diào)用WifiSettings的onAccessPointSetChanged函數(shù),從而最終把該AP加到GUI顯示列表中。

3.2.3 連接AP

當(dāng)用戶在AcessPointDialog中選擇好加密方式和輸入密鑰之后,再點(diǎn)擊連接按鈕,Android就會(huì)去連接這個(gè)AP。

WifiLayer會(huì)先檢測(cè)這個(gè)AP是不是之前被配置過(guò),這個(gè)是通過(guò)向wpa_supplicant發(fā)送LIST_NETWORK命令并且比較返同值來(lái)實(shí)現(xiàn)的,如果wpa_supplicant沒(méi)有這個(gè)AP的配置信息,則向wpa_supplicant發(fā)送ADD_NETWORK命令來(lái)添加詼AP,ADD_NETWORK命令返回一個(gè)ID,WifiLayer再用這個(gè)返回的ID作為參數(shù)向wpa_supplicant發(fā)送ENABLE_NETWORK命令,從而讓wpa_supplicant去連接該AP。

3.2.4 配置lP地址

當(dāng)wpa_supplicant成功連接上AP之后,它向控制通道發(fā)送事件通知連接上AP了,wifi_wait_for_event函數(shù)接收到該事件,WifiMonitor中的MonitorThread被執(zhí)行來(lái)處理這個(gè)事件,WifiMonitor再調(diào)用WifiStateTracker的notifyStateChange, WifiStateTracker接著往自身發(fā)送EVENT_DHCP_START消息啟動(dòng)DHCP去獲取IP地址,然后再?gòu)V播發(fā)送NETWORK_STATE_CHANGED_ACTION這個(gè)Intent。

WifiLayer注冊(cè)了接收NETWORK_STATE_CHANGED_ACTION這個(gè)Intent,所以它的相關(guān)處理函數(shù)handleNetworkStateChanged會(huì)被調(diào)用,當(dāng)DHCP拿到IP地址之后,會(huì)再發(fā)送EVENT_DHCP_SUCCEEDED消息,WifiLayer處理EVENT_DHCP_SUCCEEDED消息,會(huì)再次廣播發(fā)送NETWORK_STATE_CHANGED_ACTION這個(gè)Intent,這次帶上完整的IP地址信息。至此為止,整個(gè)連接過(guò)程完成。

3.3 相機(jī)

Android的Camera包含取景器(viewfinder)和拍攝照片的功能。目前Android發(fā)布版的Camera程序功能比較簡(jiǎn)單,其程序的架構(gòu)分成客戶端(Client)和服務(wù)器(Server)兩個(gè)部分,它們建立在Android的進(jìn)程間通訊Binder的結(jié)構(gòu)上。

以開(kāi)源的Android為例,Camera的代碼主要在以下的目錄中:

Camera的JAVA程序的路徑:

packages/apps/Camera/src/com/android/camera/

其中Camera.java是主要實(shí)現(xiàn)的文件

frameworks/base/core/java/android/hardware/Camera.java

這個(gè)類(lèi)是和JNI中定義的類(lèi)是一個(gè),有些方法通過(guò)JNI的方式調(diào)用本地代碼得到,有些方法自己實(shí)現(xiàn)。

Camera的JAVA本地調(diào)用部分(JNI):

frameworks/base/core/jni/android_hardware_Camera.cpp

這部分內(nèi)容編譯成為目標(biāo)是libandroid runtime.SO。

主要的頭文件在以下的目錄中:

frameworks/base/include/ui/

Camera底層庫(kù)在以下的目錄中:

frameworks/base/libs/ui/

這部分的內(nèi)容被編譯成庫(kù)libui.SO。

Camera服務(wù)部分:

frameworks/base/camera/libcameraservice/

這部分內(nèi)容被編譯成庫(kù)libcameraservice.SO。

為了實(shí)現(xiàn)一個(gè)具體功能的Camera,在最底層還需要一個(gè)硬件相關(guān)的Camer庫(kù)(例如通過(guò)調(diào)用video forlinux驅(qū)動(dòng)程序和jpeg編碼程序?qū)崿F(xiàn)),而這個(gè)庫(kù)最終將會(huì)被Camera的服務(wù)庫(kù)libcameraservice.so調(diào)用。

4 實(shí)驗(yàn)結(jié)果與比較

這款視頻聊天軟件——“蛙醋”能夠穩(wěn)定地完成各項(xiàng)功能,可以完美地實(shí)現(xiàn)視頻聊天和視頻會(huì)議等功能,經(jīng)過(guò)反復(fù)測(cè)試以及調(diào)試后,程序中的BUG也已基本得到有效解決。一開(kāi)始在與其他視頻聊天平臺(tái)的對(duì)比測(cè)試中,我們發(fā)現(xiàn)“蛙酷”視頻傳輸存在延遲,延遲時(shí)間大約為0.8至1.0秒,視頻畫(huà)面呈現(xiàn)出較多的噪點(diǎn),在較差的網(wǎng)絡(luò)環(huán)境下也頻繁出現(xiàn)視頻畫(huà)面卡頓的現(xiàn)象。對(duì)于這一系列問(wèn)題,在查閱相關(guān)資料后,我們發(fā)現(xiàn)主要問(wèn)題在于我們沒(méi)有選擇最佳的視頻解碼,還有一個(gè)問(wèn)題是我們沒(méi)有對(duì)網(wǎng)絡(luò)傳輸進(jìn)行優(yōu)化。在進(jìn)行了一系列優(yōu)化后,視頻效果已經(jīng)顯著改善,達(dá)到視頻聊天標(biāo)準(zhǔn)。

主站蜘蛛池模板: 亚洲人成在线精品| 国产一区二区丝袜高跟鞋| 中国一级特黄视频| 在线亚洲精品福利网址导航| 欧美怡红院视频一区二区三区| 亚洲啪啪网| 久久情精品国产品免费| 国产欧美视频在线观看| a级毛片免费在线观看| 69视频国产| 一区二区自拍| 日韩午夜福利在线观看| 国产 在线视频无码| 国产在线欧美| 极品尤物av美乳在线观看| 亚洲精品爱草草视频在线| 久久久久久高潮白浆| 国产视频入口| 99热这里只有精品久久免费| 色婷婷天天综合在线| 天天躁狠狠躁| 99热这里只有精品免费| 日韩欧美中文| 免费A级毛片无码免费视频| 日韩欧美国产三级| 国模视频一区二区| 欧美日韩在线亚洲国产人| 99尹人香蕉国产免费天天拍| 国产激爽大片高清在线观看| 亚洲看片网| 伊人精品成人久久综合| 日韩av电影一区二区三区四区| 免费无码又爽又刺激高| 国产黑丝视频在线观看| 伊人蕉久影院| 亚洲美女一区| 精品国产福利在线| 日韩精品亚洲一区中文字幕| 54pao国产成人免费视频| 国产高清国内精品福利| 日本色综合网| 欧美日韩中文字幕在线| 欧美日韩综合网| 97在线免费| 亚洲视频在线青青| 色哟哟精品无码网站在线播放视频| 国产精选自拍| 又爽又大又黄a级毛片在线视频| 日韩精品高清自在线| a毛片基地免费大全| 一级全黄毛片| 亚洲成av人无码综合在线观看| 国产综合精品一区二区| 欧美a在线视频| 99成人在线观看| 一级福利视频| 日本人妻丰满熟妇区| 国产真实乱人视频| 国产成人啪视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 又黄又湿又爽的视频| 老司机久久99久久精品播放| 亚洲高清在线天堂精品| 国产激爽大片高清在线观看| 国产精品主播| 在线观看国产一区二区三区99| 欧美日韩91| 98精品全国免费观看视频| 国产精品综合色区在线观看| 欧美区国产区| 国产男女免费视频| 伊人网址在线| 在线国产91| 国内精品久久久久鸭| 色综合久久久久8天国| 国产自视频| 欧美中文字幕在线视频| 亚洲精品国产日韩无码AV永久免费网| 精品自窥自偷在线看| 国产手机在线观看| www.亚洲国产| 在线高清亚洲精品二区|