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

基于Qt的跨平臺多媒體播放器的設計與實現

2015-05-08 00:54:59滕志軍徐艷偉
東北師大學報(自然科學版) 2015年4期
關鍵詞:跨平臺

滕志軍,徐艷偉

(東北電力大學信息工程學院,吉林 吉林 132012)

基于Qt的跨平臺多媒體播放器的設計與實現

滕志軍,徐艷偉

(東北電力大學信息工程學院,吉林 吉林 132012)

基于Qt Creator圖形界面開發環境,采用以音頻時間戳為基準的音視頻同步播放方案,并利用FFMPEG+SDL解碼播放視頻,設計了一種跨平臺的嵌入式多媒體播放器.經實驗證明,該播放器能夠很好地支持多種格式的媒體文件播放,系統性能穩定,與當前流行的播放器相比較,在軟件啟動時間、CPU占用率、內存占用空間、流暢度以及音視頻同步效果等方面均具有明顯的優勢,是一款高性價比的跨平臺多媒體播放終端.

Qt;跨平臺播放器;FFMPEG解碼;同步播放

伴隨著當今社會、經濟、科技的快速發展,計算機技術和多媒體技術不斷革新,人們對于知識、新鮮事物的獲取途徑也越來越多樣化.視頻利用其自身所具有的直觀、生動的優勢被人們所廣泛使用.功能多樣化是現代嵌入式終端設備的優勢特點之一,而視頻播放作為其中一種最具代表性的功能特性被廣泛用于智能設備終端并成功應用于各個領域,如休閑娛樂、文體辦公、醫療保健、智能監控等.

當前,嵌入式系統正處在一個飛速發展和激烈競爭的時代,終端多樣化為整個嵌入產業的發展提供了更加廣闊的發展空間.當然在智能設備終端領域機遇與挑戰并存,常見的智能手機、平板電腦等設備升級換代速度較快,新產品與舊產品在軟硬件和平臺的標準規格等方面有較大差異,比如Android平臺不同設備廠家生產的設備硬件差異巨大,即使同一廠家生產的設備其高端機與低端機在硬件方面也有較大差異,且兼容軟件版本各異.被微軟收購的諾基亞公司生產的智能手機的不同硬件規格的設備分別使用了Symbian,MeeGo和Windows Phone等軟件平臺,因此如果能開發一款可以同時跨多個平臺的終端軟件,將節約巨大的開發成本和開發時間[1-2].

本文基于Qt Creator圖形界面開發環境,對多媒體播放器進行了開發研究.主要面向PC以及Android,iOS和Symbian智能手機或平板電腦,支持Windows和Linux操作系統以及大部分Android,iOS和Symbian操作系統.重點研究了跨平臺多媒體播放器開發中的關鍵技術(FFMPEG的解碼以及音頻和視頻的同步播放技術),并據此開發出高性價比的跨平臺多媒體播放終端(Cross-platform multimedia player,簡稱CPMPlayer).

1 Qt平臺簡介

Qt[3]是由諾基亞公司開發的一款強大的C++圖形用戶界面應用程序框架開發平臺.它可以為開發者提供完整建立藝術級的圖形用戶界面所需的功能.Qt是覆蓋移動系統平臺最廣的跨平臺開發框架,具有廣泛的適應性和良好的可移植性,同樣的代碼只需在不同平臺系統環境下編譯,可實現應用程序對多個平臺的兼容.Qt支持多種移動終端平臺,包括Symbian,Ubuntu,BlackBerry,MeeGo,Android和iOS.不僅如此,Qt還支持多種桌面開發系統和嵌入式開發,包括Windows的大部分版本及Unix/X11-Linux,Sun Solaris,HP-UX,Compaq Tru64 UNIX,IBM AIX,SGIIRIX和X11平臺.

Qt能在桌面與嵌入式平臺上開發先進的GUI應用程序,實現所有需要的功能.Qt與OpenGL緊密集成完美支持3D圖形并支持創建應用程序用戶界面,其跨平臺多線程功能簡化了并行編程,利用信號與槽機制[4]實現跨線程類型安全的對象間通信.Qt支持所有重要的數據驅動,可以無縫鏈接數據庫與Qt應用程序.

Qt Creator是一個全新的、完整的、輕量級的跨平臺Qt集成開發環境,確保首次接觸Qt框架的開發人員能迅速上手和操作.Qt Creator包含一個高級的C++代碼編輯器、上下文感知幫助系統、可視化調試器、源代碼管理、項目和構建管理工具用于開發和測試基于Qt的應用程序.

2 系統總體設計框架

