C#で音声変換する

プログラミング
この記事は約2分で読めます。

過去記事の再掲です。

最近 C#を使って wav や mp3、aac の変換を行う機会があった。
思ったよりもいろいろ試してみることになったので、メモとして残しておく。

## NAudio

C#でオーディオを扱うにあたって、いろんなことができるのが NAudio である。 mp3 や aac に簡単に変換できるようなメソッドが備わっているので、最初はこれを使う予定だった。

NAudio 2.1.0
NAudio, an audio library for .NET

ところが、変換機能を使えるかどうかは OS に入っているコーデックに依存するため、Windows のバージョンによっては動かないものもあることがわかった。

How to Encode MP3s with NAudio MediaFoundationEncoder
Mark Heath's Development Blog

自分が使用している開発環境(Windows7)では使えなかったため断念。ちなみに、常用している Windows10 のマシンでは動いた。

## NAudio.Lame

他のライブラリを探してみたところ、NAudio.Lame というものを発見。

NAudio.Lame 2.0.1
Uses libmp3lame.dll from the Lame project to provide MP3 encoding support to NAudio 2.0. Both 64-bit and 32-bit versions of libmp3lame.dll are provided, with p...

外部 dll を入れる必要があるが、wav と mp3 の相互変換が可能になる。 ただし、aac には対応していない。

## Expression Encoder

さらに他のライブラリを探していると、Expression Encoder という、Microsoft 謹製のライブラリを発見。正確にはエンコードソフトの sdk なのかな?

Microsoft.Expression.Encoder 4.0.4276.4
Expression Encoder 4 with SP2 is an advanced audio/video-encoding and live-broadcasting application that provides new feature support, updates, and stability en...

しかし、変換機能は有料版じゃないと使えないとのこと。 読みづらいドキュメント読んで頑張ったのに、なんということだ…

## Media Tool Kit

ffmpeg のラッパーを見つけた。インストールにやたら時間がかかるというところを見ると、ffmpeg を内包してるっぽい。 コードも簡単に書けるし、とりあえずこれを使ってみることにした。

MediaToolkit 1.1.0.1
MediaToolkit is a .NET library which can convert and process audio and video files. Functionality: - Grab thumbnails from videos - Cut / split videos - Conver...

パッケージマネージャからインストールしたら、以下のように記述して使える。 ファイル名の拡張子を変えてやることで変換先の形式をかえられるようだ。

コメント

タイトルとURLをコピーしました