Android反向播放pcm文件

Android reverse playing pcm file

我有一个 pcm 音频文件,或者这个文件的字节数组。我需要反转它并播放它。

如果我只是像这样反转字节数组,我会收到噪音,所以我应该只反转 pcm 的 raws 或 sample raws。

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

我将不胜感激任何帮助。非常感谢!

您需要先将字节数组转换为适合您样本的数组类型,然后反转那个数组。例如,如果您的样本是 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;
      }
  }