oppotunity发音 怎么制作音频

在unity3d环境下,如何用C#语言加载一段音频文件?_百度知道
在unity3d环境下,如何用C#语言加载一段音频文件?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
lancekea知道合伙人
AudioSource audio = Resources.LoadAssetAtPath(&hello.wav&, AudioSource);audio.Play();Resources 默认加载的路径是 项目里 Resources/
,如 Resources/mp3/hello.wav则
Resources.LoadAssetAtPath(&mp3/hello.wav&, AudioSource); 默认在摄像机上面有audio监听脚本,整个场景只需要一个就行了,如果播放不了,把脚本挂到摄像机下
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。原创文章如需转载请注明:转载自 &QQ群:【<span style="color: #192】本文链接地址:
Unity支持压缩的和原生的音频。任何类型的文件(MP3/Ogg Vorbis的除外),最初都以原生音频导入可以通过选择加载类型(Load Type)选择运行时Unity加载音频的方法。
文件类型转换
转换为无压缩音频导入,最适合短音效果。可以在编辑器中按需求压缩。
转换为无压缩音频导入,最适合短音效果。可以在编辑器中按需求压缩。
转换成Ogg格式导入,最适合较长的音乐曲目。
压缩音频格式(与iPhone设备和某些Android设备不兼容),最适合较长的音乐曲目。
如果要导入一个尚未压缩为Ogg 格式的文件,在音频剪辑的导入设置中有一些选项。
在项目视图中选择音频剪辑,在检视视图中编辑音频导入的选项。
音频格式(Audio Format): 在运行时被应用到声音上的特定格式。
原生的(Native):较大文件尺寸,质量较高。最适用于很短的音效。
压缩的(Compressed):较小文件尺寸,质量较低/不稳定。最适用于中等长度音效与音乐。
三维声音(3D Sound):如果启用,音乐将在3D空间中播放。
强制单声道(Force to mono):如果启用,该音频剪辑将向下混合到单通道声音。
加载类型(Load Type): 运行时Unity加载音频的方法。
加载时解压缩(Decompress on load): 加载后解压缩声音。使用于较小的压缩声音,以避免运行时解压缩的性能开销。(将使用比在它们在内存中压缩的多10倍或更多内存,因此大文件不要使用这个。)
在内存中压缩(Compressed in memory): 保持声音在内存中(压缩的)在播放时解压缩。这有轻微的性能开销(尤其是OGG / Vorbis格式的压缩文件),因此大文件使用这个。
从磁盘流(Stream from disc): 直接从磁盘流读取音频数据。这只使用了原始声音占内存大小的很小一部分。使用这个用于很长的音乐。取决于硬件,一般建议1-2线程同时流。
压缩(Compression): 压缩量应用于压缩的剪辑,保持在一个足够小的尺寸,以满足您的文件大小/分配需要。可以拖动滑条来调整大小,播放声音来判断音质,滑动条后面可以看到文件大小的统计。
硬件解码(Hardware Decoding):(仅iOS)用于iOS设备压缩的音频。使用苹果的硬件解码来减少CPU的密集解压缩。(同一时间只能有一个硬件音频流解压缩,包括背景的iPod音频。)
无缝循环(Gapless looping):(仅Android/iOS)压缩一个完美的循环音频源文件(非压缩的PCM格式)保持循环。标准的MPEG编码器插入silence循环点,播放时有小的"click" 或 "pop" Unity为你顺畅处理这个问题。
音频侦听器&Audio Listener
音频监听器没有属性。必须被添加才能使用,默认地添加到主照相机。(每个场景只能有1个音频侦听器正常工作。)&
在菜单栏通过Edit-&Project Settings-&Audio访问项目范围内的音频设置。
音频源&Audio Source
音频剪辑(Audio Clip): 将被播放的声音剪辑文件。
静音( Mute): 如果启用,声音将被播放,但没有声音。
直通效果( Bypass Effects): 应用到音频源的快速"直通"过滤效果。一个简单的方法来打开/关闭所有特效。
唤醒时播放( Play On Awake): 声音会在场景启动的时候开始播放。如果禁用,则需要从脚本中使用的play()命令来启动它。
循环( Loop): 启用这个属性使音频剪辑(Audio Clip)在播放结束后循环 。
优先权( Priority): 确定场景所有并存的音频源之间的优先权。(0=最重要的优先权。256 =最不重要。默认为128。)
音量( Volume): 声音从距离音频监听器(Audio Listener)1个世界单位(1米)处的音量。
音调( Pitch): 改变音调(Pitch)值,可以减速/加速音频剪辑的播放。1是正常播放速度。
3D声音设置(3D Sound Settings):
   平衡调整级别 (Pan Level): 设置多少,3D引擎在音频源上有效果。
   扩散 (Spread): 设置3D立体声或者多声道音响在扬声器空间的传播角度。
   多普勒级别 (Doppler Level): 决定了多少多普勒效应将被应用到这个音频信号源(如果设置为0,就是无效果)。
   最小距离 (Min Distance): 在最小距离之内,声音会保持最响亮。 在最小距离之外,声音就会开始衰减。
   最大距离 (Max Distance): 声音停止衰减距离。超过这一点,它将在距离侦听器最大距离单位,保持音量,不在衰减。
