⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 MP3编码程序和资料
💻 C
字号:
#include <stdlib.h>#include <string.h>#include <stdio.h>#include <fcntl.h>#ifdef _WIN32/* needed to set stdout to binary */#include <io.h>#endif#include "lame.h"#include "util.h"#ifdef HAVEGTK#include "gtkanal.h"#include <gtk/gtk.h>#endif#ifdef __riscos__#include "asmstuff.h"#endif/************************************************************************** main** PURPOSE:  MPEG-1,2 Layer III encoder with GPSYCHO* psychoacoustic model.*************************************************************************/int main(int argc, char **argv){  char mp3buffer[LAME_MAXMP3BUFFER];  short int Buffer[2][1152];  int iread,imp3;  lame_global_flags gf;  FILE *outf;#ifdef __riscos__  int i;#endif  if (lame_init(&gf)<0) LAME_ERROR_EXIT();       /* initialize libmp3lame */  if(argc==1) lame_usage(&gf,argv[0]);  /* no command-line args, print usage, exit  */  /* parse the command line arguments, setting various flags in the   * struct 'gf'.  If you want to parse your own arguments,   * or call libmp3lame from a program which uses a GUI to set arguments,   * skip this call and set the values of interest in the gf struct.   * (see lame.h for documentation about these parameters)   */#ifdef ONLYVORBIS  gf.ogg=1;#endif  lame_parse_args(&gf,argc, argv);  /* open the wav/aiff/raw pcm or mp3 input file.  This call will   * open the file with name gf.inFile, try to parse the headers and   * set gf.samplerate, gf.num_channels, gf.num_samples.   * if you want to do your own file input, skip this call and set   * these values yourself.   */  lame_init_infile(&gf);  /* Now that all the options are set, lame needs to analyze them and   * set some more options   */  if (lame_init_params(&gf)<0)  LAME_ERROR_EXIT();  if (!gf.decode_only)    lame_print_config(&gf);   /* print usefull information about options being used */  if (!gf.gtkflag) {    /* open the output file */    if (!strcmp(gf.outPath, "-")) {#ifdef __EMX__      _fsetmode(stdout,"b");#elif (defined  __BORLANDC__)      setmode(_fileno(stdout), O_BINARY);#elif (defined  __CYGWIN__)      setmode(fileno(stdout), _O_BINARY);#elif (defined _WIN32)      _setmode(_fileno(stdout), _O_BINARY);#endif      outf = stdout;    } else {      if ((outf = fopen(gf.outPath, "wb")) == NULL) {	ERRORF("Could not create \"%s\".\n", gf.outPath);	LAME_ERROR_EXIT();      }    }#ifdef __riscos__    /* Assign correct file type */    for (i = 0; gf.outPath[i]; i++) {      if (gf.outPath[i] == '.')        gf.outPath[i] = '/';      else if (gf.outPath[i] == '/')        gf.outPath[i] = '.';    }    if (gf.decode_only)      SetFiletype(gf.outPath, 0xfb1); /* Wave */    else      SetFiletype(gf.outPath, 0x1ad); /* AMPEG */#endif  }  if (gf.gtkflag) {#ifdef HAVEGTK    gtk_init (&argc, &argv);    gtkcontrol(&gf);#else    ERRORF("Error: lame not compiled with GTK support \n");#endif  } else if (gf.decode_only) {    /* decode an mp3 file to a .wav */    lame_decoder(&gf,outf,gf.encoder_delay);  } else {      /* encode until we hit eof */      do {	/* read in 'iread' samples */	iread=lame_readframe(&gf,Buffer);	/* encode */	imp3=lame_encode_buffer(&gf,Buffer[0],Buffer[1],iread,              mp3buffer,(int)sizeof(mp3buffer));	/* was our output buffer big enough? */	if (imp3<0) {	  if (imp3==-1) ERRORF("mp3 buffer is not big enough... \n");	  else ERRORF("mp3 internal error:  error code=%i\n",imp3);	  LAME_ERROR_EXIT();	}	/* imp3 is not negative, but fwrite needs an unsigned here */	if (fwrite(mp3buffer,1,(unsigned int)imp3,outf) != imp3) {	  ERRORF("Error writing mp3 output \n");	  LAME_ERROR_EXIT();	}      } while (iread);      imp3=lame_encode_finish(&gf,mp3buffer,(int)sizeof(mp3buffer));   /* may return one more mp3 frame */      if (imp3<0) {	if (imp3==-1) ERRORF("mp3 buffer is not big enough... \n");	else ERRORF("mp3 internal error:  error code=%i\n",imp3);	LAME_ERROR_EXIT();      }      /* imp3 is not negative, but fwrite needs an unsigned here */      fwrite(mp3buffer,1,(unsigned int)imp3,outf);      fclose(outf);      lame_mp3_tags(&gf);                /* add id3 or VBR tags to mp3 file */    }  lame_close_infile(&gf);            /* close the input file */  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -