C# 如何在ios上将wav音频转换为mp3/ogg?
我想为ios制作一个unity3d应用程序,需要录制音频 裁判: 我找到了一种方法。但是保存的音频格式是wav。我想要一种压缩音频格式,比如ogg/mp3 我也看了,但是它使用了lame,我可以在ios上使用lame吗 我认为有两种方法:C# 如何在ios上将wav音频转换为mp3/ogg?,c#,ios,unity3d,wav,ogg,C#,Ios,Unity3d,Wav,Ogg,我想为ios制作一个unity3d应用程序,需要录制音频 裁判: 我找到了一种方法。但是保存的音频格式是wav。我想要一种压缩音频格式,比如ogg/mp3 我也看了,但是它使用了lame,我可以在ios上使用lame吗 我认为有两种方法: 录制音频,并将其保存在ogg中,但我不知道如何压缩unity引擎上麦克风的音频 像下面一样使用SaveWav并将音频文件转换为ogg或mp3,unity是否有一些库可以这样做?它在ios平台上运行良好吗 我现在不知道,希望你的帮助 P.S.(20160425
P.S.(20160425) 我试试这个lib。 但它不能用于unity engine,您知道如何使其支持unity engine和任何unity平台吗?还是其他解决方案 还等着你的帮助呢 在vs中重建项目时出错 不仅存在此错误,还有许多其他错误,如何修复它 无论是
硕士
还是实验
分支。一个错误是
严重性代码说明项目文件行抑制状态
错误CS0103当前数据库中不存在名称“LibMp3Lame”
上下文NAudio.Lame\C#Projects\NAudio.Lame\MP3FileWriter.cs 636处于活动状态
这是主分支中的生成错误
有关复制到的错误
20160416
错误CS1061:类型NAudio.Wave.waveileReader'不包含
类型的
CopyTo'和无扩展方法
CopyTo'的定义
NAudio.Wave.waveileReader'可以找到(您是否缺少使用
指令或组件引用?)
你知道怎么修吗?或其他方法转换为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);
}
打开库并复制项目中的一个dll。源代码页中提供了示例代码
CopyTo方法在.NET 4.0之前不存在。您可以像这样编写一个扩展方法来实现它。只需将下面的代码复制到项目中的某个地方
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);
}
}
}
考虑到
NAudio
和NAudio.Lame
target.NET framework v4.0和Unity3D targets.NET framework v2.0,肯定有一些东西根本不起作用
如果你真的对它进行了分类,可以在GitHub上找到NAudio.Lame
源代码,并用你正在使用的版本进行更新
我不能为
NAudio
库说话,但是如果你让它在Unity上运行,请让Mark知道。谢谢你,我将在周一进行测试。是的,我下载了它,我发现我不能像Unity engine中的示例代码那样使用使用NAudio.Wave
或使用NAudio.Lame
。你知道怎么修吗?我不知道。你能帮我吗?我想你应该把它添加到插件文件夹中。插件文件夹应位于资产文件夹的顶层,并应命名为“插件”。另一个可能出现的问题是NAudio可能是在.NET4.0或.NET4.5中构建的。在这种情况下,您应该下载源代码并自行构建以生成DLL。如果您有用于Visual Studio的Unity工具,Visual Studio允许您轻松地为Unity生成代码。不要开始调试,只需重新生成项目即可。尝试重新加载Nuget包。请确保在生成之前保存解决方案。似乎在.NET 4.0中添加了CopyTo。您可以添加一个扩展方法来实现CopyTo。编辑答案以包含CopyTo扩展。如果答案对你有效,你能接受吗?@GökhanKurt谢谢你,它有效,你使用c#/.net多久了?你节省了我很多时间。谢谢,我似乎需要更多地了解c#,而不仅仅是unity engine。你对学习c#/.net有什么建议吗?我只是习惯于看到统一的限制。没有建议可提。随着时间和经验,你只需要学习。如果你想知道别人知道什么,谷歌是你的朋友。只要正确的关键词就行了。它在团结上起作用。但当我在android上测试它时,它似乎不起作用。我现在没有在ios上测试它。是的,它不会在任何不知道如何加载本机Windows DLL的东西上工作,因为它使用的是蹩脚的本机DLL。