From: hcj <1224667075@qq.com> Date: Thu, 4 Jul 2024 01:44:33 +0000 (+0800) Subject: mp3作者名字读取,由于utf16的编码,串口打印出来是乱码 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=e712622798663fa88a4477311ec7256ae9bd4201;p=mirrors%2FFD230.git mp3作者名字读取,由于utf16的编码,串口打印出来是乱码 --- diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index a0d491f68..3c63cd4e1 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -118,33 +118,89 @@ void ble_set_ai_Answer_str(char *buf) // } // ] // } -// 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) @@ -197,15 +253,28 @@ 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++;