衰减模式 (Volume Rolloff): 声音淡出的速度有多快。该值越高,越接近侦听器最先听到声音(这是由图形决定)。
对数衰减(Logarithmic Rolloff):&当你接近的音频源,声音响亮,但是当你远离对象,声音下降显着快。
线性衰减(Linear Rolloff):&越是远离音频源的,你可以听到的声音越小。
自定义衰减(Custom Rolloff):&根据你设置的衰减图形,来自音频源的声音行为。
2D声音设置(2D Sound Settings):
  &2D平衡调整&(Pan 2D):&设置多少,引擎在音频源上有效果。
阅读(...) 评论()在unity3D用C#里边怎么做音频的波形图_百度知道
在unity3D用C#里边怎么做音频的波形图
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
阳光小天使乐园知道合伙人
来自电脑网络类芝麻团
阳光小天使乐园
采纳数:6914
获赞数:1957
参与团队:
AudioSource audio = Resources.LoadAssetAtPath(&hello.wav&, AudioSource); audio.Play(); Resources 默认加载的路径是 项目里 Resources/ , 如 Resources/mp3/hello.wav 则 Resources.LoadAssetAtPath(&mp3/hello.wav&, AudioSource);
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。unity3d-unity录音之后怎么保存到本地成为wav格式音频文件
作者:用户
浏览:1582 次
unity录音之后怎么保存到本地成为wav格式音频文件我已经调用了麦克风成功录音,但保存成本地格式一直出错!有大侠有例子吗?WAV格式就是普通的pcmraw数据加上一个wav的头信息unsignedc
unity录音之后怎么保存到本地成为wav格式音频文件
我已经调用了麦克风成功录音,但保存成本地格式一直出错!有大侠有例子吗?
格式就是普通的pcm
raw 数据加上一个wav的头信息
unsigned charwav_header[] = {
&#039;R&#039;, &#039;I&#039;, &#039;F&#039;, &#039;F&#039;,
//"RIFF"标志
0xfc, 0xff, 0xff, 0xff,
//文件长度
&#039;W&#039;, &#039;A&#039;, &#039;V&#039;, &#039;E&#039;,
//"WAVE"标志
&#039;f&#039;, &#039;m&#039;, &#039;t&#039;, &#039; &#039;,
//"fmt"标志
16, 0, 0, 0,
//过渡字节(不定)
WAVE_FORMAT_PCM, WAVE_FORMAT_PCM &&8,// 格式类别
0, 0, 0, 0,
0, 0, 0, 0,
//一个采样多声道数据块大小
//一个采样占的bit数
&#039;d&#039;, &#039;a&#039;, &#039;t&#039;, &#039;a&#039;,
//数据标记符"data"
0xd8,0xff, 0xff, 0xff
//语音数据的长度,比文件长度小36
解决方案二:
根据你的文件内容
把这些成员填上放到你的文件头
就是一个wav文件了啊
音频文件打包就是这么干的
解决方案三:
using UnityE
using System.C
using System.Collections.G
using System.IO;
using UnityE
public class MicroPhoneInput : MonoBehaviour
开始录音后报错:
Starting Microphone failed. result=25 (Unsupported file or audio format. )
UnityEngine.Microphone:Start(String, Boolean, Int32, Int32)
MicroPhoneInput:StartRecord() (at Assets/Script/MicroPhoneInput.cs:64)
MicroPhoneInput:OnGUI() (at Assets/Script/MicroPhoneInput.cs:41)
从unity3d社区上获取答案 http://answers.unity3d.com/search.html?f=&type=question&redirect=search%2Fsearch&sort=relevance&q=MicroPhone
用.net自带录音
public AudioS
void Start()
audio = GetComponent&AudioSource&();
string[] ms = Microphone.
Debug.Log("录音设备数量:" + ms.Length);
deviceCount = ms.L
if (deviceCount == 0)
Debug.Log("no microphone found");
int deviceC
void OnGUI()
if (deviceCount & 0)
if (!Microphone.IsRecording(null) && GUILayout.Button("Start", GUILayout.Height(Screen.height / 20), GUILayout.Width(Screen.width / 5)))
StartRecord();
if (Microphone.IsRecording(null) && GUILayout.Button("Stop", GUILayout.Height(Screen.height / 20), GUILayout.Width(Screen.width / 5)))
StopRecord();
if (!Microphone.IsRecording(null) && GUILayout.Button("Play", GUILayout.Height(Screen.height / 20), GUILayout.Width(Screen.width / 5)))
PlayRecord();
if (!Microphone.IsRecording(null) && GUILayout.Button("Print", GUILayout.Height(Screen.height / 20), GUILayout.Width(Screen.width / 5)))
PrintRecord();
void StartRecord()
Debug.Log("录音设备名字:" + Microphone.devices[0]);
int minFreq, maxF
Microphone.GetDeviceCaps(Microphone.devices[0], out minFreq, out maxFreq);
Debug.Log("设备最小频率 = " + minFreq.ToString() + " 最大频率 = " + maxFreq.ToString());
audio.clip = Microphone.Start(null, true, 10, 14100);
while (!(Microphone.GetPosition(null) & 0)) { }
Debug.Log("devices&#039; Rand = " + Microphone.devices.Rank.ToString());
Debug.Log("StartRecord");
void StopRecord()
if (!Microphone.IsRecording(null))
Microphone.End(null);
audio.Stop();
Debug.Log("StopRecord");
void PrintRecord()
if (Microphone.IsRecording(null))
SavWav.Save("GGD", audio.clip);
void PlayRecord()
if (Microphone.IsRecording(null))
if (audio.clip == null)
audio.Play();
Debug.Log("PlayRecord");
public byte[] GetClipData()
if (audio.clip == null)
Debug.Log("GetClipData audio.clip is null");
float[] samples = new float[audio.clip.samples * audio.clip.channels];
audio.clip.GetData(samples, 0);
Debug.Log("sample.lenght = " + samples.Length);
byte[] outData = new byte[samples.Length * 4];
System.Buffer.BlockCopy(samples, 0, outData, 0, samples.Length);
int top = 0;
for (int i = 0; i & samples.L i++)
var by = System.BitConverter.GetBytes(samples[i]);
for (int j = 2; j & 4; j++)
outData[top++] = by[j];
for (int j = 0; j & 2; j++)
outData[top++] = by[j];
outData[0] = 1;
if (audio.clip.channels == 1)
else if (audio.clip.channels == 2)
if (outData == null || outData.Length &= 0)
Debug.Log("GetClipData intData is null");
return outD
解决方案四:
using System.IO;
using UnityE
using System.Collections.G
public static class SavWav {
const int HEADER_SIZE = 44;
public static bool Save(string filename, AudioClip clip) {
if (!filename.ToLower().EndsWith(".wav")) {
filename += ".wav";
var filepath = Path.Combine(Application.dataPath, filename);
Debug.Log(filepath);
// Make sure directory exists if user is saving to sub dir.
Directory.CreateDirectory(Path.GetDirectoryName(filepath));
using (var fileStream = CreateEmpty(filepath)) {
ConvertAndWrite(fileStream, clip);
WriteHeader(fileStream, clip);
// TODO: return false if there&#039;s a failure saving the file
public static AudioClip TrimSilence(AudioClip clip, float min) {
var samples = new float[clip.samples];
clip.GetData(samples, 0);
return TrimSilence(new List&float&(samples), min, clip.channels, clip.frequency);
public static AudioClip TrimSilence(List&float& samples, float min, int channels, int hz) {
return TrimSilence(samples, min, channels, hz, false, false);
public static AudioClip TrimSilence(List&float& samples, float min, int channels, int hz, bool _3D, bool stream) {
for (i=0; i&samples.C i++) {
if (Mathf.Abs(samples[i]) & min) {
samples.RemoveRange(0, i);
for (i=samples.Count - 1; i&0; i--) {
if (Mathf.Abs(samples[i]) & min) {
samples.RemoveRange(i, samples.Count - i);
var clip = AudioClip.Create("TempClip", samples.Count, channels, hz, _3D, stream);
clip.SetData(samples.ToArray(), 0);
static FileStream CreateEmpty(string filepath) {
var fileStream = new FileStream(filepath, FileMode.Create);
byte emptyByte = new byte();
for(int i = 0; i & HEADER_SIZE; i++) //preparing the header
fileStream.WriteByte(emptyByte);
return fileS
static void ConvertAndWrite(FileStream fileStream, AudioClip clip) {
var samples = new float[clip.samples];
clip.GetData(samples, 0);
Int16[] intData = new Int16[samples.Length];
//converting in 2 float[] steps to Int16[], //then Int16[] to Byte[]
Byte[] bytesData = new Byte[samples.Length * 2];
//bytesData array is twice the size of
//dataSource array because a float converted in Int16 is 2 bytes.
int rescaleFactor = 32767; //to convert float to Int16
for (int i = 0; i&samples.L i++) {
intData[i] = (short) (samples[i] * rescaleFactor);
Byte[] byteArr = new Byte[2];
byteArr = BitConverter.GetBytes(intData[i]);
byteArr.CopyTo(bytesData, i * 2);
fileStream.Write(bytesData, 0, bytesData.Length);
static void WriteHeader(FileStream fileStream, AudioClip clip) {
var hz = clip.
var channels = clip.
var samples = clip.
fileStream.Seek(0, SeekOrigin.Begin);
Byte[] riff = System.Text.Encoding.UTF8.GetBytes("RIFF");
fileStream.Write(riff, 0, 4);
Byte[] chunkSize = BitConverter.GetBytes(fileStream.Length - 8);
fileStream.Write(chunkSize, 0, 4);
Byte[] wave = System.Text.Encoding.UTF8.GetBytes("WAVE");
fileStream.Write(wave, 0, 4);
Byte[] fmt = System.Text.Encoding.UTF8.GetBytes("fmt ");
fileStream.Write(fmt, 0, 4);
Byte[] subChunk1 = BitConverter.GetBytes(16);
fileStream.Write(subChunk1, 0, 4);
UInt16 two = 2;
UInt16 one = 1;
Byte[] audioFormat = BitConverter.GetBytes(one);
fileStream.Write(audioFormat, 0, 2);
Byte[] numChannels = BitConverter.GetBytes(channels);
fileStream.Write(numChannels, 0, 2);
Byte[] sampleRate = BitConverter.GetBytes(hz);
fileStream.Write(sampleRate, 0, 4);
Byte[] byteRate = BitConverter.GetBytes(hz * channels * 2); // sampleRate * bytesPerSample*number of channels, here
fileStream.Write(byteRate, 0, 4);
UInt16 blockAlign = (ushort) (channels * 2);
fileStream.Write(BitConverter.GetBytes(blockAlign), 0, 2);
UInt16 bps = 16;
Byte[] bitsPerSample = BitConverter.GetBytes(bps);
fileStream.Write(bitsPerSample, 0, 2);
Byte[] datastring = System.Text.Encoding.UTF8.GetBytes("data");
fileStream.Write(datastring, 0, 4);
Byte[] subChunk2 = BitConverter.GetBytes(samples * channels * 2);
fileStream.Write(subChunk2, 0, 4);
fileStream.Close();
解决方案五:
【云栖快讯】直播推荐--阿里巴巴高级数据库专家带你技术进阶之全文检索和相似搜索实践,还不快快报名~&&
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备用Unity3D如何做音乐节奏游戏,哪位大神有做过,求指教
如题 ,涉及到谱面制作,音乐节奏打点等等,哪位大神能讲下?
要评论请先&或者&
Unity3D不适合做音乐韵律游戏,它的帧率不稳,游戏的节奏点也就判断不准
PS:我说的是手机上
电脑上的合适吗……正准备用Unity做打鼓游戏……

我要回帖

更多关于 pr音频效果怎么变音 的文章

 

随机推荐