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

基于Cortex-A系列處理器的網絡電視APP的開發

2015-04-10 03:23:17唐雨薇
電視技術 2015年7期

唐雨薇

(四川財經職業學院,四川 成都 610101)

?

基于Cortex-A系列處理器的網絡電視APP的開發

唐雨薇

(四川財經職業學院,四川 成都 610101)

以Cortex-A系列處理器作為硬件平臺,以Android作為軟件系統,開發了一款網絡電視APP,該APP軟件由網絡傳輸模塊、解碼模塊、播放模塊以及UI設計模塊組成。提出了軟件需求分析,并在需求分析的基礎上提出總體的軟件結構并設計了相應的模塊,模塊間協同作用實現了軟件功能。軟件設計完成后,在基于Cortex-A8處理器的手機硬件平臺上進行了軟件的功能測試和性能測試。

網絡電視;Android開發;Cortex-A處理器;FFmpeg

Cortex-A系列處理器是以ARMv7架構為基礎開發的最新ARM處理器,其廣泛應用于消費類電子產品中。目前風靡全球的三星Galaxy S3就是采用了Cortex-A9四核處理器,可見Cortex-A系列處理器的應用范圍是相當廣闊的。該系列微處理器囊括了高性能的Cortex-A15、可伸縮的Cortex-A9、經市場考驗的Cortex-A8以及高效的Cortex-A7[1]。此外,操作系統方面,Android是一種基于Linux內核的操作系統,在智能手機操作系統中的市場占有率已經超過70%。該系統采用Software Stack架構,底層由C語言開發的Linux內核作為基礎,提供基本的功能;中層則轉由C++開發出虛擬機和函數庫等,用以對上層應用程序提供良好的支持;最上層是各式各樣通過JAVA開發的應用程序[2]。

本文將就Cortex-A8作為硬件平臺,Android作為軟件操作系統,開發一款互動性極強的電視客戶端APP軟件。

1 開發需求分析

軟件主要以實現視頻播放功能為主,體現在能夠流暢地在手機網絡條件下觀看網絡電視。由于安卓系統的智能機不像iPhone手機那樣具有統一的硬件配置,其處理器運算能力參差不齊,故客戶端在實現功能的基礎上必須充分考慮其適用范圍,盡可能地適配各種運算能力的手機[3]。同時,客戶端是實現網絡電視功能,故而必須保證能夠在常規網絡的情況下流暢地播放視頻。

2 總體結構設計

客戶端的總體規劃上采用模塊化的設計方案,依次由網絡傳輸協議模塊、解碼模塊和播放模塊組成。

用戶通過WAP登錄服務器選擇想要觀看的視頻,接收到用戶的選擇信息之后,流媒體管理平臺將流媒體的地址通過SDP協議發送到手機電視客戶端,手機客戶端根據該地址經由RTSP協議向流媒體服務平臺請求音頻和視頻數據流。服務器在接到請求后通過RTP協議將流媒體數據實時地傳輸給安卓客戶端,在傳輸過程中,RTCP協議實時地監控著傳輸質量,并將結果反饋給服務器,對RTP的傳輸過程進行動態調節[4]。

3 網絡傳輸協議模塊

安卓客戶端APP的首要問題是解決視頻數據流在網絡中的傳輸難題,目前廣泛采用流媒體技術來實現流暢的視頻播放功能。流媒體技術顧名思義就是利用流式傳輸的方式在互聯網上播放的媒體格式,視頻在流媒體傳輸技術的處理下被壓縮成一個一個的壓縮包,然后通過服務器向用戶連續,實時發送;用戶在接受到壓縮包后,通過設備解壓,視頻就實時顯示出來,從而擺脫了傳統的先下載完視頻再播放的模式。

流媒體的網絡視頻協議包括了RTP/RTCP,RSVP和RTSP等。TCP/IP協議棧中包含了這些協議。因此,可以直接應用RTP/RTCP,RSVP和RTSP等協議來進行客戶端的設計。

