gpt4 book ai didi

c++ - 分析波头

转载 作者:行者123 更新时间:2023-12-03 02:07:09 25 4
gpt4 key购买 nike

为了播放我的测试波形文件,我设置了以下格式 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

如果我将采样率除以 channel 数,我得到每个 channel 的采样率 22050。但是为什么我必须设置 44100 才能让它听起来不错?为什么有 512 个 channel ?用 Audacity 打开文件,只有 2 个(Audacity 说:Stereo, 44100Hz, 32-bit float)。

最佳答案

当我从事此类项目时,这里有一堆链接帮助了我很多。

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

我确实在其中一个示例中发现了一个错字,它没有读取具有正确字节顺序的参数之一。让我仔细检查一下是哪一个,我会回复你的。

希望有帮助。

关于c++ - 分析波头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27094320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com