青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

JACKY_ZZ[貓貓愛吃魚]

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

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

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

開發(fā)了有一段時(shí)間了,說來還真是很長(zhǎng)時(shí)間了。有興趣可以參考我在Codeproject上發(fā)布的三篇文章。
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
以上三篇文章或多或少都存在一些問題,其中最普遍的問題是頻譜顯示的并不是實(shí)時(shí)(real-time)的。但截圖顯示的這個(gè)版本是準(zhǔn)確的了(我認(rèn)為)。源碼還在整理中,整理完畢后即發(fā)布到Codeproject上。

實(shí)現(xiàn)思路:
1、MP3解碼由libmad開源解碼庫(kù)完成;
2、兩個(gè)線程:播放線程,頻譜線程,其中頻譜線程使用的數(shù)據(jù)來自播放線程;
3、播放線程總是通過解碼器獲取4608字節(jié)數(shù)據(jù),為什么要這個(gè)數(shù)字?這個(gè)是看了網(wǎng)上的相關(guān)文檔和自己不斷的測(cè)試得到的,這個(gè)數(shù)據(jù)可以有效的降低因?yàn)槁暱ɑ胤乓氲难訒r(shí),少于這個(gè)數(shù)字將播放不正常;
4、頻譜線程根據(jù)當(dāng)前播放的時(shí)間獲取到正在播放的PCM數(shù)據(jù),使用FFT計(jì)算后繪圖顯示。

版本歷史:
2009-02-08:支持拖拽,mp3,wma,ogg,wav支持,支持拖拽音頻文件到exe啟動(dòng)播放 
2009-02-09:BUG修復(fù):在單CPU上出現(xiàn)線程死鎖,在雙CPU上未出現(xiàn)
2009-03-27:支持APE格式
2009-03-30:支持FLAC格式 
2009-05-04:添加暫停、停止操作,結(jié)束一直以來朋友們提出沒有暫停和停止操作的歷史
2009-05-05:為播放、暫停、停止,退出操作添加系統(tǒng)熱鍵,分別為Ctrl+1、Ctrl+2、Ctrl+3、Ctrl+4
2009-05-06:為播放、暫停、停止,退出操作添加系統(tǒng)熱鍵, 分別為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播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-02-04 10:22 by tangxinfa
有點(diǎn)意思

# re: 自己的mp3播放器【帶頻譜】[未登錄]  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】[未登錄]  回復(fù)  更多評(píng)論   

2009-02-04 13:46 by jacky_zz
哦,是嗎,你對(duì)頻譜處理有獨(dú)到的見解?有機(jī)會(huì)交流一下?
我的QQ:59502553

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-02-09 08:33 by audioer
我在Visual Studio 2008中編譯出現(xiàn)錯(cuò)誤:MWrapper.obj : error LNK2019: 無法解析的外部符號(hào) _WMCreateSyncReader@12,該符號(hào)在函數(shù) "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 個(gè)無法解析的外部命令

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# 小弟目前正想用這個(gè)可不可以  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-04-30 00:20 by zzfajia
請(qǐng)問樓主用什么開發(fā)平臺(tái)。
我在VC++2008上出現(xiàn)以下錯(cuò)誤,請(qǐng)賜教。

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-07-28 20:50 by lyon
首先很感謝樓主能夠提供這方面的知識(shí)和源碼!我也看了樓主在Codeproject上的文章,但因?yàn)樗接邢蓿谝黄€勉強(qiáng)能夠看懂,第二篇樓主可能改變比較大,我看源碼也不太懂。本人也正在做音頻頻譜顯示方面,在實(shí)時(shí)性方面也搞得不好。請(qǐng)問樓主是怎樣解決這個(gè)實(shí)時(shí)性問題的?在取數(shù)據(jù)和顯示方面希望能夠詳細(xì)說說,我想其他人也應(yīng)該很有興趣。請(qǐng)多多指教!謝謝

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

我把獲取實(shí)時(shí)的代碼貼在這里:
===========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播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-08-06 10:42 by lyon
謝謝樓主的回復(fù),如果是DSound的次緩沖區(qū)和計(jì)算的數(shù)據(jù)都取4608大小嗎?還有顯示時(shí)是把計(jì)算出來的頻率全部顯示出來還是只顯示部分,需要選擇頻率嗎?因?yàn)槲椰F(xiàn)在顯示的是全部,但效果不如樓主的好!

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-08-12 11:04 by jacky_zz
TO lyon:
嗯,這個(gè)只能是慢慢的去實(shí)驗(yàn)才能得到最終的效果。
PS:通過QQ可以和我聯(lián)系,59502553。

