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

        ?

        基于Qt/Embedded的MP3音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)

        2012-09-26 02:26:48焦正才樊文俠
        電子設(shè)計(jì)工程 2012年7期
        關(guān)鍵詞:圖形用戶(hù)界面播放器解碼

        焦正才,樊文俠

        (西安工業(yè)大學(xué) 陜西 西安 710032)

        隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)的廣泛應(yīng)用,PDA、掌上設(shè)備、WAP手機(jī)以及DVD/EVD播放機(jī)等嵌入式設(shè)備的迅速普及,而這些設(shè)備同時(shí)擁有華麗美觀、易于操作的圖形用戶(hù)界面。MP3作為高質(zhì)量的音樂(lè)壓縮標(biāo)準(zhǔn),數(shù)據(jù)壓縮比率大,較小的數(shù)據(jù)量以及質(zhì)量高的播放效果[1]。研究開(kāi)發(fā)一款功能強(qiáng)大、界面友好、操作簡(jiǎn)單的MP3播放器,普通用戶(hù)可以通過(guò)它在多姿多彩的多媒體世界中暢游,來(lái)滿(mǎn)足自己的視聽(tīng)享受的要求,這些使得嵌入式媒體播放器成為了一個(gè)新的研究熱點(diǎn)。近年來(lái),在完全遵循GPL(通用公共許可證)條款下,產(chǎn)生的Qt/Embedded,使得許多嵌入式開(kāi)發(fā)者轉(zhuǎn)到了Qt/Embedded。因Qt使用“一次編寫(xiě),隨處編譯”的方式為開(kāi)發(fā)跨平臺(tái)的圖形用戶(hù)界面應(yīng)用程序提供了一個(gè)完整的C++應(yīng)用程序開(kāi)發(fā)框架。

        1 Qt/Embedded簡(jiǎn)介

        Qt是Trolltech(奇趣)公司的標(biāo)志性產(chǎn)品,是用于創(chuàng)建Linux下的圖行軟件中最出色的軟件包之一。它是眾所周知的桌面環(huán)境KDE所使用的工具包。Qt不僅適用于UNIX/Linux,而且還可以用于Windows。Qt是一個(gè)用于桌面系統(tǒng)和嵌入式開(kāi)發(fā)的跨平臺(tái)應(yīng)用程序框架。它包括一個(gè)直觀的應(yīng)用接口程序函數(shù)(API)和一個(gè)豐富的類(lèi)庫(kù),以及用于GUI開(kāi)發(fā)和國(guó)際化的集成工具,另外它還支持JavaTM和C++開(kāi)發(fā)。Qt讓企業(yè)無(wú)須重新編寫(xiě)源代碼,便可以構(gòu)建運(yùn)行在不同桌面系統(tǒng)操作系統(tǒng)和嵌入式設(shè)備上的軟件應(yīng)用程序。針對(duì)范圍廣泛的各行各業(yè),包括GoogleTM、Adobe@Lucasfilm和 SkypeTM,通過(guò)在Qt一個(gè)平臺(tái)上的軟件投資開(kāi)發(fā)而涵蓋其它眾多平臺(tái),Qt可以縮短投入市場(chǎng)的時(shí)間并且提高生產(chǎn)效率[2]。

        1.1 Qt/Embedded的優(yōu)勢(shì)

        1)針對(duì)多個(gè)平臺(tái)只編寫(xiě)一次代碼;

        2)獨(dú)特的開(kāi)發(fā)方式;

        3)易學(xué)易用的模塊化的類(lèi)庫(kù);

        4)在單一應(yīng)用程序中可混合網(wǎng)絡(luò)和本地代碼。

        1.2 Qt/Embedded的安裝與開(kāi)發(fā)環(huán)境的配置

        Windows下開(kāi)發(fā)環(huán)境的搭建:安裝Qt SDK即可,它是一個(gè)完整的Qt開(kāi)發(fā)環(huán)境,包括特定版本的Qt庫(kù)和集成開(kāi)發(fā)環(huán)境-Qt Creator IDE。

        1.3 Qt的3個(gè)主要基類(lèi)

        1)QObject類(lèi)是所有能夠處理 signal、slot和事件的 Qt對(duì)象的基類(lèi)。

        2)QApplication類(lèi)負(fù)責(zé)GUI應(yīng)用程序的控制流和主要的設(shè)置,它包括主事件循環(huán)體,負(fù)責(zé)處理和調(diào)度所有來(lái)自窗口系統(tǒng)和其他資源的事件和處理應(yīng)用程序的開(kāi)始、結(jié)束以及會(huì)話(huà)管理的功能。對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō),建立此類(lèi)的對(duì)象是必不可少的。其中,QApplication是QObject類(lèi)的子類(lèi)。

        3)QWidget類(lèi)是所有用戶(hù)接口對(duì)象(組件)的基類(lèi),它是用戶(hù)界面的單元組成部分,它接收鼠標(biāo)、鍵盤(pán)和其他從窗口系統(tǒng)來(lái)的事件,并把它自己繪制在屏幕上。

        1.4 Qt的2個(gè)核心技術(shù):信號(hào)和槽

        信號(hào)和槽是QT自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的C/C++語(yǔ)言,因此要正確的處理信號(hào)和槽,必須借助一個(gè)稱(chēng)為元對(duì)象編譯器moc(Meta Object Compiler)的QT工具,該工具是一個(gè)C++預(yù)處理程序,它為高層次的事件處理自動(dòng)生成所需要的附加代碼[4]。其中,信號(hào)會(huì)在某個(gè)特定情況或是動(dòng)作下被觸發(fā),槽是等同于接收并處理信號(hào)的函數(shù)。如圖1所示。

        圖 1 Qt中 signal(信號(hào))與 slot(槽)機(jī)制Fig.1 Signal and slot of Qt

        2 Qt/Embedded圖形用戶(hù)界面開(kāi)發(fā)流程

        圖2 Qt圖形用戶(hù)界面開(kāi)發(fā)流程圖Fig.2 Graphical user interface development flow chart of Qt

        3 基于Qt/Embedded的MP3播放器設(shè)計(jì)

        文中基于Qt/Embedded設(shè)計(jì)的圖形用戶(hù)界面,利用FFmpeg解碼庫(kù),它是一個(gè)高精度的開(kāi)源MPEG音頻解碼庫(kù),其輸出為24 bit。通過(guò)使用FFmpeg解碼庫(kù)對(duì)MP3文件進(jìn)行解碼,可以取得較好的播放效果,同時(shí)使用其提供的應(yīng)用接口程序函數(shù),可以實(shí)現(xiàn)對(duì)音頻數(shù)據(jù)的解碼和順序視聽(tīng)。筆者采取模塊化的設(shè)計(jì)模式,來(lái)實(shí)現(xiàn)用戶(hù)視聽(tīng)MP3的基本功能。

        3.1 MP3播放器主窗口

        MP3音樂(lè)播放器主窗口,它是播放器的控制窗口,完成與用戶(hù)的人機(jī)交互。設(shè)計(jì)的MP3播放器控制界面如圖3所示,其主要功能是完成對(duì)MP3歌曲播放的管理,諸如打開(kāi)文件、歌曲列表、顯示歌曲總時(shí)間、歌詞的顯示和歌曲播放進(jìn)度、歌名、播放和暫停、上下曲和音量的增減進(jìn)度條。下面對(duì)主要的功能模塊進(jìn)行介紹。

        圖3 MP3 Player界面Fig.3 Interface of MP3 Player

        3.2 MP3播放器文件的打開(kāi)功能

        Qt中的QFileDialog標(biāo)準(zhǔn)文件對(duì)話(huà)框類(lèi),用戶(hù)通過(guò)這些函數(shù)可以很方便地定制自己的文件對(duì)話(huà)框。其函數(shù)形式如下:

        在Windows和Mac OS X下,這個(gè)靜態(tài)函數(shù)將使用本地文件對(duì)話(huà)框而不是QFileDialog,除非應(yīng)用程序的風(fēng)格被設(shè)置為本地風(fēng)格以外的某種風(fēng)格??梢酝ㄟ^(guò)調(diào)用集成這個(gè)類(lèi),其中的getOpenName()函數(shù),完成對(duì)MP3歌曲文件的選擇。

        3.3 音量調(diào)節(jié)功能模塊(Qt phonon多媒體框架)

        目前在Qt 4.6中實(shí)現(xiàn)多媒體播放圖形界面主要依賴(lài)于phonon框架,提供一套多媒體框架,提供多媒體回放的功能。其實(shí)QT中還有一個(gè)Multimedia模塊,實(shí)現(xiàn)底層的多媒體播放功能,為使用音頻和視頻的應(yīng)用程序開(kāi)發(fā)提供的一個(gè)框架。開(kāi)發(fā)人員可以大概了解多媒體播放是通過(guò)什么實(shí)現(xiàn)的,只需調(diào)用相應(yīng)的接口就行,但這中間需要一個(gè)中轉(zhuǎn),被稱(chēng)為backend。Qt phonon多媒體文件的播放主要過(guò)程包括:文件讀取、分流、解碼、輸出。如圖4所示。

        3.4 MP3歌曲計(jì)時(shí)和時(shí)間顯示模塊

        MP3文件格式是由一系列的幀組成的,幀是MP3文件的最小單位。如表1[5-6]所示。

        計(jì)算MP3歌曲的時(shí)間,首先要讀取MP3歌曲的數(shù)據(jù)流,而在MP3文件幀頭的第二個(gè)字節(jié)里保存著MP3版本和Layer信息;第三個(gè)字節(jié)保存了比特率信息,通過(guò)查表可以獲取幀頭中的比特率,然后計(jì)算MP3的時(shí)間[3]。MP3的波特率rate與播放時(shí)間time符合公式(1):

        圖4 Qt phonon多媒體框架Fig.4 Multimedia framework of Qt phonon

        表1 MP3文件結(jié)構(gòu)和功能描述Tab.1 MP3 files structure and function description

        3.5 歌詞顯示模塊

        在用戶(hù)瀏覽網(wǎng)頁(yè)和處理相關(guān)信息時(shí),本設(shè)計(jì)的MP3播放器為用戶(hù)量身定做了一個(gè)小的字幕歌詞滾動(dòng)條??赡苡械拈_(kāi)發(fā)者會(huì)有疑問(wèn),客戶(hù)既然在做其他的事情,注意力肯定不在音樂(lè)上,歌詞的顯示有必要嗎?答案是肯定的,我想很多人都用這種情況:看網(wǎng)頁(yè)聽(tīng)歌的時(shí)候突然想看看剛才沒(méi)聽(tīng)清楚的歌詞是什么,在這個(gè)時(shí)候,歌詞的顯示展示出了它最大的魅力。

        相關(guān)程序段如下:

        同時(shí)也考慮了一些特殊情況,如若0.1 s不顯示歌詞,則顯示“Music...

        其中最重要的一點(diǎn)就是時(shí)間與歌詞的更新顯示,相關(guān)程序段如下:

        4 結(jié) 論

        文中基于Qt/Embedded設(shè)計(jì)的MP3應(yīng)用播放器,目前已經(jīng)實(shí)現(xiàn),能夠在Windows操作平臺(tái)上運(yùn)行正常,實(shí)現(xiàn)了基本的打開(kāi)歌曲、歌曲切換、暫停、歌曲列表、歌詞和時(shí)間進(jìn)度條的功能。此播放器是在Windows操作系統(tǒng)下的QT集成環(huán)境下完成的,只要將此播放器的代碼在其他QT能夠運(yùn)行的平臺(tái)上重新編譯就可以實(shí)現(xiàn)在當(dāng)前平臺(tái)上運(yùn)行,真正做到了“一次編寫(xiě),處處編譯“的目的。Qt/Embedded使用了Qt在桌面上的所有功能,豐富的接口應(yīng)用程序函數(shù)和基于組件的模塊化編程思想,將會(huì)使Qt/Embedded成為未來(lái)嵌入式的主流GUI。

        [1]王靈芝,陳雷松.基于嵌入式Linux與Qt的MP3播放器的設(shè)計(jì)[J].漳州師范學(xué)院學(xué)報(bào):自然科學(xué)版,2009(1):39-43.

        WANG Ling-zhi,CHENG Lei-song.Design of MP3 player based on embedded Linux and Qt[J].Zhang zhou Teachers College:Natural Science Edition,2009(1):39-43

        [2]博創(chuàng)科技.嵌入式系統(tǒng)試驗(yàn)指導(dǎo)書(shū)[M].北京:北京博創(chuàng)興業(yè)科技有限公司,2006.

        [3]汪勇,熊前興.MP3文件格式解析[J].計(jì)算機(jī)應(yīng)用軟件,2004(12):126-128.

        WANG Yong,XIONG Qian-xing.MP3 file format parsing[J].Computer Application Software,2004(12):126-128.

        [4]蘆東昕,周建彬,譚振華.基于Qt/Embedded的控件擴(kuò)展研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006(10):97-100.

        LU Dong-xin,ZHOU Jian-bin,TAN Zhen-hua.Reseacher&implementation of extended widgets based on Qt/Emdedded[J].Computer Technology and Development,2006(10):97-100.

        [5]王森林,莊圣賢.基于嵌入式Linux的MP3播放器設(shè)計(jì)[J].重慶工學(xué)院學(xué)報(bào),2007(3):65-68.

        WANG Sen-lin,ZHUANG Shen-xian.Design of MP3 player on embedded Linux[J].Chongqing Institute of Technology,2007(3):65-68.

        [6]何劍鋒,鄔文彪.嵌入式Linux系統(tǒng)的Qt/Embedded圖形界面開(kāi)發(fā)[J].電子工程師,2007(7):46-48

        HE Jian-feng,WU Wen-biao.Development of Qt/Embedded graphical interface based on linux[J].Electronics Engineers,2007(7):46-48.

        猜你喜歡
        圖形用戶(hù)界面播放器解碼
        《解碼萬(wàn)噸站》
        Walkman誕生40周年 索尼適時(shí)發(fā)布NW-ZX500和NW-A100系列播放器
        解碼eUCP2.0
        基于STM32的MP3播放器設(shè)計(jì)
        電子制作(2019年9期)2019-05-30 09:41:44
        圖形用戶(hù)界面外觀設(shè)計(jì)專(zhuān)利保護(hù)問(wèn)題探析——以“奇虎訴江民案”為例
        NAD C368解碼/放大器一體機(jī)
        Quad(國(guó)都)Vena解碼/放大器一體機(jī)
        Moon ACE播放器/放大器一體機(jī)
        淺談圖形用戶(hù)界面(GUI)技術(shù)專(zhuān)利現(xiàn)狀
        圖形用戶(hù)界面法律保護(hù)問(wèn)題與對(duì)策
        狂插美女流出白浆视频在线观看| 亚洲av无码电影网| 久久久久中文字幕无码少妇| 99日本亚洲黄色三级高清网站| 亚洲中文字幕亚洲中文| 自由成熟女性性毛茸茸应用特色| 无码aⅴ精品一区二区三区| 欧美一区二区三区激情| 狠狠色综合播放一区二区| 亚洲国产一区二区三区,| 国内精品毛片av在线播放| 日韩人妻不卡一区二区三区| 内射爽无广熟女亚洲| 熟妇五十路六十路息与子| 久久久精品人妻一区二区三区日本| 国产毛片精品av一区二区| 国产女人18毛片水真多18精品| 亚洲成人免费av影院| 国产精品成人3p一区二区三区| 国产成a人亚洲精v品无码性色| 成人午夜免费福利| 国产理论亚洲天堂av| 综合图区亚洲另类偷窥| 午夜成人鲁丝片午夜精品| 亚洲欧美日韩精品中文乱码| 久久夜色精品国产九色| 男女主共患难日久生情的古言| 久久久精品国产亚洲av网深田 | 白白色发布的在线视频| 曰本女人与公拘交酡| 亚洲av无码一区二区三区性色 | 国产精品天天在线午夜更新| 久久久亚洲精品蜜桃臀| 国产一区二区丁香婷婷| 国产精品自拍视频在线| 久久婷婷国产综合精品| 人妻无码αv中文字幕久久琪琪布 美女视频黄的全免费视频网站 | 久久青青草原亚洲AV无码麻豆| 国产毛片一区二区三区| 国产乱码一区二区三区精品| 国产又a又黄又潮娇喘视频|