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

Android平臺的VLC播放器實現(xiàn)機制研究

2015-09-12 06:42:28陳建明
關鍵詞:設置多媒體數(shù)據(jù)庫

陳建明

(紹興市人力資源和社會保障局 信息管理中心,紹興312000)

陳建明(工程師),主要研究方向為多媒體通信、網(wǎng)絡安全。

引 言

VLC(Video LAN Client)是一款開源軟件,其安裝簡單且運行穩(wěn)定,支持多種平臺(包括 Windows、Linux、Mac、Unix)。VLC Media Player媒體播放器是為多媒體播放而服務的軟件,系統(tǒng)占用率非常低,支持大多數(shù)的主流音視頻格式,如MPEG、WMV、MP4、MOV、3GP、FLV(Flash)等。既可播放DVD 影碟,又支持在線媒體播放。

目前VLC已完全支持中文,被國內(nèi)用戶廣泛使用,也被越來越多Android平臺愛好者所關注[1]。在智慧校園和數(shù)字化校園的建設中,隨著多媒體通信的不斷應用,在網(wǎng)絡教學和遠程教育過程中應用移植和擴展VLC源碼的方案越來越多[2]。本項目是開發(fā)一款基于Android平臺的學習資源視頻點播平臺,以擴展遠程教育中對移動學習的支持方式。通過對VLC源碼深入分析和核心模塊移植而進行二次開發(fā),利用其良好的多媒體格式支持庫和UI框架,大大加快了項目的開發(fā)進度。

1 Android平臺依賴庫編譯

由于VLC的跨平臺性,在多個平臺下都可成功編譯和移植,本次項目討論在Ubuntu 12.10環(huán)境下的VLC庫生成過程。首先系統(tǒng)環(huán)境需要安裝ant、gawk、libtool、m4、patch、pkg-config、ragel等 工 具,使 用“apt-get builddep vlc”命令安裝VLC相關依賴庫,完成后安裝JDK、Android SDK、NDK,并在/etc/profile中設置相應的環(huán)境變量和CPU 類型,最后使用“sh compile.sh”命令開始編譯。成 功 后 在vlc-android/libs/armeabi目 錄 下 生 成libiomxgingerbread.so、libiomx-h(huán)c.so、libiomx-ics.so和libvlcjni.so四個動態(tài)庫。需要注意的是,盡量保證Ubuntu系統(tǒng)版本和JDK、SDK、NDK 版本為最新,編譯過程如遇無法下載依賴文件導致終止,則手動下載該文件后存放到android/vlc/contrib/tarballs/目錄下。

當VLC的Android工程在eclipse中編譯時,需要同時導入ActionBarSherlock、SlidingMenu和WheelView 三個依賴庫的工程,并在主工程屬性中設置正確的依賴庫路徑。如出現(xiàn)無法生成目標版本的apk文件錯誤,有可能是由于SDK版本與VLC工程文件中目標版本不符,需要修改android-vlc目錄下project.properties文件中的target值。

2 源碼實現(xiàn)分析

從UI設計模式和底層數(shù)據(jù)庫操作兩個方面對Android平臺上的VLC播放器實現(xiàn)機制進行分析。在編譯過程中可以發(fā)現(xiàn),整個VLC工程除了C代碼與播放相關的編解碼庫之外,還有3個與UI設計緊密相關的依賴工程。

2.1 UI設計分析

VLC在Android終端上的運行界面(如圖1所示)非常簡潔、美觀、易于操作,主要由操作欄、側(cè)邊導航、主框架構(gòu)成。

圖1 VLC主操作界面

操 作 欄(Action bar)是Android用戶界面中最經(jīng)典的用戶界面設計模式之一[3],位 于 用 戶 界 面 視圖中的頂欄(如圖1 中標識1),左邊由應用圖標和上下文形式的操作按鈕組成,右邊包含了一個溢出菜 單。在 Android 3.0 Honeycomb 版本的SDK中添加了對操作欄的支持,在4.0 版本中加入了對手機操作欄的支持。這里使用了第三方開源庫ActionBarSherlock,能夠支持Android舊版本。

具體實現(xiàn)在prepareActionBar()函數(shù)里,先調(diào)用set-NavigationMode()接口設置操作欄的風格,支持標準、列表和標簽3種模式,這里先設置NAVIGATION_MODE_STANDARD值為標準模式,再調(diào)用setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE)接口顯示標題,最后調(diào) 用setDisplayHomeAsUpEnabled(true)顯 示Up 按鈕。當然,ActionBarSherlock還提供很多其他的設置以支持更復雜和個性化的設計,這里只描述與本項目相關的。

