要播放我的测试波文件,我设置了以下格式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说:Stereo,44100Hz,32位浮点数)。
答案 0 :(得分: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
我确实在其中一个示例中发现了一个拼写错误,它没有使用正确的字节顺序读取其中一个参数。让我仔细检查它是哪一个,我会回复你。
希望有所帮助。