基于Qt的跨平臺多媒體播放器系統的總體設計框架如圖1所示.用戶通過由Qt Creator開發的圖形客戶端打開存放有媒體源的文件夾,系統會自動搜索顯示相應的媒體文件信息,FFMPEG對媒體文件進行解碼并由SDL輔助視頻文件顯示到客戶端上.整個系統可以流暢播放MP3,WMA和WAV等格式的音頻文件,以及AVI,MP4,FLV和RMVB等格式的視頻文件,并且具有快進、快退、暫停、播放列表等功能,支持歷史記錄播放.系統相比其他播放器具有占用內存小、反應速度快、播放效果好等優點.

圖1 系統結構原理

3 基于FFMPEG和SDL的音視頻解碼播放

傳統的多媒體文件解碼方式有Any Chat,GSTREAMER,FFMPEG,FFDSHOW,VFW和DIRECTSHOW等,由于FFMPEG的功能強大和編解碼速度較高,目前得到了普遍的應用[5].本文采用FFMPEG來實現音視頻的解碼,同時為了簡化音視頻處理的難度,采用SDL優化媒體文件的顯示播放效果.

3.1 FFMPEG解碼流程

FFMPEG是在Linux下開發可用來采集和轉換數字音視頻并將其轉換為流暢的自由軟件.它允許在包括Windows和Mac OS X在內的大多數操作系統中編譯.包含libavcodec音頻和視頻解碼器庫以及libavformat音頻與視頻格式轉換庫[6].為了縮小執行文件本身的體積以及節省系統資源,本文設計選擇在Windows下對FFMPEG采用動態編譯.

媒體文件的解碼流程如圖2所示,FFMPEG主要有編解碼模塊、混合器模塊和內存操作模塊.編解碼模塊主要是encode和decode,用于音視頻的編碼和解碼,存放在libavcodec子目錄中;混合器模塊主要是muxer和demuxer,用于分離與合并音、視頻,存放在libavformat目錄中[7];內存操作主要是修改libavutil目錄中的mem.h和mem.c文件,目的是標記從堆上動態分配的內存塊的地址以及這些內存的釋放情況,避免內存泄漏的發生.FFMPEG利用extradata/extradata_size緩沖器存放解碼器可能會用到額外信息,在av_read_frame中填充.解碼基本流程大體可分以下幾步:

(1) 注冊encode/decode和muxer/demuxer容器.函數av_register_all(void)把獲取的FFMPEG支持的編碼器、解碼器以及混合器的相關信息以鏈式結構存放在內存中.

(2) 打開視頻文件.函數av_open_input_file()打開文件、偵測容器文件格式.

(3) 獲取視頻屬性信息.首先利用函數av_find_stream_info()從文件中獲取流(stream)信息并通過av_read_frame()不停地從碼流中提取幀數據保存在容器中,找到codec_type_video類,進而根據av_find_decoder()函數查找與其對應的編解碼器.

(4) 分配圖像緩存,獲取圖像.通過avcodec_open函數打開編解碼器,函數avcode_alloc_frame()用于申請內存空間,通過特定函數 avcodec_decode_video解碼一幀視頻.使用avcodec_close()釋放內存和解碼器,避免內存泄漏.

(5) 返回到步驟(3),直到解碼完畢.

(6) 關閉視頻文件

圖2 FFMPEG解碼流程

3.2 SDL實現音視頻播放

SDL(Simple DirectMedia Layer)是一套基于C語言編寫,采用抽象封裝方式并開放源代碼的跨平臺多媒體開發庫.SDL提供多種處理圖像和聲音的函數,API設計簡單,能很好地在C++等高級語言環境中使用,是一個跨平臺圖像顯示庫.目前SDL多用于開發游戲、模擬器、媒體播放器等多媒體應用領域[8].

利用SDL實現畫面輸出到屏幕.使用SDL_Init()函數初始化SDL庫;使用SDL_SetVideoMode()函數創建一個給定高度和寬度的屏幕,并設置屏幕的顏色深度.建立一個AVPicture結構體,設置它的數據指針和行尺寸參數.SDL_AddTimer(delay,sdl_refresh_timer_cb,is)會讓sdl_refresh_timer_cb函數把視頻播放的各種信息傳遞給回調函數sdl_refresh_timer_cb,然后事件監聽模塊監聽到數據.通過SDL_LockMutex和SDL_UnlockMutex函數保證線程協調變量的讀寫安全;SDL_CondWait和SDL_CondSignal函數來阻塞和解除阻塞.

利用SDL實現音頻輸出.輸出聲音采用函數SDL_OpenAudio()打開聲音設備,使用SDL_AudioSpec結構體作為參數,它包含了要輸出的音頻的所有信息.

在Qt Creator中利用下面2條語句獲得畫面框架,并輸出顯示到屏幕上.

QPixmap pixmap=QPixmap::fromImage(image.scaled(ui->label->size(),Qt::KeepAspectRatio));

ui->label->setPixmap(pixmap);

4 實現音頻與視頻的同步播放

