2015-02-21 2 views
1

У меня есть аудиофайл pcm или массив байтов этого файла. И мне нужно отменить его и воспроизвести.Android reverse play pcm file

Если я просто обратный массив байтов, как это, я получаю шум, поэтому я должен отменить только raws или sample raws pcm.

public void reverse(byte[] array) { 
      if (array == null) { 
       return; 
      } 
      int i = 0; 
      int j = array.length - 1; 
      byte tmp; 
      while (j > i) { 
       tmp = array[j]; 
       array[j] = array[i]; 
       array[i] = tmp; 
       j--; 
       i++; 
      } 
     } 

Я читал много, но я не нашел никакой информации о том, как я могу это сделать.

данные в байтовых магазинах массива, как это (в oneDrive, Потому что не хватает репутации): http://1drv.ms/1DJ0jDr

Я apreciate любой помощи. Большое спасибо!

ответ

0

Вам необходимо сначала преобразовать массив байтов в массив, соответствующий вашим образцам, а затем изменить на массив. Например, если ваши образцы 16-бит, то вы захотите преобразовать в массив шорт.

В качестве альтернативы, в 16-битном случае вы можете хранить данные в байтах, а затем наоборот, но парами байтов.

public void reverse(byte[] array) { 
     if (array == null) { 
      return; 
     } 
     int i = 0; 
     int j = array.length - 1; 
     byte tmp; 
     for (int k = 0 ; i < array.length/2; ++i) { 
      tmp = array[j-1]; 
      array[j-1] = array[i]; 
      array[i] = tmp; 

      tmp = array[j]; 
      array[j] = array[i+1]; 
      array[i+1] = tmp; 

      j+=2; 
      i+=2; 
     } 
    } 
+0

Большое спасибо! Этот пост помогает в преобразовании http://stackoverflow.com/a/5626003/4166904 –