# re: 自己的mp3播放器【帶頻譜】[未登錄]  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-09-18 17:15 by jacky_zz
TO ALL:
近期硬盤分區(qū)表?yè)p壞,所有數(shù)據(jù)全部丟失(損失慘重)!!!包括AudioPlayer的源碼,現(xiàn)在僅存的源碼在www.codeproject.com上可以下載,感謝網(wǎng)友一直以來對(duì)此程序的關(guān)心,本打算公開,現(xiàn)在卻因?yàn)橛脖P問題而無法實(shí)現(xiàn),深表歉意。

jacky_zz
2009-09-18

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-11-09 00:14 by littlemo
LZ你好,我正在學(xué)數(shù)字信號(hào)處理,主要在用MATLAB。現(xiàn)在有個(gè)問題是要用MATLAB來實(shí)現(xiàn)播放音頻并且能夠?qū)崟r(shí)地顯示出它的頻譜圖。
很想請(qǐng)教LZ這個(gè)頻譜圖實(shí)現(xiàn)的具體辦法是怎樣的。我有一些C++經(jīng)驗(yàn),我想依照LZ做的這個(gè)東西進(jìn)行一下移植。請(qǐng)多指教。謝謝

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-12-17 22:00 by 王君
嗯。不錯(cuò)。不錯(cuò)。。。爽。。。

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

以上均可arm優(yōu)化,可同時(shí)用于不小于200M 速度的arm;適用于windows、wince和embedded linux(fixed-point wma decode arm優(yōu)化需要arm gcc 3.23以上).
可提供10分鐘內(nèi)全速運(yùn)行的測(cè)試庫(kù),需要購(gòu)買用于便攜產(chǎn)品的全速運(yùn)行庫(kù)。
不提供源代碼,除非用fixed-point SRS WOW HD源代碼交換(請(qǐng)用 arm gcc 3.23以上生成 arm 驗(yàn)證庫(kù)).

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

有感興趣的朋友嗎?

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】[未登錄]  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2009-12-24 09:49 by seliu
當(dāng)然,我在vs仿真,然后download到商用便攜產(chǎn)品。
老是整ffmpeg干嗎呢,請(qǐng)教是有商業(yè)用途還是個(gè)人愛好?

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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結(jié)構(gòu)里面的這些字段是什么意思?

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2013-06-12 22:16 by 路過,打醬油的
用了一下你沒代碼的播放器,CPU略高,應(yīng)該是實(shí)現(xiàn)不太合理。。。

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

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

# re: 自己的mp3播放器【帶頻譜】  回復(fù)  更多評(píng)論   