4 解碼模塊

4.1 選擇合適的壓縮標準

在高速網絡視頻協議支持的基礎上,為了提高視頻傳輸的實時性,達到移動電視節目實時收看的要求,視頻的編碼壓縮也起著至關重要的作用。目前的視頻壓縮標準主要分為兩類,一類是由國際電信聯盟遠程通信標準化組(ITU-T)的視頻編碼專家組(VCEG)制定的 H 系列,其中包含了 H.261、H.263、H.263+和H.264 等標準;另一類則是由國際標準化組織(ISO)和國際電工委員會(IEC)組建的活動圖像專家組(MPEG)制定的 MPEG 系列,包括了MPEG-1、MPEG-2和 MPEG-7 等標準。H.264標準以其高壓縮性和網絡親和性占領了網絡上視頻點播和視頻直播的半壁江山。H.264標準在流媒體業務中的廣泛使用使其成為Android移動電視客戶端APP的不二選擇[5]。

4.2 移植FFmpeg

在確定了壓縮標準的基礎上,更為重要的是選擇一種移植性強,并能夠錄制、轉換和流化音視頻的完整解決方案。這時,FFmpeg成為首選,它是基于linux開發的開源軟件,具有很高的可移植性。為了能夠適應在Cortex-A9系列處理器上面的運行,需要對FFmpeg進行移植和功能裁剪。

首先,在Windows環境下安裝Cygwin軟件建立交叉編譯環境,或者直接在Ubuntu系統環境下進行操作。在建立好編譯環境的基礎上就可以利用FFmpeg 0.7.1開源項目和Android NDK r5c開發工具進行移植。通過修改FFmpeg的配置腳本文件config.sh中的各個參數,可以根據具體需要對體系架構、編譯器、編解碼器等進行配置,編譯器根據該文件提供的宏定義等信息對源文件進行選擇性的代碼編譯,從而獲取指定平臺下的可執行程序。config.sh文件的部分內容如下所示:

#運用bash shell來執行此腳本

#!/bin/bash

#設置選擇了體系架構,目標系統,版本鏈接庫

PREBUILT=/home/ my-android-edition /build/prebuilt/linux/arm-eabi-4.4.0

PLATFORM=/home/ my-android-edition /build/paltforms/android-3/arch-arm

#下面設置FFmpeg的參數

./configure --target-os=linux /

--enable-version3 /

--arch=arm /

--disable-stripping /

--enable-gpl /

...

由于并不需要FFmpeg的所有功能,所以只需根據本工程需要移植FFmpeg的avutil(基礎模塊),avcodec(音視頻編碼模塊)和avformat(音視頻解析模塊)即可。這時在libavutil(公共工具函數庫),libavcodec(音視頻編解碼函數庫),libavformat(demuxers和muxer函數庫)的目錄下創建Android.mk文件。在libavutil,libavcodec和libavformat目錄下的Android.mk相差不多,libavcodec目錄下的Android.mk文件如下所示:

#下面設置編譯路徑

LOCAL_PATH := $(call my-dir)

include $(LOCAL_PATH)/../av.mk

include $(CLEAR_VARS)

#下面設置源文件路徑

LOCAL_SRC_FILES := $(FFFILES)

LOCAL_C_INCLUDES :=〗 $(LOCAL_PATH)〗 $(LOCAL_PATH)/..

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

LOCAL_CFLAGS += $(FFCFLAGS)

#下面指定編譯模塊

LOCAL_MODULE := %(FFNAME)

#BUILD_SHARED_LIBRARY指定給GNU Makefile的腳本文件

include $(BUILD_STATIC_LIBRARY)

在完成每個模塊的Android.mk編寫后,需要在FFmpeg的目錄下建立Android.mk文件,將上述三個模塊編譯成libaffmpeg.so的動態鏈接庫。在此基礎上,在cywin編譯環境中執行$NDK_ROOT進行編譯,完成移植編譯工作。FFmpeg的Android.mk文件如下所示:

