Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Audio 合并两个pcm文件时的噪声_Audio_Pcm - Fatal编程技术网

Audio 合并两个pcm文件时的噪声

Audio 合并两个pcm文件时的噪声,audio,pcm,Audio,Pcm,我正在合并两个pcm数据,结果pcm具有额外的GRRRR噪声。我的代码是: int main(void) { FILE *rCAudio; FILE *raudio; FILE *wtest; rCAudio=fopen("Audio1.pcm","rb"); //Reading first pcm file if(rCAudio==NULL) cout<<"Errr"; raudio=fopen(

我正在合并两个pcm数据,结果pcm具有额外的GRRRR噪声。我的代码是:

int main(void)
{

    FILE *rCAudio;
    FILE *raudio;
    FILE *wtest;

    rCAudio=fopen("Audio1.pcm","rb");        //Reading first pcm file
    if(rCAudio==NULL)
        cout<<"Errr";


    raudio=fopen("Audio2.pcm","rb");        //Reading second pcm file
    if(raudio==NULL)
        cout<<"Errr";

    fopen_s(&wtest,"AudioMerge.pcm","ab"); // Writing final pcm file

    short* first= new short[1792];;
    short* second= new short[1792];;
    short* merge = new short[1792];
    short sample1,sample2;

    while(1)
    {
        fread(first,2,1792,rCAudio);
        fread(second,2,1792,raudio);

        for(int j=0;j<1792;j++)
        {
            sample1 = first[j];
            sample2 = second[j];
            int mixedi=(int)sample1 + (int)sample2;
            if (mixedi>32767) mixedi=32767;
            if (mixedi<-32768) mixedi=-32768;

            merge[j] =(short)mixedi;
        }
        fwrite(merge,2,1972,wtest);
    }
}
int main(无效)
{
文件*rCAudio;
档案*劳迪奥;
文件*wtest;
rCAudio=fopen(“Audio1.pcm”,“rb”);//读取第一个pcm文件
如果(rCAudio==NULL)

我得到了解决方案,问题是: 我写过一次4096字节的Audio1.pcm和一次4096字节的Audio2.pcm,但简而言之,我一次读1972字节

所以我纠正了这个错误,每次读取4096字节,然后通过第三个合并文件保存4096字节