標籤:style blog http color os 使用 ar strong for
***************************************************************************************************************************
EasyWave 時間:2014.09.06
類別:Media播放器-TCPMP播放器簡介 聲明:轉載,請保留連結
注意:如有錯誤,歡迎指正。這些是我學習的日誌文章......
***************************************************************************************************************************
一:TCPMP簡介
TCPMP-The Core Pocket Media Player是著名的PDA媒體播放器。掌上裝置中最棒的媒體播放軟體,完全可以用它替代裝置系統內建的任何一款播放器,支援眾多媒體格式。並且可以通過外掛程式的形式擴充功能,如同步字幕、歌詞顯示,更多的媒體格式支援等。
二:TCPMP功能介紹
TCPMP是一個功能強大開放式的開源多媒體播放器,播放器主要由核心架構模組(common工程)和解碼器分離器外掛程式組成。 TCPMP的外掛程式非常多,聯合幾個最常用的外掛程式(ffmpeg、splitter)來說明,其中interface外掛程式實現TCPMP的介面,由於他和媒體播放沒有什麼關係,這部分可以完全被替換掉,替換成自己的介面。
- ffmpeg工程是系統主要的音視頻解碼模組,ffmpeg是一個集錄製、轉換、音/視頻編碼解碼功能為一體的完整的開源解決方案。FFmpeg的開發是基於Linux作業系統,但是可以在大多數作業系統中編譯和使用。ffmpeg支援MPEG、DivX、MPEG4、AC3、DV、FLV等40多種編碼,AVI、MPEG、OGG、Matroska、ASF等90多種解碼。很多開源播放器都用到了ffmpeg。但是ffmpeg程式解碼效率不是很高,系統僅僅使用了FFmpeg的部分解碼功能。ffmpeg主目錄下主要有libavcodec、libavformat和libavutil等子目錄。其中libavcodec用於存放各個encode/decode模組,libavformat用於存放muxer/demuxer模組,libavutil用於存放記憶體操作等常用模組。本系統的媒體檔案分離器有單獨的splitter模組完成所以不需要libavformat子目錄。ffmpeg目錄下libavcodec、libavutil保留子目錄。
- libmad工程用於MP3檔案解碼,該工程包含兩個功能模組,一個負責解析MP3檔案格式,包括MPEG1音頻檔案 (MP1,MP2,MP3,MPA),讀取每一幀音頻資料;另一個負責解碼MPEG1音頻資料,解碼代碼在libmad子目錄中。 libmad是一個開源的高精度 MPEG1音頻解碼庫,支援 MPEG-1(Layer I, Layer II 和 LayerIII,也就是 MP3)。libmad提供 24-bit 的 PCM 輸出,完全是定點計算,非常適合沒有浮點支援的平台上使用。使用 libmad 提供的一系列 API,就可以非常簡單地實現 MP3 資料解碼工作。在 libmad 的原始碼檔案目錄下的 mad.h 檔案中,可以看到絕大部分該庫的資料結構和 API 等。libmad是用的fixed-integer,通過整數類比小數計算的,精度只能保證到小數點後第9位(大於0的最小值 0.00000000372529),雖然解碼精度會有損失,但是極大提高瞭解碼效率,特別是在嵌入式裝置上也可以實現高碼率MP3檔案的解碼。
- splitter工程用於解析多種音視頻檔案格式。可以解析的檔案格式包括:ASF媒體檔案,視頻檔案 (AVI,DIVX),Windows波形檔案 (WAV,RMP),MPEG電影檔案 (MPEG,MPG,MPV),MPEG4檔案 (MP4,3GP,M4A,M4B,K3G)。以上格式可以被解析但是資料編碼不一定能正確解碼,需要依賴系統的解碼器。
- common工程是核心模組,是一個開放的集資料輸入、轉換、音/視頻解碼、訊號輸出等功能為一體的完整的多媒體播放架構。這個架構自身不包含任何的Decode和Split功能,這些功能由外掛程式實現,核心模組以一個樹狀結構管理所有的功能模組和外掛程式模組,實現資料Render功能,對輸入、轉換、輸出資料流程的控制,接受播放過程中的操作和對事件進行處理,同時也實現系統運行中經常使用的一些共用函數,比如解碼過程中經常使用的逆離散餘弦變換,記憶體操作,介面中需要使用的多語言字元處理等。
三:TCPMP現狀 目前TCPMP已經不開源,而且也只有ARMV4版本下的source,因此對於ARMV5版本的或者更進階別的就都沒有啦,同時WINCE方面的應用比較多些,而Linux下目前很少,幾乎沒有看到,很不錯很優秀的播放器!!
四:TCPMP目錄架構 TCPMP的目錄架構如所示:
圖一:TCPMP目錄架構之一
圖二:TCPMP目錄架構之二
有哪位朋友可以將其移植到Linux中去呢?
媒體播放器之:TCPMP播放器簡介