#下面設置編譯路徑

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#指定libavutil,libavcodec,libavformat這三個需要的編譯模塊

LOCAL_MODULE :=ffmpeg

LOCAL_WHOLE_STATIC_LIBRARIES :=libavformat libavcodec libavutil

include $(call all-makefiles -under, $(LOCAL_PATH))

include $(BUILD_SHARED_LIBRARY)

4.3 應用FFmpeg實現解碼

本系統應用Android NDK移植的FFmpeg,直接移植libavcodec庫中已有的H.264視頻解碼器模塊,從而可以調用FFmpeg的內置函數進行想要的解碼操作。調用的函數如圖1所示。

圖1 解碼流程

在這一解碼過程中,首先使用av_register_all()注冊容器格式,然后利用av_find_stream_info0提取視頻中的流信息,在獲得想要的流信息后,avcodec_find_decoder()函數找到對應的解碼器,avcodec_open0函數打開這個解碼器,然后avcodec_alloc_frame()函數為解碼幀分配內存。avcodec_get_fram()從緩存區中提取數據給avcodec_decode_vide()函數解碼,解碼完成后,由av_set_frame()函數將數據放入待播放區。最后av_has_next_frame()函數判斷是否還有待解碼的幀,若有,則跳轉到avcodec_get_fram()函數提取新的數據;若無,則跳轉到avcodec_close()函數,關閉解碼器。

5 播放模塊

5.1 播放功能的設計

Android的多媒體核心OpenCore提供了媒體播放器的功能,其中包含了MediaPlayer類,可以利用MediaPlayer來播放需要的網絡流媒體。首先,創建一個MediaPlayer對象,再通過調用getVideoHeight() 函數和getVideoWidth() 函數設置視頻播放窗口的高度和寬度,以適應具體的手機屏幕。由于MediaPlayer類已經具備了播放、暫停、停止等基本的播放器功能,可以調用Mediaplayer的相應頭文件中的內容來實現這些功能,大大簡化了設計工作。網絡流媒體的緩沖播放功能實現的相關代碼如下:

String play_address = “rtsp://127.0.0.1:554/media.sdp”; /*設置流媒體源的網絡地址*/

MediaPlayer testPlayer = new MediaPlayer(); /*新建一個播放器testPlayer*/

testPlayer.setDataSource(play_address); /*setDataSource設置了一個MediaPlayer的數據源*/

testPlayer.setOnBufferingUpdateListener(this); /*setOnBufferingUpdateListener設置緩存*/

testPlayer.prepare(); /*準備*/

testPlayer.start(); /*開始播放*/

5.2 UI界面的設計

目前Android的UI設計方法主要分為3種:通過XML配置生成、通過用戶界面接口生成和直接代碼生成。筆者選用配置XML的方法來生成所要的UI界面。main.xml的部分代碼如下:

android:layout_width=”fill_parent” /*設置屏幕顯示的寬度*/

android:layout_height=”fill_parent” /*設置屏幕顯示的高度*/

android:orientation=”horizontal”> /*設置屏幕顯示的方向*/

6 測試分析

6.1 測試環境

正如需求分析中所述,為了能夠適用于絕大多數的智能手機,筆者選用較早推出的智能手機,其硬件配置較低,如果能夠在這樣的硬件平臺上面流暢運行,說明軟件的適配性非常不錯。所以筆者選用了HTC公司于2010年推出的暢銷智能手機HTC G7(Cortex-A8處理器,ARMv7構架,578 Mbyte內存)作為硬件平臺;選用Android2.2作為客戶端的軟件操作系統。HTC G7支持WLAN功能和藍牙功能,網絡模式支持GSM、WCDMA等。筆者選用中國移動的WCDMA網絡作為測試網絡。

6.2 性能測試

