歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux播放器MPlayer嵌入式開發系統中的應用

摘要:本文論述了MPlayer在嵌入式開發系統中的應用,說明了如何在嵌入式開發板的平台上實現MPlayer的配置、編譯、安裝及調試過程。
  關鍵詞:嵌入式系統;MPlayer;MEncoder

  引言
  嵌入式系統是以應用為中心、以計算機技術為基礎,軟件硬件可裁剪,適應於應用系統的功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。我們將MPlayer移植到嵌入式系統中,是因為MPlayer播放器是Linux下最優秀的多媒體播放器之一,它的播放速度最快,支持的文件格式也最多。隨著技術的不斷進步,媒體播放器已越來越多,選擇一款多功能播放器,實在不容易。MPlayer就是個好的媒體播放器,資源占用率極低,支持格式極廣,輸出設備支持極多,所以值得移植到嵌入式系統中。

  配置與編譯安裝MPlayer
  MPlayer是Linux上的電影播放器,它的功能十分強大,能夠播放眾多格式的文件,在X86 PC機上運行很穩定,也可以把它移植到非X86CPU上的嵌入式系統中來。我們就是將MPlayer軟件移植到ARM9開發板中,讓MPlayer運行在ARM核上。MPlayer能使用眾多本地的Xanim,RealPlayer和Win32 DLL編解碼器,播放大多數MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、QT/MOV、FLI、RM、NuppelVideo、yuv4mpeg、FILM、RoQ文件。借助於MPlayer你能觀看VideoCD、SVCD、DVD、3ivx、RealMedia和DivX格式的電影。MPlayer的另一個大的特色是支持廣泛的輸出設備,它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、Aalib、DirectFB下工作,而且你也能使用GGI和SDL(由此使用它們支持的各種驅動模式)和一些低級的硬件相關的驅動模式。這個播放器能很穩定地播放被破壞的MPEG文件,並且它能播放Windows media player都打不開的有損壞的AVI文件,甚至,沒有索引部分的AVI文件也可以播放。

  MEncoder的使用
  MPlayer采用的編解碼器包是libavcodec,這個編解碼器包可以在多種平台上對H263/MPES/RV10/DivX4/DivX5/MP41/MP42/WMV1編碼格式的視頻流進行解碼,它同時也是已知完成這些任務最快的解碼器。MEncoder(MPlayer電影解碼器)可以生成MPEG(MPEG-PS)格式的輸出文件。它們只能用於libavcodec的mpeg1video編解碼器,因為一般播放器(除了MPlayer) 為MPEG文件中包含的是MPEG1視頻流和MPEG1 layer 2(MP2)音頻流。要改變MEncoder的輸出文件格式,可以使用-of mpeg選項。例如:mencoder -of mpeg -ovc lavc -lavcopts vcodec-mpeg1video -oac copy media.avi -o output.mpg。
  MEncoder能用兩種方式處理輸入流:編碼和復制。
  ?視頻流(一ovc copy選項):MEncoder可以把FLI或者VIVO或者MPEG1的視頻放到AVI文件中;還可以將視頻流復制用於只有音頻流需要被編碼的情況。
  ?音頻流(-oac copy選項):可以把一個外部音頻文件(MP3,Vorbis)傳到輸出流中。使用-audiofile選擇來實現這個功能。
  MEncoder可以修復交錯損壞的AVI文件,我們可以簡單地復制視頻和音頻流,並用MEncoder產生索引。命令為:mencoder -idx input.avi -ovc copy -oac copy -o output.avi。
  MEncoder還可以用來修復兩個或多個AVI文件並將其合並成一個文件。
  如果需要GUI圖形用戶界面,就要安裝gtk並且必須在運行./ configure時使用_enable-gui來編譯代碼,然後在config文件中添加gui=yes;或者用-s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer,之後運行gmpalyer即可。目前MPlayer 不自帶skin,所以要使用GUI,就必須到網上下載,將下載回來的文件解壓到$HOME/.mpslayer/skin下。
  MPlayer有一個用戶定義的OSD菜單接口,在編譯MPlayer時,在./configure加上_enable-menu參數,這樣確保安裝了OSD字體;把etc/menu.conf復制到./mplayer目錄下;把etc/input.conf復制到./mplayer目錄下;檢查並編輯input.conf來啟動菜單控制鍵;鍵入mplayer –menu file.avi,來使用mplayer。
  將上述步驟做好後,就可以編譯MPlayer,先到網上下載MPlayer0.91版本:
  tar xzvf mplayer-0.91.tgz
  ./configure
  make
  make install
  如果進行順利的話,就可以運行你想看到的圖像和聲音了。

  MPlayer在開發板上的實現

  不過以上這些都是在X86 PC上實現的,要想在以ARM(開發板CPU為S3C2410)為核心嵌人式開發板上實現此過程,還需要做下面的工作。首先要在交叉編譯環境中對MPlayer進行編譯,將Mplayer源代碼中關於視、音頻部分以及驅動部分寫入Makefile文件裡。由於開發板只有64MB的SDRAM及16MB的FLASH,而且應用程序一般都燒寫到FLASH中,應用程序大概有16MB左右,所以直接將應用程序燒寫到開發板裡的FLASH中的做法不可行,這樣開發板會因空間太小而拒絕運行應用程序。當要在嵌入式系統中調試某個軟件時,可以將軟件應用代碼拷貝到移動存儲中,再將移動存儲裡的文件加載到嵌入式開發板上進行調試,也可以將軟件應用代碼通過PC機上的Linux操作系統掛載到嵌入式系統的開發板中進行調試,運行正常後再將軟件應用代碼燒寫到開發板中,這樣就可以避免應用程序在FLASH上的重復擦寫。我們所采用的方法是將宿主機和嵌入式開發板之間用以太網連接,在宿主機的Linux操作系統下的終端中運行minicom作為開發板的顯示終端,通過Linux下的NFS網絡文件系統將宿主機的硬盤安裝到開發板上的某個目錄下,然後再運行MPlayer的可執行文件./mplayer。將你想要播放的圖像文件1.avi也放到宿主機的某個目錄下(如:/home/1.avi),同時將mplayer可執行文件也拷貝到此目錄下/home/mplayer。假設宿主機的IP地址為192.168.2.122,在目標板上輸入mount -o nolock 192.168.2.122:/home /mnt進入目標板的mnt目錄:cd/mnt,然後運行./mplayer 1.avi,即可以觀看在開發板的LCD上顯示1.avi的內容。當然最後不要忘了播放完成後要從目標板上卸載宿主機的目錄,鍵入umount/mnt即可。如果沒有NFS網絡系統的支持,也可以自己做一個10MB的文件系統,開發板的FLASH為16MB,系統資源占去4MB左右FLASH的空間,而將ramdisk文件系統作為系統運行的最小文件系統,容量大概限定在2MB以內,剩下的10MB左右的FLASH可以做成Cramfs文件系統,它是一個壓縮文件系統,實際容量可達到12MB~15MB,基本上滿足了用戶的應用要求。改變內核的配置,將支持Cramfs文件系統的功能編譯到內核中,重新編寫驅動程序並加到Makefile文件中,然後進行編譯,在燒寫ramdisk文件系統之後繼續燒寫Cramfs文件系統。燒寫完畢後啟動開發板,Cramfs就會作為ramdisk的子目錄出現,直接調用該目錄下的應用文件即可。

  此開發板可用於掌上PDA的前期設計和應用。嵌入式系統軟件的發展是以應用為中心,所以我們要利用國內巨大的應用市場資源,將我國的軟件業發展成嵌入式系統軟件、支撐軟件、應用軟件共同發展的格局。

Copyright © Linux教程網 All Rights Reserved