2014-03-21 15:36 by 秋葉
拿走了,不客氣。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美不卡激情三级在线观看| 日韩亚洲欧美成人| 亚洲男人的天堂在线观看| 欧美日韩日本国产亚洲在线 | 午夜精品一区二区三区在线播放| 欧美日韩欧美一区二区| 亚洲在线黄色| 久久电影一区| 91久久亚洲| 亚洲视频播放| 激情亚洲一区二区三区四区| 欧美mv日韩mv国产网站| 欧美日韩国产精品一卡| 午夜国产精品影院在线观看| 欧美自拍偷拍午夜视频| 亚洲精品女av网站| 亚洲午夜高清视频| 极品日韩久久| 亚洲美女av电影| 韩国福利一区| 99国产一区二区三精品乱码| 国产日韩欧美不卡| 亚洲电影免费在线| 国产精品久久久久久久久久妞妞| 久久久国产午夜精品| 欧美激情偷拍| 久久精品视频在线| 欧美日韩国产高清| 每日更新成人在线视频| 欧美日韩天天操| 欧美阿v一级看视频| 国产精品xxx在线观看www| 久久婷婷丁香| 国产精品入口夜色视频大尺度 | 欧美在线观看网站| 欧美精品一区二区三区很污很色的| 亚洲欧美日韩国产综合| 久久这里有精品15一区二区三区| 亚洲网站视频| 蜜臀99久久精品久久久久久软件| 欧美一级二区| 国产精品www网站| 亚洲激情二区| 在线观看91精品国产入口| 亚洲视频在线观看免费| 亚洲国语精品自产拍在线观看| 亚洲一区一卡| 亚洲网站在线| 欧美日韩三级| 亚洲精品少妇30p| 亚洲国产一区在线| 久久激情视频久久| 久久久www免费人成黑人精品 | 欧美极品在线观看| 欧美日一区二区三区在线观看国产免| 麻豆成人在线| 欧美三日本三级少妇三2023| 欧美激情视频一区二区三区在线播放| 国内精品久久久久久| 亚洲一区在线视频| 亚洲综合色噜噜狠狠| 欧美日韩一级片在线观看| 91久久精品国产91性色tv| 亚洲国产精品久久久久| 美女视频黄 久久| 欧美成人一区二区在线 | 老司机免费视频一区二区| 久久久久九九九| 一区二区三区在线高清| 久久精品国产99| 欧美大片一区二区| 亚洲精品影院在线观看| 欧美激情视频一区二区三区不卡| 亚洲国产91| 一区二区欧美在线观看| 国产精品99免费看| 欧美一级视频免费在线观看| 久久精品国产综合精品| 在线国产亚洲欧美| 欧美激情一区二区三区四区 | 亚洲一级片在线观看| 欧美网站在线| 小黄鸭精品密入口导航| 久久久久久**毛片大全| 亚洲激情视频在线播放| 欧美日韩午夜在线| 欧美伊人久久| 亚洲激情婷婷| 久久av一区二区三区| 一区二区在线视频| 欧美激情久久久久| 一本一道久久综合狠狠老精东影业 | 国产精品久久久久91| 亚洲一区二区毛片| 嫩模写真一区二区三区三州| 99国产精品久久久久久久成人热| 国产精品扒开腿做爽爽爽软件| 羞羞答答国产精品www一本| 欧美~级网站不卡| 亚洲欧美区自拍先锋| 一区二区三区在线免费视频| 欧美精品一区二区三| 亚洲欧美日韩在线一区| 91久久精品一区二区三区| 欧美一区二区成人| 日韩小视频在线观看专区| 国产欧美一区二区三区国产幕精品| 久久躁狠狠躁夜夜爽| 亚洲夜间福利| 亚洲国产精品嫩草影院| 久久精品在线| 亚洲欧美激情视频| 亚洲精品欧美一区二区三区| 国产女精品视频网站免费| 欧美激情中文不卡| 久久久国产精品一区二区中文| 中文精品视频| 最近看过的日韩成人| 久久综合狠狠综合久久激情| 亚洲在线视频一区| 亚洲裸体俱乐部裸体舞表演av| 亚洲欧美国产视频| 欧美一进一出视频| 99精品久久久| 亚洲高清一区二区三区| 国产一区二区三区不卡在线观看 | 欧美一区二区视频观看视频| 中文精品视频| 一区二区激情视频| 亚洲激情视频| 亚洲国产精品第一区二区三区 | 亚洲免费精品| 亚洲高清色综合| 狠狠色丁香婷婷综合久久片| 国产欧美日韩另类视频免费观看| 国产精品成人免费| 欧美日韩在线免费观看| 欧美日韩国产精品专区| 欧美激情一级片一区二区| 久久人人看视频| 老司机aⅴ在线精品导航| 久久久精品国产一区二区三区| 欧美在线观看你懂的| 亚洲欧美日韩中文在线制服| 亚洲一区二区三| 午夜亚洲视频| 欧美亚洲一区在线| 久久精品在线| 欧美~级网站不卡| 欧美精品色一区二区三区| 欧美激情a∨在线视频播放| 欧美日韩成人| 国产精品久久国产三级国电话系列| 欧美日韩午夜剧场| 国产精品视频在线观看| 国产婷婷成人久久av免费高清| 国产午夜久久久久| 亚洲第一区在线| 日韩视频精品在线| 亚洲女人天堂av| 久久久久久久综合| 欧美不卡视频| 99国内精品久久久久久久软件| 亚洲视频一区在线| 欧美在线精品免播放器视频| 久久国产一区二区| 欧美精品粉嫩高潮一区二区| 欧美视频在线视频| 国产一区二区三区直播精品电影| 有码中文亚洲精品| 一本大道久久a久久综合婷婷 | 国产主播一区二区| 亚洲精品视频一区| 羞羞视频在线观看欧美| 美女图片一区二区| 一区二区电影免费观看| 欧美一区二区私人影院日本| 欧美黄色影院| 国产亚洲精品激情久久| 99精品视频免费观看| 欧美专区在线播放| 亚洲激情欧美激情| 欧美伊人精品成人久久综合97| 欧美金8天国| 国产亚洲精久久久久久| 99精品热6080yy久久| 久久精品视频在线播放| 99re热精品| 另类成人小视频在线| 国产精品伦一区| 亚洲黄色av一区| 久久成人精品视频| av成人天堂| 蜜桃av噜噜一区| 狠狠色综合日日| 欧美一区二区三区精品| 亚洲经典在线| 狂野欧美激情性xxxx欧美| 国产九区一区在线| 亚洲午夜电影在线观看|