在客戶端APP運行過程中,能夠流暢地觀看視頻,筆者測試了暫停和停止功能,功能實現基本沒有問題,手機在播放過程中如圖2所示。

圖2 客戶端APP運行(照片)

在功能測試的基礎上,筆者測試了CPU的使用情況,手機的內存占用情況用以標定客戶端對于處理器硬件配置的要求;同時測試客戶端運行過程中的網絡傳輸情況,用以標定客戶端對網絡的要求。

Cortex-A8處理器的CPU使用率如圖3所示,當客戶端開始運行時,CPU的使用率呈線性增加的勢頭,最后穩定在50%左右,CPU使用率并不是很高。此外,ARM公司在繼Cortex-A8系列處理器之后又推出了功能更加強勁的Cortex-A9以及Cortex-A15等處理器,這些處理器的性能都優于Cortex-A8,本客戶端能夠在Cortex-A8處理器上流暢地運行,由此可見客戶端對CPU性能的要求還是比較令人滿意的。

圖3 客戶端播放時的CPU使用情況(截圖)

內存使用情況如圖4所示,由圖可見,內存使用率高達66%,內存剩余空間太少,基本沒有運行其他大型程序的空間。故客戶端對內存的需求比較大,內存成為此電視客戶端發展的一個瓶頸。所幸現在的手機市場發展迅速,新推出的Android或者其他操作系統(IOS,WP8)的手機都具備較大內存(1 Gbyte或者2 Gbyte)的硬件配置,內存短缺的情況基本得到緩解。但如何減小內存占用,也是本客戶端必須解決的當務之急。

圖4 客戶端播放時的內存使用情況(截圖)

如圖5所示為客戶端運行過程中的WCDMA網絡傳輸速度情況,可以看到,在視頻播放過程中,接收服務器數據包的速率持續高達1 000 kbit/s左右,而發送給服務器的數據包的傳輸速率則很低,只有不到6 kbit/s。這是由于在播放視頻時客戶端主要的數據流是接收服務器端發過來的數據包,發送出去的數據只是少量的,起反饋信息的作用。如今的3G發展迅猛,4G時代也已經到來,本客戶端對于網絡條件的需求完全可以得到滿足。

從測試的結果來看,客戶端能夠在現在廣泛被市場認可的Cortex-A8處理器上面流暢地運行,CPU使用情況和內存占用情況都比較令人滿意,顯示了本客戶端的適用性還是很不錯的,能夠適配大多數的智能手機,同時視頻播放過程中的網絡數據傳輸速率也能夠得到現今網絡的支持。

圖5 客戶端播放時的網絡傳輸情況(截圖)

7 結論

本文以Cortex-A系列微處理器為硬件平臺,設計了一個基于Android2.2版本操作系統的網絡電視客戶端APP。文中針對客戶端設計過程中的具體要求,選擇了合適的網絡傳輸協議和編碼壓縮標準,然后移植了FFmpeg,利用其強大的編碼解壓功能,將網絡傳輸的數據包進行解碼。對于解碼后的數據,筆者運用了Android的多媒體核心OpenCore中的MediaPlayer類對視頻進行播放和暫停等功能,并設計了相應的UI界面,方便用戶操作。隨著當代網絡技術的飛速發展和Android智能手機的迅速普及,基于Cortex-A系列微處理器的移動電視客戶端APP必將迎來廣闊的發展前景。

[1]SINGH I,SINGH G.Android-based open source virtual instrumentation[J].Journal of the Instrument Society of India,2013,43(1):22-25.

[2]KIYOSHI K,HIROSHI Y,CHIKARA S,et al.Contents distribution to android clients using wireless LAN multicast for a large fireworks festival[C]//Proc.the 15th International Conference on Advanced Communication Technology : Smart Services with Internet of Things.[S.l.]:IEEE Press,2013:900-905.

[3]CHANDNANI P.Evolution of Android and its impact on mobile application development[J].International Journal of Scientific Engineering and Technology,2013,1(3):1-3.