音頻和視頻的同步技術是多媒體播放系統中一項極為關鍵的技術,它對客戶體驗的好壞具有直接而深刻的影響.同步的目的在于展示媒體信息時,能夠保持媒體與對象之間固有的時間關系.通常情況下音視頻的同步分2種情況:一是流內同步,其主要任務是保證音頻流或視頻流單個媒體流內的時間關系,以滿足用戶的感知需求;另一種是流間同步,目的就是保證音頻流和視頻流之間的時間關系.[9]

4.1 音頻和視頻的同步播放流程

本文采用以音頻播放的時間為基準(如圖3所示),即根據音頻播放的時間確定當前的圖像是否“遲到”.如果發生了“圖像遲到”,首先要加快數據幀的刷新頻率,同時啟動跳幀策略,通知解碼器以適當的頻率在解碼后輸出圖像,直至重新恢復同步;同樣若“圖像早到”,則加倍計算延遲,直到重新恢復同步.這樣就實現了音頻和視頻的同步.

圖3 音視頻同步播放流程

4.2 時間漂移問題的處理

影響音視頻同步的一個重要因素就是時間漂移的問題.為了更好地解決同步過程中產生的時間漂移,本文對不同情況采取不同的策略:對于固定速率的媒體文件,采取的策略是將視頻的幀率及音頻的比特率置于文件的首部;對于變速率的媒體文件,采取的方案是將視頻的幀率和音頻的比特率等信息嵌入到媒體流的內部.

實驗證明,所采取的策略能有效地消除音視頻同步播放過程中產生的時間漂移所帶來的影響.

4.3 快進、快退下的同步播放

眾所周知,用戶在觀看一部媒體文件時,若不能對其進行全局搜索是一件非常遺憾的事情.出于這方面的考慮,本文為多媒體播放器的設計增加了一些快進、快退功能.對多媒體播放器的快進、快退等功能的實現采用一種基于時間的隨機訪問方案,即將媒體文件讀寫指針定位到某個給定的時間點上,然后調用av_read_frame就能夠讀取時間標簽,等于給定時間點的媒體數據.快進、快退功能的實現有2種方式:一是通過移動進度條的位置來實現對媒體文件的搜索定位;另一種方法就是在媒體文件播放中使用左方向鍵和右方向鍵來表示向前和向后一小段.經過反復實驗前進、后退一小段設置為10 s較為合適.

5 軟件測試與運行效果

圖4 CPMPlayer播放界面

完成軟件的設計調試后,相比Linux,Andriod,Windows,Symbian和IOS等系統本文選擇具有代表性的Windows平臺進行測試運行.測試環境為Win 7操作系統、英特爾Core i5雙核處理器、4GB三星DRR3 1 067 Hz內存、Nvidia GeForce 310 MB 1 GB顯卡、ConexantSmartaudio HD聲卡.軟件顯示界面如圖4所示.

為了更直觀地表現出該方案的可行性與高效性,本文選取了幾種現階段較流行的播放器,在軟件啟動時間、CPU占用率、內存占用空間、流暢度以及音視頻同步效果等方面進行了比對(見表1).通過表1的數據可以很直觀看到基于Qt的多媒體播放器(CPMPlayer)在以上幾方面均占有一定的優勢.

表1 主流多媒體播放器性能對比

6 結束語

本文的創新點是系統具有很好的跨平臺性,并提出了基于FFMPEG和SDL的解碼顯示技術以及高性能的音視頻同步方案.以此設計的多媒體播放系統的實現過程以及核心的代碼對類似平臺具有很好的可重塑性,代碼通過較小的修改并在不同的平臺編譯就可以移植到不同的操作系統和平臺上運行.軟件占用內存小、運行效果好、開發成本低,能夠很好地滿足用戶需求,具有較高的經濟價值.

[1] 馬燕,李存,李曉勇,等.基于ARM平臺的多媒體播放器的設計與實現[J].計算機工程,2006,32(24):221-222,268.

[2] 陸鋼,朱培軍,李慧云,等.智能終端跨平臺應用開發技術研究[J].電信科學,2012(5):14-17.

[3] JASMIN BLANCHETTE,MARK SUMMERFIELD.C++ GUI Qt 4編程[M].閆鋒欣,譯.北京:電子工業出版社,2008:5-120.

[4] 劉治國,陳新華.基于Linux和Qt的智能家居系統的設計與實現[J].電子技術應用,2012,38(4):23-26.

[5] 梁發云,陳志文,王婧,等.基于FFmpeg的立體視頻播放技術研究[J].電視技術,2013,37(11):27-29+42.

[6] 辛長春,婁小平,呂乃光.基于FFmpeg 的遠程視頻監控系統編解碼[J].電子技術,2013(1):3-5.

[7] 吳張順,張珣.基于FFmpeg 的視頻編碼存儲研究與實現[J].杭州電子科技大學學報,2006,26(3):30-34.

