我正在尝试将统一录制的音频剪辑保存到文件中。
首先,我获得音频剪辑的样本,这些样本是浮点值,然后将其转换为short值,然后获取其字节,然后使用FileStream将其字节写入文件,然后为其编写标题。
问题是只有一半被保存了。
这是我的代码
private void SaveAudioClip(FileStream fileStream, AudioClip clipToSave)
{
float[] samples = new float[clipToSave.samples];
clipToSave.GetData(samples, 0); //puts the clip's data into sample array
short[] data = new short[samples.Length];
var size = sizeof(short);
byte[] byteArray = new byte[samples.Length * size];
for (int i = 0; i < samples.Length; i++)
{
data[i] = (short) (samples[i] * short.MaxValue);
BitConverter.GetBytes(data[i]).CopyTo(byteArray, i * size);
}
fileStream.Write(byteArray, 0, byteArray.Length);
WriteHeader(fileStream, clipToSave);
}
我尝试将样本转换为int或uint32,它固定了长度,但是保存的文件是静音的。
有人可以帮我解决此问题吗?