[4]李永吉.基于Android系統平臺實現智能電視模塊化設計與研究[D].濟南:山東大學,2013.

[5]劉誠,段紅光,巴義,等.基于Android移動視頻監控系統客戶端的研究與設計[J].電視技術,2013,37(4):85-88.

Development of Internet TV APP Based on Cortex-A Series Processor

TANG Yuwei

(SichuanFinanceandEconomicsVocationalCollege,Chengdu610101,China)

A network TV APP is developed takes Cortex-A series processor as the hardware platform and Android as the software system.This APP is composed of network transmission module, decoding module, playing module and UI module.Firstly, the software requirement analysis is proposed.It procedes to put forward the overall structure of the software and design the corresponding module based on the requirement.The synergistic effect of the modules achieves the function of the software.Functional testing and performance testing base on the mobile phone hardware platform of Cortex-A8 also have been conducted after the design has been finished.

network TV; development of Android; Cortex-A series processor; FFmpeg

TN949.2;TN711

A

10.16280/j.videoe.2015.07.013

2014-11-14

【本文獻信息】唐雨薇.基于Cortex-A系列處理器的網絡電視APP的開發[J].電視技術,2015,39(7).

唐雨薇(1980— ),女,講師,碩士,主研計算機科學與技術。

責任編輯:閆雯雯

主站蜘蛛池模板: 国产又黄又硬又粗| 98超碰在线观看| 国产福利在线免费| 久久国产热| www.国产福利| 91欧美在线| 又粗又大又爽又紧免费视频| 亚洲国产一区在线观看| 日韩专区第一页| 亚洲精品爱草草视频在线| 91毛片网| 亚洲中文字幕97久久精品少妇| 欧美日韩中文字幕二区三区| 超碰91免费人妻| 被公侵犯人妻少妇一区二区三区| 老司机精品久久| 在线国产资源| 呦视频在线一区二区三区| 久久精品66| 天天综合网色| 日韩中文无码av超清| 99视频免费观看| 色窝窝免费一区二区三区 | 亚洲Av激情网五月天| 国产精品19p| 久青草国产高清在线视频| 中文字幕无线码一区| av在线无码浏览| 在线观看网站国产| 成年女人a毛片免费视频| 亚洲色大成网站www国产| 亚洲侵犯无码网址在线观看| 欧美三級片黃色三級片黃色1| 免费视频在线2021入口| 美女被躁出白浆视频播放| 亚洲色图欧美一区| 亚洲日本中文字幕天堂网| 欧美中文一区| 欧美日韩精品一区二区在线线| 国产精品第一区在线观看| 国产最新无码专区在线| 日韩123欧美字幕| 亚洲欧美自拍视频| 欧洲一区二区三区无码| 伊人精品视频免费在线| 午夜精品久久久久久久无码软件| 人人澡人人爽欧美一区| 国产二级毛片| 日韩无码视频播放| 国产一级无码不卡视频| 8090成人午夜精品| 欧美在线国产| 亚洲三级视频在线观看| 日韩欧美中文字幕在线精品| 亚洲精品视频网| 国产又粗又猛又爽视频| 欧美α片免费观看| 欧美日本在线播放| 999精品在线视频| 亚洲永久免费网站| 国产成人免费| 国产凹凸视频在线观看| 色噜噜在线观看| 国外欧美一区另类中文字幕| 国产成人精品2021欧美日韩 | 91po国产在线精品免费观看| 亚洲天堂2014| 国产爽爽视频| 色播五月婷婷| 九色在线观看视频| 久久夜色撩人精品国产| 国产真实乱子伦视频播放| 国产毛片片精品天天看视频| 免费欧美一级| 午夜福利免费视频| 一本久道久综合久久鬼色| 九九九精品成人免费视频7| 美女一级毛片无遮挡内谢| 91网在线| 国产精品夜夜嗨视频免费视频| 一级黄色欧美| 免费毛片全部不收费的|