// }
// ]
// }
-// Tag_Trailer_t Mp3Trailer;
+Tag_Trailer_t Mp3Trailer;
+Tag_ID3V2_TAG_T TAG_T;
-// void Tag_GetTrailer( FILE *fp)
-// {
-// // Get Header
-// fseek(fp,-128,SEEK_END);
-// fread(Mp3Trailer.Header,3,1,fp);
-// // Get Title
-// fseek(fp,-125,SEEK_END);
-// fread(Mp3Trailer.Title,30,1,fp);
-// // Get Artist
-// fseek(fp,-95,SEEK_END);
-// fread(Mp3Trailer.Artist,30,1,fp);
-// // Get Album
-// fseek(fp,-65,SEEK_END);
-// fread(Mp3Trailer.Album,30,1,fp);
-// // Get Year
-// fseek(fp,-35,SEEK_END);
-// fread(Mp3Trailer.Year,4,1,fp);
-// // Get Comment
-// fseek(fp,-31,SEEK_END);
-// fread(Mp3Trailer.Comment,30,1,fp);
-// // Get Cenre
-// fseek(fp,-1,SEEK_END);
-// fread(Mp3Trailer.Cenre,1,1,fp);
-// }
+void Tag_GetTrailer( FILE *fp)
+{
+// Get Header
+
+
+ fseek(fp,-128,SEEK_END);
+ fread(Mp3Trailer.Header,3,1,fp);
+ printf("Header : %s",Mp3Trailer.Header);
+ // Get Title
+ fseek(fp,-125,SEEK_END);
+ fread(Mp3Trailer.Title,30,1,fp);
+ // Get Artist
+ fseek(fp,-95,SEEK_END);
+ fread(Mp3Trailer.Artist,30,1,fp);
+ printf("Artist : %s",Mp3Trailer.Artist);
+ // Get Album
+ fseek(fp,-65,SEEK_END);
+ fread(Mp3Trailer.Album,30,1,fp);
+ // Get Year
+ fseek(fp,-35,SEEK_END);
+ fread(Mp3Trailer.Year,4,1,fp);
+ // Get Comment
+ fseek(fp,-31,SEEK_END);
+ fread(Mp3Trailer.Comment,30,1,fp);
+ // Get Cenre
+ fseek(fp,-1,SEEK_END);
+ fread(Mp3Trailer.Cenre,1,1,fp);
+}
+
+
+void Tag_read_ID2V3( FILE *fp)
+{
+// Get Header
+ fseek(fp,10,SEEK_CUR);
+ printf("Tag_read_ID2V3\r\n");
+
+ for(int i=7;i>0;i--)
+ {
+ memset_s(&TAG_T,sizeof(TAG_T),0,sizeof(TAG_T));
+ int size =fread(TAG_T.ID,4,1,fp);
+
+ if(strcmp("TPE1",TAG_T.ID)==0)
+ printf("Header :%d %s\r\n",size,TAG_T.ID);
+
+
+ fread(TAG_T.Size,4,1,fp);
+ size = TAG_T.Size[0]*0x100000000 + TAG_T.Size[1]*0x10000+ TAG_T.Size[2]*0x100 +TAG_T.Size[3];
+ if(strcmp("TPE1",TAG_T.ID)==0)
+ printf("Size :%d\r\n",size);
+
+ if(size<0)
+ return;
+
+
+ fread(TAG_T.Flags,2,1,fp);
+
+ char buf[124]={0};
+ if(strcmp("TPE1",TAG_T.ID)==0)
+ {
+ memset_s(&Mp3Trailer,sizeof(Mp3Trailer),0,sizeof(Mp3Trailer));
+ fread(Mp3Trailer.Artist,1,size,fp);
+ printf("data : %s\r\n",Mp3Trailer.Artist);
+ }
+ else
+ {
+ if(size>=128)
+ {
+ fseek(fp,size,SEEK_CUR);
+ }
+ else
+ {
+ fread(buf,1,size,fp);
+ //printf("data : %s\r\n",buf);
+ }
+ }
+ }
+ return;
+
+}
char * dir_to_json_buf_malloc_(uint8_t type)
file_size = ftell(fp); // 获取当前文件指针位置,即文件大小
fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
}
- //Tag_GetTrailer(fp);
-
+ Tag_ID3V2_t tag={0};
+ fread(tag.Header,3,1,fp);
+ //printf("tag.Header %s\r\n",tag.Header);
+ fread(&tag.Ver,1,1,fp);
+ //printf("tag.Ver %d\r\n",tag.Ver);
+ if(tag.Ver==3)
+ {
+ printf("%s\r\n",ent->d_name);
+ fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+ Tag_read_ID2V3(fp);
+ }
+ else
+ {
+ printf("tag.Header %s %d\r\n",tag.Header,tag.Ver);
+ }
fclose(fp);
cJSON* itemJSON = cJSON_CreateObject();
cJSON_AddNumberToObject(itemJSON,"uid",file_index);
cJSON_AddStringToObject(itemJSON,"name",fileName.c_str());
cJSON_AddNumberToObject(itemJSON,"size",file_size);
- cJSON_AddStringToObject(itemJSON,"artist", "未知");
+ cJSON_AddStringToObject(itemJSON,"artist",Mp3Trailer.Artist);
cJSON_AddStringToObject(itemJSON,"dur", "未知");
cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
file_index++;