2013-08-24 6 views
0

Здесь у меня есть код, который записывает аудиопоток в файл. Проблема в том, что я хотел бы сохранить этот файл с правильным расширением файла (в основном .mp3 и .aac). Как я могу это достичь?Как распознать формат аудиопотока?

URLConnection conn = new URL(StringUrls[0]).openConnection(); 
      InputStream in = conn.getInputStream(); 

      BufferedOutputStream bufOutstream = new BufferedOutputStream(new FileOutputStream(new File(env.getExternalStorageDirectory()+"/temp.file"))); 

      byte[] buffer = new byte[4096]; 
      int len = in.read(buffer); 
      while (len != -1) { 
       bufOutstream.write(buffer, 0, len); 
       len = in.read(buffer); 

       if (Recorder.this.isCancelled) break; 

      } 
      bufOutstream.close(); 
+0

Вам нужно проанализировать содержимое потока - посмотрите http://stackoverflow.com/questions/11360286/detect-if-file-is-mp3 – trebron

ответ

2

Один из способов - это взглянуть на двоичные данные, пока у вас уже есть это в ваших руках. В соответствии с этим File signatures table как MP3 и AAC имеют уникальные магические заголовки:

  • 49 44 33 для MPEG-1 Audio Layer 3 (MP3) аудио файл
  • FF F1 для MPEG-4 Advanced Audio Coding (AAC) Low Сложность (ЖХ) аудио
  • FF F9 для MPEG-2 Advanced Audio Coding (AAC) Low Complexity (LC) аудио