[8] 王園園,高明煜,曾毓.基于SDL庫的嵌入式平臺中文顯示技術研究[J].計算機系統應用,2009,18(4):194-197.

[9] 魏耀都,謝湘,匡鏡明,等.新的全參考音視頻同步感知質量評價模型[J].通信學報,2012,33(2):182-190.

(責任編輯:石紹慶)

Design and implementation of cross-platform multimedia player based on Qt

TENG Zhi-jun,XU Yan-wei

(College of Information Engineering,Northeast Dianli University,Jilin 132012,China)

In this paper,under the development environment of Qt Creator graphical interface,a cross-platform embedded media player is designed by adopting audio and video synchronous playback scheme which is based on audio time stamp and using FFMPEG+SDL decoder to broadcast video.It is proved that the player is well able to support multiple formats of media file,the system performance is stable,compared with the current popular player,it has more obvious advantages in software startup time,CPU usage,memory footprint,fluency,and synchronization of audio and video effects,etc.This is a cross-platform multimedia player terminal with high cost performance.

Qt;cross-platform player;FFMPEG decoder;synchronous playback

1000-1832(2015)04-0059-05

10.16163/j.cnki.22-1123/n.2015.04.013

2014-08-03

國家自然科學基金資助項目(51277023).

滕志軍(1973—),男,教授,博士,主要從事無線通信技術研究.

TP 37 [學科代碼] 520·40

A

猜你喜歡
跨平臺
跨層級網絡、跨架構、跨平臺的數據共享交換關鍵技術研究與系統建設
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
潛力雙跨平臺:進階:誰將跨入下一個“十大”?
跨平臺APEX接口組件的設計與實現
測控技術(2018年9期)2018-11-25 07:44:58
基于C++語言的跨平臺軟件開發的設計
數碼世界(2017年12期)2017-12-28 15:45:13
基于C++語言的跨平臺軟件開發
移動互聯網應用跨平臺開發
一種虛擬現實應用程序跨平臺方法的研究
基于QT的跨平臺輸電鐵塔監控終端軟件設計與實現
基于OPC跨平臺通信的電機監測與診斷系統
主站蜘蛛池模板: 在线观看91精品国产剧情免费| 国产亚洲欧美日韩在线一区二区三区| 欧美中文字幕在线二区| 日韩高清成人| 国产精品女主播| 亚洲国产中文欧美在线人成大黄瓜 | 国产精品久线在线观看| 2022精品国偷自产免费观看| 国产99欧美精品久久精品久久| 欧美日韩福利| 亚洲最大看欧美片网站地址| 无码AV日韩一二三区| 青青青国产视频手机| 东京热高清无码精品| 视频国产精品丝袜第一页| 日本欧美成人免费| 麻豆AV网站免费进入| 日韩人妻精品一区| 性色一区| 国产91麻豆免费观看| 成人免费一区二区三区| 亚洲综合在线最大成人| 国产精品无码在线看| 日韩黄色精品| 91免费观看视频| 91成人在线免费观看| 日本一区高清| 亚洲精品爱草草视频在线| 538精品在线观看| 91国语视频| 人人妻人人澡人人爽欧美一区| 欧美视频在线播放观看免费福利资源| 精品视频91| 亚洲国产综合第一精品小说| 国产乱人伦AV在线A| 国产精品亚洲综合久久小说| 毛片免费在线视频| 自拍欧美亚洲| 久久这里只有精品66| 欧美不卡视频在线| 国产农村妇女精品一二区| 欧美成人一区午夜福利在线| 国产91成人| 亚洲国模精品一区| 91免费国产高清观看| 19国产精品麻豆免费观看| a毛片免费观看| 久久久久久久蜜桃| 99这里只有精品在线| 国产小视频a在线观看| 国产又黄又硬又粗| 国产女人综合久久精品视| 99久久精品国产精品亚洲| a天堂视频| 无码中文AⅤ在线观看| 青草视频免费在线观看| 色哟哟国产成人精品| 欧美日韩国产在线观看一区二区三区 | 内射人妻无码色AV天堂| 青青操视频在线| 尤物在线观看乱码| 久久久受www免费人成| 日本午夜精品一本在线观看| www精品久久| 亚洲电影天堂在线国语对白| av在线手机播放| 特级做a爰片毛片免费69| 手机在线国产精品| 日韩精品专区免费无码aⅴ| 伊人久综合| 日本免费精品| 第一页亚洲| 精品久久久久久成人AV| 国产乱肥老妇精品视频| 国产欧美中文字幕| 久久大香伊蕉在人线观看热2| 欧美伦理一区| 最新加勒比隔壁人妻| 呦女亚洲一区精品| 狠狠干欧美| 视频国产精品丝袜第一页| 色综合色国产热无码一|