4

私は既にメディア ファンデーション API を使用しています (MFManagedEncode、http://blogs.msdn.com/b/mf/archive/2010/02/18/mfmanagedencode.aspx のおかげで) wav を aac に変換しています。これがどのように機能するかについては完全には理解できていませんが、ありがたいことに機能します。

MF コーデック (AAC デコーダー) がありますが、他の方法でトランスコーディングするのは難しいと思います。これを使用する方法の例が見つかりません。控えめに言っても不可解なMSDNドキュメントを見つけています。運が良かった人はいますか?

AC# ラッパーが理想的です。

ティア。

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 に答える