.net 将AAC转换为WAV

kknvjkwl  于 2023-05-23  发布在  .NET
关注(0)|答案(2)|浏览(172)

我已经在使用Media Foundation API(感谢MFManagedEncode,http://blogs.msdn.com/b/mf/archive/2010/02/18/mfmanagedencode.aspx)将wav转换为aac。我还没有完全弄清楚这是如何工作的,但它确实有效--谢天谢地。
现在我发现用另一种方式转码很困难,即使有一个MF编解码器(AAC解码器)。我找不到如何使用它的例子,至少可以说,我发现MSDN文档很神秘;有谁走运吗
一个C# Package 器将是理想的。
TIA。

gj3fmq9x

gj3fmq9x1#

我已经成功地使用NAudio进行任何音频处理和抽象。它可以作为NuGet使用。它有媒体基金会(和其他)的 Package 编码器。
下面是使用NAudio编码到AAC并返回到WAV的示例:

using System;
using NAudio.Wave;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            // convert source audio to AAC
            // create media foundation reader to read the source (can be any supported format, mp3, wav, ...)
            using (MediaFoundationReader reader = new MediaFoundationReader(@"d:\source.mp3"))
            {
                MediaFoundationEncoder.EncodeToAac(reader, @"D:\test.mp4");
            }

            // convert "back" to WAV
            // create media foundation reader to read the AAC encoded file
            using (MediaFoundationReader reader = new MediaFoundationReader(@"D:\test.mp4"))
            // resample the file to PCM with same sample rate, channels and bits per sample
            using (ResamplerDmoStream resampledReader = new ResamplerDmoStream(reader, 
                new WaveFormat(reader.WaveFormat.SampleRate, reader.WaveFormat.BitsPerSample, reader.WaveFormat.Channels)))
            // create WAVe file
            using (WaveFileWriter waveWriter = new WaveFileWriter(@"d:\test.wav", resampledReader.WaveFormat))
            {
                // copy samples
                resampledReader.CopyTo(waveWriter);
            }
        }
    }
}
fsi0uk1n

fsi0uk1n2#

我想把AAC解码成PCM/WAV,而不依赖于MediaFoundation,以便使代码容易移植到其他平台。所以我把JAAD从Java移植到了netstandard 2.0。它没有本机依赖,我还包括一个示例如何使用它从AAC转换为WAV。你可以找到here。它也可以作为nuget使用。

相关问题