如何在本地文件中连接 AudioClip
how to connect AudioClip at local file
我从服务器下载了 .mp3 文件并将其存储在我的 android persistentDataPath 中。但我不知道如何将 .mp3 文件连接到 AudioClip。
如果有解决方法,请告诉我。
更新
正如评论中所指出的那样,WWW
现在支持 .mp3 文件,这就是未来的方向。
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public string url;
public AudioSource source;
void Start() {
WWW www = new WWW(url);
source = GetComponent<AudioSource>();
source.clip = www.audioClip;
}
void Update() {
if (!source.isPlaying && source.clip.isReadyToPlay)
source.Play();
}
}
原回答:
音频剪辑不接受文件。它接受一组浮点数。
您可以使用 NAudio 将压缩的 MP3 转换为 WAV 文件。
using NAudio;
using NAudio.Wave;
// ....
using (Mp3FileReader reader = new Mp3FileReader(mp3File))
{
WaveFileWriter.CreateWaveFile(outputFile, reader);
}
然后您需要读取 wave 文件,它基本上有一个 header 后跟块数据。块数据可以转换为浮点数并发送到您的音频剪辑。
我从服务器下载了 .mp3 文件并将其存储在我的 android persistentDataPath 中。但我不知道如何将 .mp3 文件连接到 AudioClip。 如果有解决方法,请告诉我。
更新
正如评论中所指出的那样,WWW
现在支持 .mp3 文件,这就是未来的方向。
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public string url;
public AudioSource source;
void Start() {
WWW www = new WWW(url);
source = GetComponent<AudioSource>();
source.clip = www.audioClip;
}
void Update() {
if (!source.isPlaying && source.clip.isReadyToPlay)
source.Play();
}
}
原回答:
音频剪辑不接受文件。它接受一组浮点数。
您可以使用 NAudio 将压缩的 MP3 转换为 WAV 文件。
using NAudio;
using NAudio.Wave;
// ....
using (Mp3FileReader reader = new Mp3FileReader(mp3File))
{
WaveFileWriter.CreateWaveFile(outputFile, reader);
}
然后您需要读取 wave 文件,它基本上有一个 header 后跟块数据。块数据可以转换为浮点数并发送到您的音频剪辑。