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;
}
}
我有一个 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;
}
}