使用audioclip获得1秒的样本?

时间:2018-07-29 16:58:20

标签: c# unity3d

我当时正在为游戏制作音乐播放器,但遇到了麻烦。发送带有完整的.wav文件样本的声音数据包太大。代码:

float[] samples = new float[clip.samples * 2];
clip.GetData(samples, 0);
int i = 0;

while (i < samples.Length)
{
    samples[i] = samples[i] * 0.5F;
    i++;
}

我怎么只能获得1秒的AudioClip样本?

2 个答案:

答案 0 :(得分:0)

您可以尝试

void Start()
 {
         audioSource.time = 13.21f;   // assuming that you already have reference to your AudioSource
         audioSource.Play();
 }

 void Update()
 {
         if(audioSource.time > 14.57f){
                 audioSource.Stop();
         }
 }

答案 1 :(得分:0)

如果阵列中已经有样本,则以44100hz采样为一秒..您猜对了44100个样本,如果将这些样本复制到另一个阵列中,则只需提取一秒。 现在播放它们是稍微不同的事情,因为您可能需要深入研究OnAudioFilterRead()回调,但是如果这只是您要播放的内容,您也可以使用上面的答案