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

时间:2016-04-22 10:37:26

标签: c# ios unity3d wav ogg

我想为ios制作 unity3d appllication ,并且需要录制音频

价:

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

我也看这个question,但它使用 lame ,我可以在ios上使用lame吗?

我认为有两种方式:

  1. 录制音频,并将其保存在ogg中,但我不知道如何在Unity引擎上压缩音频
  2. 使用 SaveWav ,如下所示,并将音频文件转换为ogg或mp3,是否有一些图书馆可以统一执行此操作?它在ios平台上运行良好吗?
  3. 我现在没有想法,希望你的帮助!

    P.S。 (20160425)

    我试试这个lib NAudio.Lamelame-naudio

    但它不能用于统一引擎,你知道如何使它支持统一引擎以及任何统一平台吗?还是其他解决方案?

    仍在等待你的帮助!

    在vs

    中重建项目时出错

    不仅有这个错误,还有很多其他错误,如何解决?

      

    无论master还是experimental分支。一个错误是   严重性代码描述项目文件行抑制状态   错误CS0103当前不存在名称“LibMp3Lame”   context NAudio.Lame \ C#Projects \ NAudio.Lame \ MP3FileWriter.cs 636 Active

    enter image description here 这是master branch中的构建错误。

    关于 CopyTo

    的错误

    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);
        }
    

2 个答案:

答案 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)

考虑到NAudioNAudio.Lame目标.NET框架v4.0和Unity3D都面向.NET框架v2.0,必然会出现一些根本无法工作的事情。< / p>

如果您对它进行了排序,请随意在GitHub上分发NAudio.Lame源代码并使用您已经运行的版本进行更新。

我不能代表NAudio图书馆,但如果你让它在Unity上工作,请让马克知道。