對于Android 3.0之后的版本,應用啟動時,如果附帶操作欄會在view 創(chuàng)建完成后調(diào)用onCreateOptions-Menu()來對Option Memu進行布局。這里的布局文件是R.menu.media_library,菜單項包括搜索、刷新等。需要注意的是,showAsAction屬性值ifRoom 能夠讓菜單根據(jù)操作欄右側(cè)的空間來響應式布局,根據(jù)屏幕尺寸動態(tài)調(diào)整顯示菜單項個數(shù)。

整個主框架分為左邊導航和右邊內(nèi)容顯示,該布局為一個全屏的FrameLayout。圖1 中標識2 部分是側(cè)邊導航面板,與儀表盤設計模式相比,提供了對媒體文件更直接的分類訪問。通過輕擊操作欄上的Up按鍵或者邊緣滑動手勢打開側(cè)邊導航面板。這里使用了開源庫Sliding-Menu項目實現(xiàn),導航通過mMenu.setBehindOffset()接口設置導航面板尺寸,為導航項設置容器,封裝到listview中,在SidebarAdapter類中可看到放入了Video、Audio等4個選擇項。右邊內(nèi)容顯示部分由R.layout.main布局,使用幀布局來局部刷新顯示內(nèi)容,定義了一個專用的幀框架作為片段的占位符,其ID 為fragment_placeholder。最后通過SlidingMenu的接口setMenu(sidebar)和setContent(main)來呈現(xiàn)。

主框架的內(nèi)容顯示就是圖1中標識3部分,在導航的listview 中注冊了點擊監(jiān)聽器OnItemClickListener(),其實現(xiàn)右側(cè)內(nèi)容顯示流程如圖2所示。

圖2 主框架內(nèi)容顯示流程

內(nèi)容顯示使用了片段(fragment)來制作響應式用戶界面。根據(jù)用戶點擊的導航項獲取不同的ID 標識,在連續(xù)2次輕擊過程中,多媒體文件有可能做了添加或刪除操作,所以需要把activity后退棧中的片段清空,然后根據(jù)ID號提交對應的片段來添加、刪除或替換。實現(xiàn)這些操作需要定義一個FramentManager實例,并能支持事務更改片段,這里只做了replace()操作。正是因為構(gòu)建了活動與片段交互的方法,才使多媒體文件的瀏覽過程具有了很大的靈活性。

2.2 多媒體文件的數(shù)據(jù)庫管理

Android系統(tǒng)自帶關系型數(shù)據(jù)庫SQLite,能輕松實現(xiàn)管理本地存儲的多媒體文件,包括音頻和視頻文件類型。VLC實現(xiàn)文件管理的功能包括按文件類型(音頻或視頻)、存儲目錄或者搜索過的歷史記錄來分別展現(xiàn)和管理,其功能實現(xiàn)的源文件主要包括MediaLibrary.java、Media-Database.java。

數(shù)據(jù)庫操作類DatabaseHelper繼承SQLiteOpenHelper輔助類來管理數(shù)據(jù)庫的創(chuàng)建和版本,實現(xiàn)對數(shù)據(jù)庫進行一些操作[4]。vlc_database數(shù)據(jù)庫創(chuàng)建的表包括媒體文件信息表Media_table、存放路徑表directories_table、播放排列表playlist_table、playlist_media_table和歷史查找表searchhistory_table五個表,與媒體文件信息相關的Media_table表內(nèi)容非常關鍵,各字段和數(shù)據(jù)類型如表1所列。

表1 Media_table表信息

利用adb調(diào)試程序可查看模擬器中數(shù)據(jù)庫的實際信息,如Media_table表中存儲的一條信息格式如下:

file:///mnt/sdcard/When%20You%20Believe.mp3|0|276148|1||When You Believe|Mariah Carey|R&b|Mariah Carey Story|0|0||-1|-2

媒體文件的信息獲取由Media類來實現(xiàn),通過調(diào)用libVLC.readTracksInfo(mLocation)接口把文件信息保存到TrackInfo類中。系統(tǒng)啟動時會在目錄/media/、/Android/data/和外部存儲SD卡上查找后綴是音頻或視頻的文件,讀取信息并保存到表Media_table中。libVLC類是底層VLC庫提供的播放接口,里面的方法是通過native關鍵字定義。

這正是利用VLC 庫來開發(fā)Android上播放器的優(yōu)點,JNI是雙向接口,不僅可以通過JNI在Java代碼中訪問Native模塊,還可以在Native代碼中嵌入一個JVM,并通過JNI訪問運行于其中的Java模塊,實現(xiàn)了Java代碼與Native代碼的互訪,提高了多媒體文件解碼和定位的效率。

