亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android平臺的在線教育直播系統(tǒng)設(shè)計

        2019-02-25 13:16:18許志明瞿文政陳俊填王偉楠萬智萍
        關(guān)鍵詞:教師

        許志明,瞿文政,陳俊填,王偉楠,萬智萍

        (中山大學(xué)新華學(xué)院,廣東 廣州 510520)

        0 引 言

        隨著3G、4G移動互聯(lián)網(wǎng),視頻編解碼技術(shù)的發(fā)展,以實時性為核心的手機(jī)視頻直播系統(tǒng)在應(yīng)用市場上越來越流行。當(dāng)前平臺都是以娛樂性直播為主,通過各種方式吸引觀眾的眼球來增加觀看人數(shù),而以在線直播教育為主的平臺比較短缺。基于此,文中設(shè)計了一種專門在Android平臺上使用的在線直播教育系統(tǒng)[1]。

        該系統(tǒng)通過手機(jī)攝像頭采集視頻信息,并通過無線網(wǎng)絡(luò)或移動網(wǎng)絡(luò)傳輸?shù)椒?wù)器,服務(wù)器轉(zhuǎn)發(fā)視頻至另一接收端[2]。文中先介紹了RTMP協(xié)議的可行性,然后再描述Android的開發(fā)框架和開發(fā)流程,并在Android Studio 2.1.2開發(fā)環(huán)境下采用模塊化編程的思想進(jìn)行編程開發(fā),重點(diǎn)研究整個在線直播教育系統(tǒng)的設(shè)計思路、實現(xiàn)方法以及實現(xiàn)效果。

        1 實時信息傳輸協(xié)議(RTMP)

        RTMP協(xié)議的全稱是real time message protocol,即實時信息傳輸協(xié)議,它是Adobe公司為服務(wù)器和Flash播放器之間視頻、音頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議[3]。而在客戶端方面,其中最知名也最受歡迎的RTMP客戶端是Adobe公司的Adobe Flash Player,目前主流的媒體流傳輸協(xié)議便是RTMP,廣泛應(yīng)用于直播領(lǐng)域,可以說市場上的直播平臺大都采用RTMP協(xié)議進(jìn)行開發(fā)。文中也使用RTMP進(jìn)行直播平臺的開發(fā)。RTMP協(xié)議是傳輸層協(xié)議,是基于TCP的協(xié)議。創(chuàng)建的是長連接。它像一個用來裝數(shù)據(jù)包的容器,這些數(shù)據(jù)可以是AMF格式的數(shù)據(jù),也可以是FLV中的視/音頻數(shù)據(jù)。

        RTSP是一種實時流媒體傳輸協(xié)議,專門用于在IP網(wǎng)絡(luò)上傳送實時多媒體數(shù)據(jù)。RTSP在數(shù)據(jù)傳輸時通過TCP或RTP協(xié)議。由于RTSP是雙向的,因此可以對流媒體提供播放、暫停、快進(jìn)、慢退等操作。文中選取RTSP作為流媒體傳輸協(xié)議[4]。與RTMP相比,RTSP具有更高的實時性。因此要達(dá)到延遲1 s甚至更短時,只有RTSP可以滿足要求。

        2 Android平臺

        2.1 Android的開發(fā)環(huán)境

        隨著移動互聯(lián)網(wǎng)技術(shù)和通信技術(shù)的發(fā)展,Android平臺已經(jīng)成為智能手機(jī)中用戶量最多的操作系統(tǒng),且能提供良好的人機(jī)界面。更多的開發(fā)者選擇Android平臺進(jìn)行開發(fā)[5]。

        Android是Google于2007年1月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件[6]。

        Android平臺是開放的,開發(fā)的平臺允許任何移動終端廠商加入到Android聯(lián)盟中來[7]。顯著的開放性可以使其擁有更多的開發(fā)者。隨著用戶和應(yīng)用程序的日益豐富,Android平臺很快走向成熟。目前Android系統(tǒng)已成為全球最受歡迎的智能手機(jī)平臺,Android系統(tǒng)不但應(yīng)用于智能手機(jī),也在平板電腦市場急速擴(kuò)張。

        在2013年之前Android應(yīng)用的開發(fā)工具是Eclipse+ADT,2013年Google在I/O大會上發(fā)布了針對Android應(yīng)用的開發(fā)工具Android Studio,它是一款集成開發(fā)環(huán)境軟件,提供了Android應(yīng)用開發(fā)和調(diào)試工具。和Eclipse+ADT相比,Android Studio擁有漂亮的UI界面,操作方便快捷,整合了Gradle構(gòu)建工具使得開發(fā)更智能、更方便。

        2.2 Android MVC框架

        MVC框架是model-view-controller的縮寫。作為一種設(shè)計模式,它強(qiáng)制性地將一個應(yīng)用程序拆分成模型、視圖和控制器三個核心組件,并讓其處理各自的任務(wù),真正實現(xiàn)了高內(nèi)聚、低耦合的靈活架構(gòu),大大降低了程序的復(fù)雜性,提高了可擴(kuò)展性及可重用性[7]。

        模型、視圖、控制器三者之間的關(guān)系和各自的主要功能如圖1所示。

        圖1 MVC組件類型的關(guān)系和功能

        3 設(shè)計思路

        3.1 需求分析

        根據(jù)教師的教學(xué)需求以及該在線直播平臺的設(shè)計初衷,在線直播平臺應(yīng)該達(dá)到的目標(biāo)有以下幾點(diǎn):

        (1)直播實時性要好,直播延遲會影響觀眾觀看體驗,盡可能降低視頻卡頓及延遲是在線直播教育系統(tǒng)的核心[8]。

        (2)對所有直播教師進(jìn)行統(tǒng)計,提供教師查找功能。觀眾可以在教師列表中查看所有的教師并可從中選出最適合的教師。

        (3)具有統(tǒng)計排名功能,能夠?qū)⒅辈サ南嚓P(guān)數(shù)據(jù)進(jìn)行統(tǒng)計排名并將排名靠前的推薦給觀眾。

        (4)具有視頻觀看功能,在觀看直播之余還可以觀看視頻回顧直播內(nèi)容。

        根據(jù)上述需求,設(shè)計的在線直播平臺架構(gòu)如圖2所示[9]。

        圖2 在線直播平臺架構(gòu)

        (1)軟件啟動時先進(jìn)入到啟動視圖層中的歡迎界面Welcome Activity,在歡迎界面中判斷是直接進(jìn)入導(dǎo)航視圖層還是跳轉(zhuǎn)至登錄界面。

        (2)導(dǎo)航視圖層主要是提供給用戶一個直觀的功能選擇頁面,默認(rèn)顯示的是首頁,在首頁中有熱門的直播視頻推薦、教師列表、排行榜、視頻列表的跳轉(zhuǎn)選擇。用戶可以通過點(diǎn)擊導(dǎo)航欄中的按鈕轉(zhuǎn)換不同的導(dǎo)航頁面。

        (3)應(yīng)用視圖層是根據(jù)導(dǎo)航視圖層跳轉(zhuǎn)的選擇進(jìn)行相應(yīng)功能的實現(xiàn)。

        3.2 關(guān)鍵技術(shù)

        該在線直播平臺在開發(fā)過程中主要用到了以下關(guān)鍵技術(shù):

        (1)導(dǎo)航視圖層將導(dǎo)航分為首頁、消息、直播、個人四個頁面。導(dǎo)航視圖層采用Activity內(nèi)嵌Fragment技術(shù)。在Activity中onTabSelected監(jiān)聽底部導(dǎo)航欄的點(diǎn)擊事件,根據(jù)點(diǎn)擊不同的按鈕Fragment會進(jìn)行相應(yīng)的變換以實現(xiàn)在不跳轉(zhuǎn)的情況下進(jìn)行不同頁面的顯示。

        (2)教師列表可以直觀地查看所有教師的基礎(chǔ)資料,具體是利用了RecyclerView控件和其適配器RecycleView.Adapter相結(jié)合的方式實現(xiàn)。當(dāng)用戶點(diǎn)擊教師的頭像時就會觸發(fā)相應(yīng)的OnClick事件,根據(jù)相應(yīng)教師的隱藏ID跳轉(zhuǎn)至其詳細(xì)介紹頁面。

        (3)視頻播放功能是為了方便用戶回顧之前的內(nèi)容,文中利用自定義VideoView來實現(xiàn)此功能。VideoView是安卓自帶的播放器控件,繼承于SurfaceView主要的功能,用于顯示視頻文件。通過自定義VideoView修改它的高度和寬度,設(shè)置其OnTouch事件來實現(xiàn)手勢的控制,使用TextView作為時間的顯示、SeekBar作為進(jìn)度條、ImageView作為控制開關(guān)。

        (4)直播功能是借助于RTMP協(xié)議實現(xiàn)的。主要流程是直播的推流端將視頻推流到媒體服務(wù)器,媒體服務(wù)器再轉(zhuǎn)發(fā)給用戶觀看的拉流端,而視頻的推流需要采集直播的視頻及音頻,對其進(jìn)行封裝處理后才能推流至媒體服務(wù)器[10]。

        用戶觀看的拉流端是用于播放RTMP媒體流的視頻播放器,需采用第三方框架實現(xiàn),常用的視頻框架有Vitamio和ijkplayer。Vitamio在其商業(yè)化后對個人開發(fā)者是免費(fèi)的,對企業(yè)是收費(fèi)的,未避免侵權(quán)問題建議采用ijkplaery。文中采用ijkplayer框架,通過封裝其播放事件實現(xiàn)RTMP媒體流的播放[11]。

        3.3 系統(tǒng)流程

        在啟動軟件后先進(jìn)行登錄檢測,只有登錄后才能使用軟件的功能,登錄流程如圖3所示。

        圖3 登錄流程

        通過登錄之后默認(rèn)進(jìn)入的是首頁,用戶可以通過點(diǎn)擊軟件下方的底部導(dǎo)航欄進(jìn)行頁面切換,也可以點(diǎn)擊頁面中的按鈕使用相應(yīng)的功能。系統(tǒng)流程如圖4所示。

        4 系統(tǒng)的設(shè)計與實現(xiàn)

        4.1 登錄的設(shè)計與實現(xiàn)

        為了實現(xiàn)開啟軟件時先進(jìn)入歡迎登陸界面,首先需要在AndroidManifest.xml文件中的Welcome Activity下放置以及屬性,在歡迎界面的Activity類中通過延時函數(shù)Timer()設(shè)置為2 s后跳轉(zhuǎn)至登錄界面。

        對于登錄界面的設(shè)計,采用豎狀結(jié)構(gòu)排列,界面從上倒下依次為:Logo、賬號、密碼、登錄、注冊。賬號和密碼使用TextInputLayout內(nèi)嵌EditText。在賬號的EditText中設(shè)置其hint屬性為UserName,而密碼的EditText的hint屬性設(shè)置為Password。

        通過登錄按鈕的OnClick事件對賬號密碼進(jìn)行驗證,若通過驗證則進(jìn)入主頁面,不通過則出現(xiàn)失敗提示。注冊為Text控件顯示通過設(shè)置其OnClick事件實現(xiàn)點(diǎn)擊跳轉(zhuǎn)至注冊頁面。

        4.2 教師列表及教師資料的設(shè)計與實現(xiàn)

        為了方便用戶選擇喜歡的教師,以豎形結(jié)構(gòu)的方式展示所有教師的基本資料以供用戶選擇。教師列表使用了RecyclerView控件,RecyclerView可以理解為升級版的ListView,擁有比ListView更好的定制功能,在教師列表的Activity類中設(shè)置RecyclerView的LayoutManager為LinerLayoutManager便可實現(xiàn)豎形排列,在教師列表的Item設(shè)計中,采用傳統(tǒng)的頭像、名字、簡介作為一個教師Item,其中頭像使用圓形的ImageView的設(shè)計與實現(xiàn)。

        圖4 系統(tǒng)流程

        在教師列表選中點(diǎn)擊想查看的教師頭像時,會觸發(fā)教師列表的Activity中OnItemClick的響應(yīng)事件跳轉(zhuǎn)至相應(yīng)的教師資料。從教師列表跳轉(zhuǎn)至教師資料的過程中采用了過渡動畫中的共享元素變換,只需給教師Item的ImageView添加transitionName屬性以及在使用跳轉(zhuǎn)的方法中使用startActivity傳入?yún)?shù)Activity、ImageView、transitionName,便可實現(xiàn)共享元素交換。教師資料是教師的個人空間,主要內(nèi)容為教師的個人簡介及其視頻的播放地址。教師資料的設(shè)計采用CoordinatorLayout布局,在內(nèi)部使用AppBarLayout作為狀態(tài)欄內(nèi)嵌CollapsingtoolbarLayout+Toolbar+ImageView,其中ImageView為教師的圖片與教師列表中的圓形頭像形成共享元素交換的過渡動畫效果,默認(rèn)顯示的是教師圖片,當(dāng)用戶往下拉時教師圖片會逐漸消失最后變成Toolbar,而CollapsingtoolbarLayout則是用來存放ImageView以及Toolbar的。在AppBarLayout下方為使用RecyclerView制作的自我簡介以及視頻列表。

        4.3 視頻播放的設(shè)計與實現(xiàn)

        視頻播放是用于播放教師上傳的視頻,通過自定義VideoView以及重寫播放控制器來實現(xiàn)。首先定義一個繼承VideoView的類MyVideo并重寫onMeasure設(shè)置大小,在視頻播放的layout文件中將MyVideo放置在RelativeLayout布局中并使用Button作為播放暫停開關(guān)、SeekBar作為進(jìn)度條、TextView作為時間顯示、ImageView作為全屏開關(guān)。

        在視頻播放的Activity類中,通過Button的onClick事件響應(yīng)視頻的播放與暫停,Handler來控制進(jìn)度條的運(yùn)行以及時間的顯示,通過點(diǎn)擊ImageView的點(diǎn)擊事件判斷視頻的橫豎屏狀態(tài)而后改變手機(jī)的橫豎屏狀態(tài),從而達(dá)到全屏播放與半屏播放切換的效果。通過設(shè)置RelativeLayout的layout_below屬性使得用于放置簡介及評論的控件放置于視頻播放器下方,視頻的簡介及評論使用ViewPager與Fragment結(jié)合的方法實現(xiàn)滑動切換簡介評論。

        4.4 直播推流端與拉流端的設(shè)計與實現(xiàn)

        直播是該在線直播平臺的核心,直播功能分為兩部分,一部分是直播者的推流端,另一部分是觀看者的拉流端。

        為了解決數(shù)據(jù)同步的問題,在移動終端上通常采用兩種方法。一種是移動終端定時去服務(wù)器上查詢數(shù)據(jù),也就是Pull;另一種是移動終端與服務(wù)器之間維護(hù)一個TCP長連接,當(dāng)服務(wù)器有數(shù)據(jù)時,實時推送到移動終端,即Push。

        推流端的設(shè)計是使用SurfaceView顯示攝像頭拍攝的畫面,而聲音則是直接調(diào)用手機(jī)自帶的麥克風(fēng)獲取。使用SurfaceView顯示拍攝的畫面需要獲得使用攝像頭的權(quán)限以及初始化攝像頭,同樣聲音獲取也需先獲取使用麥克風(fēng)的權(quán)限。

        獲取到畫面及聲音后分別賦予到畫面的緩沖數(shù)組videoDataQueue和聲音的緩沖數(shù)組audioDataQueue,再調(diào)用while函數(shù)每隔一定的時間從畫面和聲音的緩沖數(shù)組獲取數(shù)據(jù)發(fā)送至媒體服務(wù)器。

        推流端的布局為任意布局,在其中除去SurfaceView外還設(shè)置了Button用于切換前后攝像頭,只需在Button的響應(yīng)事件中先判斷當(dāng)前的攝像頭位置再對Camera進(jìn)行更改,若更改為CAMERA_FACING_BACK是后置攝像頭,CAMERA_FACING_FRONT為前置攝像頭。

        觀眾觀看直播使用的拉流端是使用ijkplayer開發(fā)的,使用ijkplayer需先從官網(wǎng)下載源碼再通過編碼,若能夠在xml中調(diào)用IjkVideoView控件,則說明成功調(diào)用ijkplayer[12]。

        ijkplayer有許多調(diào)用函數(shù),為了使用方便建議將需要使用的函數(shù)封裝起來。封裝好后在推流端的Activity類中直接調(diào)用封裝中的play()函數(shù),在參數(shù)為媒體服務(wù)器的地址便可以實現(xiàn)RTMP媒體流的播放。

        5 實驗與分析

        文中搭建的在線直播教育平臺是基于Android系統(tǒng)的,直播測試最基本的需求是兩臺手機(jī)。在開啟媒體服務(wù)器后,先開啟直播的推流端賦予推流端調(diào)用攝像頭與麥克風(fēng)的權(quán)限便可以將獲取到的視頻與聲音發(fā)送至媒體服務(wù)器。推流端開始發(fā)送媒體流時便可以打開拉流端,拉流端從媒體服務(wù)器接收到數(shù)據(jù)后便會播放媒體流實現(xiàn)在線直播。測試結(jié)果如圖5所示。

        圖5 手機(jī)端實驗采集界面

        6 結(jié)束語

        文中搭建的在線直播平臺,是針對在校大學(xué)生以及有空暇時間的社會人士開發(fā)的。在網(wǎng)絡(luò)發(fā)達(dá)的現(xiàn)代社會,直播的應(yīng)用不應(yīng)該只限于娛樂休閑,而教育也不應(yīng)局限于課堂教學(xué)[13]。基于RTMP協(xié)議開發(fā)的在線直播平臺將直播應(yīng)用于教育,大大節(jié)省了教育的成本,使得教育更加方便。在學(xué)生沒有課的時候或者是社會人員閑暇的時候,便可以使用在線教育平臺學(xué)習(xí)自己喜歡的內(nèi)容,從而滿足了大部分人群的需求??梢哉f直播是現(xiàn)代教育突破時間和空間限制的新方法,文中搭建的在線教育直播平臺具有很好的使用價值。

        猜你喜歡
        教師
        最美教師
        快樂語文(2021年27期)2021-11-24 01:29:04
        大山里的教師
        黃河之聲(2021年5期)2021-05-15 02:31:24
        盡責(zé)教師
        幽默大師(2020年11期)2020-12-08 12:01:58
        教師備課“十要”
        教書育人(2020年11期)2020-11-26 06:00:20
        教師如何說課
        甘肅教育(2020年22期)2020-04-13 08:11:16
        未來教師的當(dāng)下使命
        如何破解“教師的煩惱”
        教育家(2018年41期)2018-11-20 11:49:54
        教師贊
        不能容忍這樣的教師
        談教師的有效講解
        散文百家(2014年11期)2014-08-21 07:17:08
        亚洲精品久久久久久动漫| 青草久久婷婷亚洲精品| 久久婷婷五月综合色高清| 成人自拍偷拍视频在线观看| 国产自拍偷拍精品视频在线观看 | 在线观看国产精品一区二区不卡| 亚洲一区二区三区18| 久久久久高潮综合影院| 久激情内射婷内射蜜桃人妖| 91精彩视频在线观看| 狼人av在线免费观看| 国产精品狼人久久影院软件介绍 | 日韩精品网| 亚洲一区二区三区精彩视频| 成人免费播放视频777777| 又白又嫩毛又多15p| 99精品久久久中文字幕| av中文字幕性女高清在线| 婷婷四虎东京热无码群交双飞视频 | 国产成人精品一区二区20p| 男人靠女人免费视频网站| jjzz日本护士| 日韩国产一区二区三区在线观看| 日产乱码一二三区别免费l| 51久久国产露脸精品国产| 国产成社区在线视频观看| 美女免费观看一区二区三区| 波多野结衣久久精品99e| 日产精品久久久久久久| 在线亚洲精品国产成人二区| 少妇激情一区二区三区99| 老熟妇仑乱视频一区二区| 国产精品天天看大片特色视频| 亚洲成熟丰满熟妇高潮XXXXX| 麻豆av毛片在线观看| 国产无遮挡aaa片爽爽| 国产乱妇乱子视频在播放| 国内精品久久久久久无码不卡| 日本护士一区二区三区高清热线| 国产剧情一区二区三区在线| 国精品无码一区二区三区在线蜜臀 |