Как сделать мои собственные данные mp3 файла
всем привет,
я провел много исследований по структуре файлов mp3. я понял все о mp3-файле, включая то, как он работает ,из каких данных он состоит, как читать данные mp3-файла, как писать данные mp3-файла и т. д. Теперь я пытаюсь сделать свой собственный mp3-файл так же, как я добавляю свои собственные аудиоданные в файл.но после записи файла с моими собственными аудиоданными он не работает, не знаю почему?. я работаю на языке Си.
и, пожалуйста, не предлагайте мне никакой библиотеки, потому что я хочу сделать это с помощью myown.
Что я уже пробовал:
ниже приведен мой код.
#include<stdio.h> #include<conio.h> #include<string.h> void main() { FILE *fp,*pt; static unsigned char file_data[10000000],a[3]; fp=fopen("expmp3file.mp3","wb"); pt=fopen("tt.mp3","rb"); int t=0,u=0,v=0,x=0; unsigned long i=0,j=0,k=0,curr_fr_siz=0,size_of_id3v2=0; unsigned char b=150; a[0]=255; a[1]=255; a[2]=251; a[3]=250; while(fread(&file_data[i],sizeof(char),1,pt)==1) { i++; } i=0; t=file_data[6]; u=file_data[7]; v=file_data[8]; x=file_data[9]; size_of_id3v2=t*2097152+u*16384+v*128+x+10;// Synchronization Safe Integer formula last 10 is for id3v2 tag header //printf("%d\n",size_of_id3v2); while(i<size_of_id3v2) { fwrite(&file_data[i],sizeof(file_data[i]),1,fp);// writing id3v tag from a another file i++; } i=0; curr_fr_siz=(144*(320*1000)/44100+1); //printf("%d",curr_fr_siz); while(i<4000) { while(k<4) { fwrite(&a[k],sizeof(char),1,fp);//writing frame header k++; } k=0; j=0; while(j<curr_fr_siz) { fwrite(&b,sizeof(b),1,fp);//writing audio data j++; } i++; } fclose(fp); fclose(pt); getch(); }
прежде всего, я добавил данные тега id3v из другого файла в начале файла. после этого я добавил один за другим 4000 mp3-кадров с моими собственными данными.
jeron1
Извините за избиение мертвой лошади, но если бы вы прошли через это с помощью отладчика, то довольно быстро показали бы вам ошибку.