4

我已经在使用 Media Foundation API(感谢 MFManagedEncode,http://blogs.msdn.com/b/mf/archive/2010/02/18/mfmanagedencode.aspx)将 wav 转换为 aac。我还没有完全理解它是如何工作的,但它确实有效——谢天谢地。

现在我发现很难以另一种方式进行转码,即使它有一个 MF 编解码器(AAC 解码器)。我找不到如何使用它的示例,而且我发现 MSDN 文档至少可以说是神秘的;有人幸运吗?

AC# 包装器将是理想的。

TIA。

4

1 回答 1

6

我已经成功地使用 NAudio 进行任何音频处理和抽象。它以 NuGet 的形式提供。它具有 Media Foundation(和其他)的包装编码器。

这是使用 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);
            }
        }
    }
}
于 2015-01-13T10:37:54.603 回答