2014-11-23 68 views
0

要發揮出自己的測試波形文件,我設置以下格式fmt分析波頭

fmt.setChannelCount(2); 
fmt.setCodec("audio/pcm"); 
fmt.setByteOrder(QAudioFormat::LittleEndian); 
fmt.setSampleType(QAudioFormat::SignedInt); 
fmt.setSampleRate(44100); 
fmt.setSampleSize(16); 

它還可以與這些設置:

fmt.setSampleRate(22050); 
fmt.setSampleSize(32); 

這些設置都是爲了一個QAudioOutput:

player = new QAudioOutput(fmt); 
file = new QFile(fileName); 
file->open(QIODevice::ReadOnly); 
player->start(file); 

使用此設置,我可以正確播放測試波形文件。

但我想通過閱讀標題來檢測格式的設置。

我分析它,它說:

Opening WAV file at: "C:/Deep Purple - Anthology (Disc 2) - 09 - Hold On.wav" 
The size of the WAV file is: 53994908 
WAV File Header read: 
File Type: "RIFFWAVE" 
File Size: 53994900 
WAV Marker: "WAVE" 
Format Name: "fmt??(" 
Format Length: 4128 
Format Type: 256 
Number of Channels: 512 
Sample Rate: 11289600 
Sample Rate * Bits/Sample * Channels/8: 45158400 
Bits per Sample * Channels/8.1: 1024 
Bits per Sample: 4096 
Data Header: "" 
Data Size: 937783393 

如果我除以信道數的採樣率,我得到的每22050.通道的採樣率,但爲什麼我設置44100進行聽起來不錯?爲什麼有512個頻道?用Audacity打開文件,只有2(Audacity說:立體聲,44100Hz,32位浮點數)。

+0

你正在分析它的方式是在琢磨它。你怎麼分析它? – Radiodef 2014-11-23 21:42:51

+0

我不知道什麼是gar花。我的意思是我檢測音頻的採樣率和這樣的事情。根據Riff WAV規格閱讀標題。 – user2366975 2014-11-23 22:08:53

+0

但是,您正在讀取標題,導致字節被偏移。 ('512'是'2'加一個額外的字節......'11289600'是'44100'加一個額外的字節......)你如何閱讀頭文件? – Radiodef 2014-11-23 22:48:12

回答

0

以下是一些鏈接,當我在處理這種類型的項目時,這些鏈接幫了我很多忙。

https://github.com/visore/QAudioCoder

http://qt-project.org/forums/viewthread/6899

http://doc.qt.digia.com/qt-maemo/demos-spectrum-app-wavfile-cpp.html

http://fledisplace.com/QtMultimediaExample2.html

我在做的一個例子找到一個錯字,它不讀與一個正確的順序的參數之一。讓我仔細檢查一下是哪一個,我會盡快回復你。

希望有所幫助。