基于5張表中的信息,上層可以實現(xiàn)按文件類型(音頻或視頻)檢索、按存儲目錄檢索、按歷史搜索行為檢索等,而且在音頻文件類型展示中還可以應用表中字段(如ARTIST,ALBUM,TITLE,GENRE)按類型對所有文件進行分門別類,還可以選擇按名字或長度進行排序,提供了良好的操作體驗。

系統(tǒng)查找所有媒體文件的具體實現(xiàn)在MediaLiarary類中,定義了內(nèi)部類GetMediaItemsRunnable開啟獨立線程,主要操作directories_table、media_table兩個表,實現(xiàn)流程如圖3所示。

圖3 多媒體文件搜索流程

結(jié) 語

本項目通過分析源代碼,從依賴庫編譯、UI設計和數(shù)據(jù)庫管理的文件表單設計等方面入手,理清了代碼組織結(jié)構(gòu)、設計思路和實現(xiàn)機制,對后續(xù)的VLC跨平臺移植和移動學習平臺的視頻點播系統(tǒng)開發(fā)具有很好的借鑒作用。

設計中需要考慮以下幾點:界面設計以易用性為重要品質(zhì),構(gòu)建心智模型,并以用戶為中心;恰當應用第三方開源庫;使用片段實現(xiàn)響應式用戶界面等。

[1]張曉霞.基于VLC 的校園信息發(fā)布系統(tǒng)[J].通信技術(shù),2011,44(7):86-88.

[2]賈友波.VLC Media Player在教學中的應用探索[J].中國教育現(xiàn)代裝備,2011,11(19):24-26.

[3]Juhani Lehtimaki.精彩絕倫的Android UI設計[M].王東明,譯.北京:機械工業(yè)出版社,2013.

[4]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2011.

猜你喜歡
設置多媒體數(shù)據(jù)庫
借助多媒體探尋有效設問的“四度”
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
多媒體在《機械制圖》課中的應用
消費導刊(2018年10期)2018-08-20 02:56:28
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
多媒體達人煉成記
河南電力(2016年5期)2016-02-06 02:11:40
本刊欄目設置說明
中俄臨床醫(yī)學專業(yè)課程設置的比較與思考
主站蜘蛛池模板: 黄色一及毛片| 制服丝袜一区| 欧美日韩中文国产| a级毛片一区二区免费视频| 亚洲资源站av无码网址| 国产美女久久久久不卡| 99在线视频免费观看| 国产男女免费视频| 老司机精品一区在线视频| 亚洲无码视频一区二区三区| 国产在线精彩视频二区| 国内精自线i品一区202| 这里只有精品免费视频| 日韩亚洲综合在线| 波多野结衣视频网站| 久久精品91麻豆| 亚洲三级电影在线播放| 亚洲色婷婷一区二区| julia中文字幕久久亚洲| 国产精品偷伦在线观看| 美女无遮挡拍拍拍免费视频| 亚洲欧洲一区二区三区| 婷婷六月色| 久久免费观看视频| 国产精品偷伦视频免费观看国产| 91丝袜乱伦| 国产精品尤物在线| 蜜臀av性久久久久蜜臀aⅴ麻豆| 欧美成人手机在线视频| 最新日本中文字幕| 国产毛片高清一级国语| 国产亚洲精品无码专| 91在线视频福利| 亚洲天堂视频在线播放| 免费一级毛片完整版在线看| 亚洲综合一区国产精品| 亚卅精品无码久久毛片乌克兰| 亚洲精品成人7777在线观看| 国产在线拍偷自揄拍精品| 国产探花在线视频| 婷婷亚洲视频| 午夜电影在线观看国产1区| 国产成人av大片在线播放| 亚洲一区二区三区国产精华液| 日韩美女福利视频| 日韩精品毛片人妻AV不卡| 国产精品久久国产精麻豆99网站| 亚洲无码熟妇人妻AV在线| 精品99在线观看| 伊人激情综合网| 日本人又色又爽的视频| 国产青青草视频| 日韩一区精品视频一区二区| 亚洲第一成网站| 久久精品嫩草研究院| 日本免费精品| 啪啪免费视频一区二区| 亚洲国产成人超福利久久精品| 成人国产小视频| 国产91成人| 久久综合干| 91精品人妻互换| 日韩天堂网| 免费xxxxx在线观看网站| 亚洲精品午夜天堂网页| 97色婷婷成人综合在线观看| 国产亚洲成AⅤ人片在线观看| 露脸国产精品自产在线播| 婷婷五月在线| 亚洲制服中文字幕一区二区| 婷婷五月在线| 欧美成a人片在线观看| 国产成人午夜福利免费无码r| 久久精品国产免费观看频道| av色爱 天堂网| 久久久精品无码一二三区| 综合色区亚洲熟妇在线| 97精品久久久大香线焦| 国产欧美日韩视频怡春院| 亚洲人在线| 最新国产精品第1页| 91九色国产在线|