• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            JACKY_ZZ[貓貓愛吃魚]

            春風拂面兩頰紅,秋葉灑地一片金。 夏荷搖曳一身輕,冬雪覆蓋大地銀。
            posts - 30, comments - 123, trackbacks - 0, articles - 0

            [C/C++] 自己的mp3播放器【帶頻譜】

            Posted on 2009-02-04 09:22 jacky_zz 閱讀(13471) 評論(54)  編輯 收藏 引用 所屬分類: C/C++

            開發了有一段時間了,說來還真是很長時間了。有興趣可以參考我在Codeproject上發布的三篇文章。
            http://www.codeproject.com/KB/audio-video/DSound_Spectrum.aspx
            http://www.codeproject.com/KB/audio-video/DirectSound_Spectrum2.aspx
            http://www.codeproject.com/KB/audio-video/DSound_Spectrum3.aspx
            以上三篇文章或多或少都存在一些問題,其中最普遍的問題是頻譜顯示的并不是實時(real-time)的。但截圖顯示的這個版本是準確的了(我認為)。源碼還在整理中,整理完畢后即發布到Codeproject上。

            實現思路:
            1、MP3解碼由libmad開源解碼庫完成;
            2、兩個線程:播放線程,頻譜線程,其中頻譜線程使用的數據來自播放線程;
            3、播放線程總是通過解碼器獲取4608字節數據,為什么要這個數字?這個是看了網上的相關文檔和自己不斷的測試得到的,這個數據可以有效的降低因為聲卡回放引入的延時,少于這個數字將播放不正常;
            4、頻譜線程根據當前播放的時間獲取到正在播放的PCM數據,使用FFT計算后繪圖顯示。

            版本歷史:
            2009-02-08:支持拖拽,mp3,wma,ogg,wav支持,支持拖拽音頻文件到exe啟動播放 
            2009-02-09:BUG修復:在單CPU上出現線程死鎖,在雙CPU上未出現
            2009-03-27:支持APE格式
            2009-03-30:支持FLAC格式 
            2009-05-04:添加暫停、停止操作,結束一直以來朋友們提出沒有暫停和停止操作的歷史
            2009-05-05:為播放、暫停、停止,退出操作添加系統熱鍵,分別為Ctrl+1、Ctrl+2、Ctrl+3、Ctrl+4
            2009-05-06:為播放、暫停、停止,退出操作添加系統熱鍵, 分別為A、D、S、X,即按A或Ctrl+1為播放,D或Ctrl+2為暫停,S或Ctrl+3為停止、X或Ctrl+4為退出

            最新版本下載
            =======================================================
            it's a long story to tell about this article, if you are interest in this project, please visit those three articles were posted on codeproject.
            http://www.codeproject.com/KB/audio-video/DSound_Spectrum.aspx
            http://www.codeproject.com/KB/audio-video/DirectSound_Spectrum2.aspx
            http://www.codeproject.com/KB/audio-video/DSound_Spectrum3.aspx
            those three atticles have some bugs, and the main problem is spectrum display what is not real-time. but this version is real-time(i think).
            the latest version support mp3, wma, wav, ogg, ape, flac now,  and you can download it with this link: AudioPlayer_20090506065.zip

            Feedback

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-04 10:22 by tangxinfa
            有點意思

            # re: 自己的mp3播放器【帶頻譜】[未登錄]  回復  更多評論   

            2009-02-04 12:06 by kenlistian
            頻譜處理很麻煩.不過現成代碼提到這倒很很少.

            # re: 自己的mp3播放器【帶頻譜】[未登錄]  回復  更多評論   

            2009-02-04 13:46 by jacky_zz
            哦,是嗎,你對頻譜處理有獨到的見解?有機會交流一下?
            我的QQ:59502553

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-04 14:26 by 路青飛
            不錯。
            支持一下。
            坐在小板凳上觀注你。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-09 08:13 by audioer
            你好,我找這方面的代碼找了好久,自己也研究了好久,但就是沒有找到好的代碼,你的給我很大幫助,我想問一下,你的項目工程是否可以在Visual C++ 6.0下編譯?有機會好好交流
            QQ:543644213

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-09 08:16 by audioer
            你的QQ有碼?我想聯系你,謝謝

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-09 08:33 by audioer
            我在Visual Studio 2008中編譯出現錯誤:MWrapper.obj : error LNK2019: 無法解析的外部符號 _WMCreateSyncReader@12,該符號在函數 "void __cdecl WMA_Reader_Init(struct _WMA_SYNC_READER *,class CStream *,int,short)" (?WMA_Reader_Init@@YAXPAU_WMA_SYNC_READER@@PAVCStream@@HF@Z) 中被引用
            1>C:\Documents and Settings\Administrator\桌面\WinDirectAudio_20081212\Debug\WinDirectAudio.exe : fatal error LNK1120: 1 個無法解析的外部命令

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-09 08:52 by jacky_zz
            TO audioer,QQ:59502553
            在VS2008里編譯,需要有Windows Media Format 9以上的支持。
            PS:這個程序很大程度上參考了YoYoPlayer(Java開發),有興趣的話可以參考以下地址:
            http://www.blogjava.net/hadeslee/archive/2008/07/29/218161.html

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-14 19:29 by abowan
            期待發布源碼··

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-02-17 14:29 by 阿愚
            您好!我現在在學C#,在用“千千靜聽”播放音樂時,覺得里面的頻譜顯示很有意思,也想自己弄一個,不知您能否指導一下?我的郵箱:eyu66@126.com
            Skype用戶名:eyu660

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-04-15 18:02 by 云楓
            小弟目前工作中要涉及這方面的內容,可不可以吧你的源代碼發到我郵箱,萬分感謝!
            郵箱:zhidanzzd@163.com
            QQ:253074385

            # 小弟目前正想用這個可不可以  回復  更多評論   

            2009-04-22 15:19 by
            謝謝大俠,我的郵箱是dxgsoft@126.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-04-30 00:20 by zzfajia
            請問樓主用什么開發平臺。
            我在VC++2008上出現以下錯誤,請賜教。

            1>IO.obj : error LNK2001: 無法解析的外部符號 _mad_timer_zero
            1>IO.obj : error LNK2019: 無法解析的外部符號 _mad_timer_add,該符號在函數 "protected: virtual void __thiscall CMP3In::GetDataInternal(void * *,unsigned long *)" (?GetDataInternal@CMP3In@@MAEXPAPAXPAK@Z) 中被引用
            1>IO.obj : error LNK2019: 無法解析的外部符號 _mad_synth_frame,該符號在函數 "protected: virtual void __thiscall CMP3In::GetDataInternal(void * *,unsigned long *)" (?GetDataInternal@CMP3In@@MAEXPAPAXPAK@Z) 中被引用

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-04-30 10:42 by jacky_zz
            沒有安裝libmad,或沒有找到libmad位置

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-05-03 10:42 by zzfajia
            謝謝樓主指教!
            可為什么VC6找不到*.lib文件有提示,VC2005,2008卻沒有。
            另外添加了libmad.lib文件以后,又出現下列錯誤。這又是什么問題,可能又是找不到什么類庫吧?
            請指教。不勝感謝!!!

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-05-03 10:44 by zzfajia
            謝謝樓主指教!
            可為什么VC6找不到*.lib文件有提示,VC2005,2008卻沒有。
            另外添加了libmad.lib文件以后,又出現下列錯誤。這又是什么問題,可能又是找不到什么類庫吧?
            請指教。不勝感謝!!!

            1>------ 已啟動生成: 項目: WinDirectAudio, 配置: Debug Win32 ------
            1>WinDirectAudio : warning PRJ0009 : 未能打開生成日志進行寫入。
            1>請確保該文件未被其他進程打開并且未被寫保護。
            1>正在鏈接...
            1>BasicPlayer.obj : error LNK2019: 無法解析的外部符號 __RTC_CheckEsp,該符號在函數 "__int64 __cdecl as_long(union _LARGE_INTEGER)" (?as_long@@YA_JT_LARGE_INTEGER@@@Z) 中被引用
            1>FastFourierTransform.obj : error LNK2001: 無法解析的外部符號 __RTC_CheckEsp
            1>Utils.obj : error LNK2001: 無法解析的外部符號 __RTC_CheckEsp
            1>WinDirectAudio.obj : error LNK2001: 無法解析的外部符號 __RTC_CheckEsp

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-05-09 16:13 by 輪子
            大俠,能否給我一份源代碼。
            songhualei_1@163.com
            不勝感激

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-05-20 17:13 by 謝濤
            你的頻普我借用了,嘿嘿。不知道你有沒有做過用DMO解碼wma格式的音頻數據流,放到directsound緩沖區播放的例子沒?
            我目前想用DMO處理wma 然后用DSound 播放,可惜屢試不成功!希望給我點介意,郵箱:xietao1984513@163.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-05-21 09:34 by jacky_zz
            這個版本支持wma的解碼嘛,只不過是使用COM接口的方式。DMO沒有試過,但流程差不多一樣吧,都是獲取PCM格式的數據,然后播放。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-07-03 16:56 by 海島
            今天用VC2005編譯了你的程序,過程當中碰到很多問題,后來安裝了WMSDK,DIRECTXSDK,也碰到上面說的mad_time_zero等問題,后來我拷貝了一個libmad.lib進來,然后把libogg和libvorbis等目錄都刪除掉,在源代碼中也把相應的地方去掉,只保留libmad,最后終于編譯通過。
            謝謝。
            我將好好的閱讀你的代碼以加強理解。
            在此也想問一下,你的暫停和恢復是什么解決的。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-07-06 16:50 by jacky_zz
            用事件來控制。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-07-28 20:50 by lyon
            首先很感謝樓主能夠提供這方面的知識和源碼!我也看了樓主在Codeproject上的文章,但因為水平有限,第一篇還勉強能夠看懂,第二篇樓主可能改變比較大,我看源碼也不太懂。本人也正在做音頻頻譜顯示方面,在實時性方面也搞得不好。請問樓主是怎樣解決這個實時性問題的?在取數據和顯示方面希望能夠詳細說說,我想其他人也應該很有興趣。請多多指教!謝謝

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-07-30 16:11 by czbe
            你好,最近對MP3播放和頻譜顯示很有興趣,正在找這方面的例子,能否把源代碼發一份給我?不勝感激!cathaychen@gmail.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-08-03 08:27 by jacky_zz
            To lyon:
            你好,我現在的實現在實時性上是達到了目的,但現在我現在的這個實現也存在一定的問題:在單CPU的計算機上,播放線程和頻譜線程CPU占用率較高,15~30%之間;在雙CPU的計算機上(我的)測試呢,沒有啟動QQ2009的情況呢,CPU占用率在0~3%之間,一旦啟動QQ2009,一下子就飚升上去了,在10~25%之間。

            我把獲取實時的代碼貼在這里:
            ===========System.h===========
            #pragma once

            #ifndef INCLUDE_SYSTEM
            #define INCLUDE_SYSTEM

            typedef __int64 jlong;
            typedef unsigned int juint;
            typedef unsigned __int64 julong;
            typedef long jint;
            typedef signed char jbyte;

            #define CONST64(x) (x ## LL)
            #define NANOS_PER_SEC CONST64(1000000000)
            #define NANOS_PER_MILLISEC 1000000

            jlong as_long(LARGE_INTEGER x);
            void set_high(jlong* value, jint high);
            void set_low(jlong* value, jint low);

            class System
            {
            private:
            static jlong frequency;
            static int ready;

            static void init()
            {
            LARGE_INTEGER liFrequency = {0};
            QueryPerformanceFrequency(&liFrequency);
            frequency = as_long(liFrequency);
            ready = 1;
            }
            public:
            static jlong nanoTime()
            {
            if(ready != 1)
            init();

            LARGE_INTEGER liCounter = {0};
            QueryPerformanceCounter(&liCounter);
            double current = as_long(liCounter);
            double freq = frequency;
            return (jlong)((current / freq) * NANOS_PER_SEC);
            }
            };

            #endif

            ===========System.cpp===========
            #include "System.h"

            inline void set_low(jlong* value, jint low)
            {
            *value &= (jlong)0xffffffff << 32;
            *value |= (jlong)(julong)(juint)low;
            }

            inline void set_high(jlong* value, jint high)
            {
            *value &= (jlong)(julong)(juint)0xffffffff;
            *value |= (jlong)high << 32;
            }

            jlong as_long(LARGE_INTEGER x) {
            jlong result = 0; // initialization to avoid warning
            set_high(&result, x.HighPart);
            set_low(&result, x.LowPart);
            return result;
            }

            LARGE_INTEGER liFrequency = {0};
            BOOL gSupportPerformanceFrequency = QueryPerformanceFrequency(&liFrequency);
            jlong System::frequency = as_long(liFrequency);
            int System::ready = 1;

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-08-03 08:34 by jacky_zz
            TO lyon:
            獲取數據的原理,我在文章里已提到,我在google上查到一篇文章,是原Winamp的作者寫的,他提到,做實時頻譜分析,首先需要通過FFT轉換,而FFT轉換的計算量與傳入的數據長度成正比,也就是說你傳入的數據越多,計算量就越大,繼而花費CPU的時間就越多,為了減少因為FFT的計算量,就需要減少傳入的數據量,但使用waveOutXXX或DirectSound輸出時,PCM數據量太少的話,是會出現斷音的,經過作者不斷的測試,終于找到一個合適的數值,就是4608。也就是你每次先獲取4608個PCM數據,先將PCM數據輸出到waveOutXXX或DirectSound,然后通過線程同步的方式將PCM數據傳入到頻譜分析線程,此線程負責FFT計算,然后繪圖。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-08-06 10:42 by lyon
            謝謝樓主的回復,如果是DSound的次緩沖區和計算的數據都取4608大小嗎?還有顯示時是把計算出來的頻率全部顯示出來還是只顯示部分,需要選擇頻率嗎?因為我現在顯示的是全部,但效果不如樓主的好!

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-08-10 14:49 by jacky_zz
            DSound的緩沖區大小與讀寫緩沖區大小無關,讀寫緩沖區越大,解碼耗費的時間就多,反之就小。而DSound的緩沖區一般都設置為兩秒的數據量。而頻譜分析,在我的實例里我從環形緩沖區(我設置為1秒的數據量)獲取512字節的數據,通過FFT,再對前256(也就是總數據量512的一半)個數據分析,繪圖。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-08-11 16:07 by lyon
            明白了,現在我做的顯示效果雖然沒有樓主的好,但也好很多啦!再次謝謝樓主的熱心幫忙。我正跟著樓主的步伐繼續做下去,希望以后多多交流!

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-08-12 11:04 by jacky_zz
            TO lyon:
            嗯,這個只能是慢慢的去實驗才能得到最終的效果。
            PS:通過QQ可以和我聯系,59502553。

            # re: 自己的mp3播放器【帶頻譜】[未登錄]  回復  更多評論   

            2009-08-22 11:29 by hao
            期待 能給份源碼
            820156394@qq.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-09-17 09:11 by mayer
            最近研究這個,看到這個非常興奮,希望lz能給份源碼,非常感謝!

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-09-17 09:13 by mayer
            最近研究這個,看到這個非常興奮,希望lz能給份源碼,非常感謝!
            Email: ytzyxhk@163.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-09-18 17:15 by jacky_zz
            TO ALL:
            近期硬盤分區表損壞,所有數據全部丟失(損失慘重)!!!包括AudioPlayer的源碼,現在僅存的源碼在www.codeproject.com上可以下載,感謝網友一直以來對此程序的關心,本打算公開,現在卻因為硬盤問題而無法實現,深表歉意。

            jacky_zz
            2009-09-18

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-11-09 00:14 by littlemo
            LZ你好,我正在學數字信號處理,主要在用MATLAB。現在有個問題是要用MATLAB來實現播放音頻并且能夠實時地顯示出它的頻譜圖。
            很想請教LZ這個頻譜圖實現的具體辦法是怎樣的。我有一些C++經驗,我想依照LZ做的這個東西進行一下移植。請多指教。謝謝

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-11-09 00:15 by littlemo
            哦剛才上一條忘記了,我的Email:ks_frank@foxmail.com
            謝謝

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-11-09 10:21 by jacky_zz
            流程:
            (1)從文件讀取pcm數據;
            (2)將pcm數據寫入到播放設備(waveOut或DirectSound);
            (3)將pcm數據同步到DSP(FFT,繪圖)。
            其中:第一步,讀取的數據不能太大,這個將直接影響后面2步的延時時間,延時時間越大,就不“實時”了,我在網上查的數據量大小是4608字節;第二步是標準操作,沒有什么特別的;第三步,包含的工作有對pcm數據的FFT計算,以及頻譜繪圖。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-17 22:00 by 王君
            嗯。不錯。不錯。。。爽。。。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-17 22:28 by 王君
            學習中。。
            能給分源碼嗎
            萬分感謝。。。
            wj1025a@qq.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-21 18:02 by seliu
            商用便攜產品audio庫:
            fixed-point spectrum 庫 (類似 winamp render,power均化)
            fixed-point wma decode 庫(wma7 8 9)
            fixed-point 31 bands IIR equalizer 庫
            fixed-point tempo 庫(0.5 ~ 2.0)
            fixed-point sample rate convert (重采樣)庫

            以上均可arm優化,可同時用于不小于200M 速度的arm;適用于windows、wince和embedded linux(fixed-point wma decode arm優化需要arm gcc 3.23以上).
            可提供10分鐘內全速運行的測試庫,需要購買用于便攜產品的全速運行庫。
            不提供源代碼,除非用fixed-point SRS WOW HD源代碼交換(請用 arm gcc 3.23以上生成 arm 驗證庫).

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-22 11:32 by seliu
            4608個pcm同步spectrum是在聲卡不會overrun或underrun情況下才正確。
            我采用的同步方法是:取decode pcm stream片段時記錄該片段在總的decode stream中的position;設置callback到wavout或dsound中獲取playback pcm stream已播放pcm總數;計算兩個stream的延遲來同步spectrum(linux下oss:SNDCTL_DSP_GETODELAY SNDCTL_DSP_GETOSPACE 或alsa:snd_pcm_delay).

            有感興趣的朋友嗎?

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-23 10:07 by jacky_zz
            經測試,4608這個值是不會出現overrun的,我參看了很多開源的winamp插件,這個值出現的頻率很高。
            PS:你提到的這個方案我原來也考慮過,好像效果并不是很好,顯示的頻譜與當前播放好像不符合。用waveOut呢,延時比較大;用DirectSound,采用通知點的方式呢,也不是最好的處理辦法。如果能計算出playback的數值,那就是最準確的了。不知你有何更好的辦法??
            我的QQ是59502553,交流下?

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-23 18:04 by seliu
            確實出現overrun的情況不多見;大量IO harddisk的時候,很容易出現underrun的情況了,這時聲音很cut,specturm如果不調整就可能不同步了。
            video player同步問題和specturm同步本質一樣的。先期的player多數采用audio stream為基準同步image stream,現在多采用獨立時鐘tick同步audio stream和image stream,這是很多開源player采用的方法,最重要的原因之一是方便移植,因為audio stream為基準同步需要get delay,這和sound card關聯太大。但是audio stream為基準同步是效率最高的,不需耗cpu去取基準時鐘。

            # re: 自己的mp3播放器【帶頻譜】[未登錄]  回復  更多評論   

            2009-12-24 09:13 by jacky_zz
            你做了這方面的工作了嗎?

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2009-12-24 09:49 by seliu
            當然,我在vs仿真,然后download到商用便攜產品。
            老是整ffmpeg干嗎呢,請教是有商業用途還是個人愛好?

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2010-03-01 17:30 by 西毒
            可以加一下我的Q嗎,
            有些東西想請教一下

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2010-03-01 17:31 by 西毒
            不記得寫QQ:812306014

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2010-03-04 09:16 by 西毒
            請問哪里可以下載到樓主播放器(AudioPlayer_20090506065.zip, 不是codeproject上的那三個)的源代碼?
            或者請人發一份到我郵箱:812306014@qq.com
            謝謝!

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2010-03-16 19:15 by Mike
            我也在研究這個MP3的頻譜顯示問題,有好多細節的東西想咨詢,我已經加你的qq了,如果你在線的話,麻煩加我一下:674273293,希望能分享到你的代碼:我的郵箱:zhangzhiwen.1713@163.com

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2012-02-17 17:30 by liaogang
            /* size of the read/write-ahead, as specified by Java */
            int bufferSizeInBytes;
            int bitsPerSample;
            int frameSize; // storage size in Bytes

            DS_Info結構里面的這些字段是什么意思?

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2012-04-28 16:30 by 劉洋
            我正在做一個關于頻譜分析器的畢設,很高興看到你的文章,也很希望得到你的幫助,我的QQ:654979544
            麻煩您加一下,謝謝

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2013-06-12 22:16 by 路過,打醬油的
            用了一下你沒代碼的播放器,CPU略高,應該是實現不太合理。。。

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2013-08-16 17:45 by 王蕾
            看效果很炫,能否給下源代碼?或者好心的人發給我一份!777leilei@163.com,謝謝!

            # re: 自己的mp3播放器【帶頻譜】  回復  更多評論   

            2014-03-21 15:36 by 秋葉
            拿走了,不客氣。
            草草久久久无码国产专区| 无码任你躁久久久久久久| 久久精品人人做人人爽电影蜜月 | 婷婷久久综合九色综合九七| 久久久久亚洲精品无码网址| 人妻无码精品久久亚瑟影视| 久久精品国产亚洲AV香蕉| 91久久国产视频| 无码人妻久久一区二区三区免费 | 久久精品国产清自在天天线| 久久无码一区二区三区少妇| 国产成人精品免费久久久久| 久久久久无码精品国产app| 久久精品一本到99热免费| 久久久噜噜噜久久中文字幕色伊伊| 精品久久久无码人妻中文字幕| 久久精品国产精品青草app| 婷婷国产天堂久久综合五月| 久久精品成人免费看| 欧美大香线蕉线伊人久久| 亚洲人AV永久一区二区三区久久| 久久精品水蜜桃av综合天堂| 亚洲人AV永久一区二区三区久久| 99久久伊人精品综合观看| 国内精品久久久久影院日本| 亚洲午夜精品久久久久久app| 久久亚洲精品中文字幕三区| 丰满少妇人妻久久久久久| 久久99久久99精品免视看动漫| 久久人妻少妇嫩草AV无码蜜桃| 青青青青久久精品国产| 狠狠色丁香久久综合婷婷| 国产精品对白刺激久久久| 亚洲AV无码一区东京热久久| 大香伊人久久精品一区二区| 欧美久久久久久午夜精品| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品国产亚洲7777| 国产精品免费久久久久久久久| 国产精品美女久久久久| jizzjizz国产精品久久|