我想为ios制作 unity3d appllication ,并且需要录制音频。
我找到了record audio的方法。但保存音频格式为 wav 。我想要一种压缩的音频格式,比如 ogg / mp3 。
我也看这个question,但它使用 lame ,我可以在ios上使用lame吗?
我认为有两种方式:
我现在没有想法,希望你的帮助!
我试试这个lib NAudio.Lame。
但它不能用于统一引擎,你知道如何使它支持统一引擎以及任何统一平台吗?还是其他解决方案?
仍在等待你的帮助!
不仅有这个错误,还有很多其他错误,如何解决?
无论
master
还是experimental
分支。一个错误是 严重性代码描述项目文件行抑制状态 错误CS0103当前不存在名称“LibMp3Lame” context NAudio.Lame \ C#Projects \ NAudio.Lame \ MP3FileWriter.cs 636 Active
20160416
错误CS1061:输入
NAudio.Wave.WaveFileReader' does not contain a definition for
CopyTo'并且找不到扩展方法CopyTo' of type
NAudio.Wave.WaveFileReader'(你错过了使用吗? 指令或程序集引用?)
你知道怎么解决吗?或者其他方法转换为mp3文件而不是以下代码。
using System.IO;
using NAudio.Wave;
using NAudio.Lame;
public static class Codec {
// Convert WAV to MP3 using libmp3lame library
public static void WaveToMP3(string waveFileName, string mp3FileName, int bitRate = 128)
{
using (var reader = new WaveFileReader(waveFileName))
using (var writer = new LameMP3FileWriter(mp3FileName, reader.WaveFormat, bitRate))
reader.CopyTo(writer);
}
答案 0 :(得分:3)
在NAudio.Lame上获取图书馆并复制项目中的其中一个dll。示例代码在源页面中提供。
在.NET 4.0之前,CopyTo方法不存在。您可以编写此answer中的扩展方法来实现它。只需将下面的代码复制到项目中的某个位置即可。
public static class StreamExtensions
{
public static void CopyTo(this Stream input, Stream output)
{
byte[] buffer = new byte[16 * 1024]; // Fairly arbitrary size
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
}
答案 1 :(得分:1)
考虑到NAudio
和NAudio.Lame
目标.NET框架v4.0和Unity3D都面向.NET框架v2.0,必然会出现一些根本无法工作的事情。< / p>
如果您对它进行了排序,请随意在GitHub上分发NAudio.Lame
源代码并使用您已经运行的版本进行更新。
我不能代表NAudio
图书馆,但如果你让它在Unity上工作,请让马克知道。