Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+;中合并两个wav文件时,持续时间信息错误+; 我尝试在C++中合并两个WAV文件。我正在做的是将两个wav文件作为二进制ifstream打开,并创建一个新的ofstream输出wav文件 ifstream wavFileA("fileA.wav",ios::binary) ; ifstream wavFileB("fileB.wav",ios::binary); ofstream wavoutputfile("output.wav",ios::binary);_C++_File_Audio_Media_Wav - Fatal编程技术网

在c+;中合并两个wav文件时,持续时间信息错误+; 我尝试在C++中合并两个WAV文件。我正在做的是将两个wav文件作为二进制ifstream打开,并创建一个新的ofstream输出wav文件 ifstream wavFileA("fileA.wav",ios::binary) ; ifstream wavFileB("fileB.wav",ios::binary); ofstream wavoutputfile("output.wav",ios::binary);

在c+;中合并两个wav文件时,持续时间信息错误+; 我尝试在C++中合并两个WAV文件。我正在做的是将两个wav文件作为二进制ifstream打开,并创建一个新的ofstream输出wav文件 ifstream wavFileA("fileA.wav",ios::binary) ; ifstream wavFileB("fileB.wav",ios::binary); ofstream wavoutputfile("output.wav",ios::binary);,c++,file,audio,media,wav,C++,File,Audio,Media,Wav,然后,我将整个wavfileA及其标题复制到输出文件中,然后复制wavfileB,省略了前44位(即wavfileB的标题信息) wavFileA.seekg(0,ios::end); int leng2=wavFileA.tellg(); 库特 接下来,我修改了输出wav文件中的头信息,并 将标头中的ChunkSize更改为(我的输出文件的大小) 减(-)4字节(即RIFF的大小) 这可能是您的主要问题:您应该将文件大小减去8个字节(而不是4个字节),以获得ChunkSize。还要确保Subc

然后,我将整个wavfileA及其标题复制到输出文件中,然后复制wavfileB,省略了前44位(即wavfileB的标题信息)

wavFileA.seekg(0,ios::end);
int leng2=wavFileA.tellg();
库特
接下来,我修改了输出wav文件中的头信息,并
将标头中的ChunkSize更改为(我的输出文件的大小)
减(-)4字节(即RIFF的大小)

这可能是您的主要问题:您应该将文件大小减去8个字节(而不是4个字节),以获得ChunkSize。还要确保Subchunk2Size实际上是没有标题的原始音频数据的大小-不要使用像
pos-44
这样的神奇数字,这会使代码难以阅读和理解。最好用采样计数、通道数和每个采样的位数来计算。i、 e

Subchunk2Size = sampleCount * channelCount * bitDepth/8;

如果所有这些都没有帮助,请向我们显示您保存的波形文件(十六进制)的标题(大约前72个字节)以及预期长度。

感谢康斯坦丁的帮助。但我发现我错在哪里了

我忘了ChunkSize和亚春色ZE2在小端序系统中是有序的。 所以我改变了在标题中输入这些信息的部分,整个工作开始了

for (int i=3; i>=0 ; i--)  //I made the change here
{
    outputWavFile << bArray[i];
}
for(inti=3;i>=0;i--)//我在这里做了更改
{
输出波形文件
Subchunk2Size = sampleCount * channelCount * bitDepth/8;
for (int i=3; i>=0 ; i--)  //I made the change here
{
    outputWavFile << bArray[i];
}