C# 如何在ios上将wav音频转换为mp3/ogg?

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

我想为ios制作一个unity3d应用程序,需要录制音频

裁判: 我找到了一种方法。但是保存的音频格式是wav。我想要一种压缩音频格式,比如ogg/mp3

我也看了,但是它使用了lame,我可以在ios上使用lame吗

我认为有两种方法:

  • 录制音频,并将其保存在ogg中,但我不知道如何压缩unity引擎上麦克风的音频
  • 像下面一样使用SaveWav并将音频文件转换为ogg或mp3,unity是否有一些库可以这样做?它在ios平台上运行良好吗
  • 我现在不知道,希望你的帮助


    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。