這是一個克羅埃西亞人, 基於 LIBMAD 0.15.1b 解碼器寫的一個方便工具類別. 在 VS 2008 下幾乎不用修改就能編譯直接使用. (修改 pow 與 sqrt 的參數型態, 即可正確編譯完成). 相當方便簡潔.
下面是範例程式:
WMp3* mp3 = new WMp3;
mp3->OpenMp3File(argv[1],2000); // 2000 是 buffer size
mp3->Play();
看吧, 這三行就可以播放 mp3 音樂檔.
如何把這東西加到我的 project ?
Step 1: 取消 Precompiled Headers
詳細作法:
[Project]->[Properties] -> [C/C++] -> [Precompiled Headers] -> 選擇 Not Using Precompiled Headers
Step 2: 把 wmp3class_source\src 裡面的一堆 source 與 header files 加進你的 project (注意: example.cpp 不用)
Step 3: 把 winmm.lib 加到你的專案
詳細作法:
[Project]->[Properties] -> [Linker] -> [Input] -> [Additional Dependencies]: winmm.lib
Step 4: 加入 #include "wmp3.h"
Step 5: 直接開始編譯 (會出現一堆錯誤!! 別怕)
修正 1: pow 與 sqrt 的參數型態為 float
修正 2: 因為 VS2008 預設專案為 Unicode, 所以一些呼叫預設會是 Unicode 版本方式呼叫.
例如: MessageBox 預設為轉成 MessageBoxW, 所以會有下面的錯誤.
最簡單的方法, 就是把那些出錯的 MessageBox 呼叫, 改成 MessageBoxA 強制使用 Ascii 版本. 即可解決
標準解法: 應該把裡面的 char 改成 Uncode 版本的 TCHAR 重新編譯.
Step 6: 測試
WMp3* mp3 = new WMp3;
mp3->OpenMp3File("c:\\test.mp3",2000); // 2000 是 buffer size
mp3->Play();
缺點: CPU 需求比較大一點, 以我的電腦 Intel Pentium Mobile Processor 1.4 G 來說, 執行 example.exe 播放 mp3 音樂大致需要 8% ~ 18%, 而 foobar2000 大約為 1%.
我想可能是 example.cpp 裡面為了簡單只用 sleep 的方式檢查 mp3 播放狀態, 並沒有使用高效率的方法處理的原因.
如果你像我一樣想需要一個很簡單得 mp3 播放功能的程式, 這東西我很滿意.
謝謝你, 希望文章對你有幫助.
回覆刪除Enjoy.
Hello板主
回覆刪除那個連結好像死了
不之可否把麻煩您再次弄個連結
或著寄給小弟
非常急需>"<
mail:
yuancheneric@gmail.com
感激不盡
1. fixed.
回覆刪除2. you can go to the home page: http://www.underbit.com/products/mad/
Thank you!
Jing.
不好意思,我是一位初學者
回覆刪除我想要寫出 DEV C++ 音樂播放器
所以 我想請版主
可以寫一個簡單的的播放程式 給我做為參考嗎
這是我的信箱:as6309123@yahoo.com.tw