課題解決Tips

C#で音声変換する

salmoncode

最近 C#を使って wav や mp3,aac の変換を行う機会があった.

思ったよりもいろいろ試してみることになったので,メモとして残しておく.

NAudio

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

https://www.nuget.org/packages/NAudio/

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

https://markheath.net/post/naudio-mediafoundationencoder

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

NAudio.Lame

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

https://www.nuget.org/packages/NAudio.Lame/

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

Expression Encoder

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

https://www.nuget.org/packages/Microsoft.Expression.Encoder/

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

Media Tool Kit

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

https://www.nuget.org/packages/MediaToolkit/

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

ABOUT ME
サーモン
サーモン
著者(ソフトウェアエンジニア)
情報系大学院を卒業後、ソフトウェアエンジニアとして都内企業に従事。プログラミング歴は10年以上になります。
記事URLをコピーしました