打印

fread读wav文件出错了 ,怎么办

[复制链接]
489|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2017-5-23 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wyjie| | 2017-5-23 21:52 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
wuhany|  楼主 | 2017-5-23 21:57 | 只看该作者

#include "Wave.h"
// WaveHeader.c

//void main(int argc, char **argv)
void main()
{
     FILE *fp=NULL;
unsigned long size;
wav_pcm_header44 hwav;
short *data;
int i;


/*
*  Get wave header information
*/
//fpWav = fopen(argv[1], "rb");
//fp = fopen("music_source.wav", "rb+");
//fpWav = fopen("abc.txt","r+");
// printf("Channel number: %d\n",fpWav);

if ((fp = fopen("News Item 1.wav","rb"))!=NULL)
{
   fread(&hwav,sizeof(wav_pcm_header44),1,fp);
// fread(&hwav, 44,1,fp);
   
   /* Check wave header */
   if ( (0==memcmp(hwav.ChunkID, "RIFF", 4)) &&(0==memcmp(hwav.Format, "WAVE", 4)) &&
   (0==memcmp(hwav.SubChunk1ID, "fmt ", 4)) &&(0==memcmp(hwav.SubChunk2ID, "data", 4)) &&(1==hwav.AudioFormat))
{
    printf("Wave audio data format:\n");
    printf("Channel number: %d\n", hwav.NumChannels);
    printf("SampleRate: %dHz\n", hwav.SampleRate);
    printf("BitsPerSample: %dbits\n", hwav.BitsPerSample);
    printf("Audio data size:%d\n", hwav.SubChun2Size);
}  
          //printf("hwav.SubChun2Size:%d\n",hwav.ChunkID);
   /*
   *  Get wave data
  */
   data=(short*)malloc(sizeof(short)*hwav.SubChun2Size);
   for (i=0;i<hwav.SubChun2Size;i++)
   {
    fread(&data,sizeof(wav_pcm_header44),1,fp);
   }
   // printf("DATA:%d\n", (&data);
  fclose(fp);
   fp = NULL;
}
else
{
   //printf("Open wave file %s failed!\n", argv[1]);
   printf("Open wave file %s failed!\n");
}


}

使用特权

评论回复
地板
wuhany|  楼主 | 2017-5-23 21:58 | 只看该作者
头文件:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

// Microsoft wav pcm sound file format. Normal 44 bytes header
typedef struct _tagMsWavPcmHeader44{
signed char ChunkID[4]; // "RIFF"; The "RIFF" the mainchunk;
signed long ChunkSize; // FileSize - 8; The size following this data
signed char Format[4]; // "WAVE"; The "WAVE" format consists of two subchunks: "fmt " and "data"
signed char SubChunk1ID[4]; // "fmt "
signed long SubChunk1Size; // 16 for PCM. This is the size of the rest of the subchunk which follows this data.
signed short AudioFormat; // 1 for PCM. Linear quantization
signed short NumChannels; // 1->Mono, 2->stereo, etc..
signed long SampleRate; // 8000, 11025, 16000, 44100, 48000, etc..
signed long ByteRate; // = SampleRate * NumChannels * BitsPerSample/8
signed short BlockAlign; // = NumChannels * BitsPerSample / 8
signed short BitsPerSample; // 8->8bits, 16->16bits, etc..
signed char SubChunk2ID[4]; // "data"
signed long SubChun2Size; // = NumSamples * NumChannels * BitsPerSample / 8. The size of data
} wav_pcm_header44;

//void wave_generator(FILE *fp, wav_pcm_header44 *phwav);



文件头就没办法通过额 大家给看看什么问题

使用特权

评论回复
5
liliang9554| | 2017-5-23 22:00 | 只看该作者

把News Item 1.wav去掉空格,改成NewsItem1.wav试试

使用特权

评论回复
6
zhaoxqi| | 2017-5-23 22:03 | 只看该作者
楼上正解,楼主可以试试

使用特权

评论回复
7
jiajs| | 2017-5-23 22:04 | 只看该作者
使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

使用特权

评论回复
8
wuhany|  楼主 | 2017-5-23 22:21 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
9
zhangmangui| | 2017-5-23 22:45 | 只看该作者
能读wav格式的数吗    最好试试.dat的吧

使用特权

评论回复
10
Brand2| | 2017-5-25 20:01 | 只看该作者
把News Item 1.wav去掉空格,改成NewsItem1.wav试试

楼主试了这种方法没,什么效果

使用特权

评论回复
11
kkzz| | 2017-5-25 21:48 | 只看该作者
用的什么程序读取的

使用特权

评论回复
12
hudi008| | 2017-5-25 21:48 | 只看该作者
分段读取也有错误吗?

使用特权

评论回复
13
lzmm| | 2017-5-25 21:49 | 只看该作者
错误提示是什么

使用特权

评论回复
14
minzisc| | 2017-5-25 21:49 | 只看该作者
{ FILE *fp; WAVE wav; fp=fopen("./**.wav","rb")

使用特权

评论回复
15
fentianyou| | 2017-5-25 21:50 | 只看该作者
你了解wav音频文件的格式吗?

使用特权

评论回复
16
kkzz| | 2017-5-25 21:50 | 只看该作者
wav格式文件太大了吗?

使用特权

评论回复
17
hudi008| | 2017-5-25 21:50 | 只看该作者
楼主这是在哪个处理器执行的

使用特权

评论回复
18
lzmm| | 2017-5-25 21:50 | 只看该作者
是文件各个不支持吗?

使用特权

评论回复
19
minzisc| | 2017-5-25 21:50 | 只看该作者
返回的错误代码是什么?

使用特权

评论回复
20
fentianyou| | 2017-5-25 21:51 | 只看该作者
读取文件可能头文件没有区分正确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