質問編集履歴

1 参考URLなど

KeisukeOkada

KeisukeOkada score 12

2017/09/06 17:13  投稿

VB.netでNAudioを利用してmp3からaacに音声変換
###前提・実現したいこと
NAudioを利用して、mp3ファイルをaacに変換したい。
###発生している問題・エラーメッセージ
encoder.Encode(outputFilenameTextBox.Text, reader)にて以下のエラーが発生。
```
System.ArgumentException{"値が有効な範囲にありません。"}
値が有効な範囲にありません。
  場所 NAudio.MediaFoundation.MediaFoundationInterop.MFCreateSinkWriterFromURL(String pwszOutputURL, IMFByteStream pByteStream, IMFAttributes pAttributes, IMFSinkWriter& ppSinkWriter)
  場所 NAudio.Wave.MediaFoundationEncoder.CreateSinkWriter(String outputFile)
  場所 NAudio.Wave.MediaFoundationEncoder.Encode(String outputFile, IWaveProvider inputProvider)
  場所 naudiotest.Form1.Button3_Click(Object sender, EventArgs e) 場所 E:\work\MSテスト\naudio\naudiotest\naudiotest\Form1.vb:行 25
  場所 System.Windows.Forms.Control.OnClick(EventArgs e)
  場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  場所 System.Windows.Forms.Control.WndProc(Message& m)
  場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
  場所 System.Windows.Forms.Button.WndProc(Message& m)
  場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
  場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
  場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
  場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
  場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
  場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
  場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
  場所 naudiotest.My.MyApplication.Main(String[] Args) 場所 17d14f5c-a337-4978-8281-53493378c1071.vb:行 81
  場所 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
  場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
  場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  場所 System.Threading.ThreadHelper.ThreadStart()
```
###該当のソースコード
```vb
       Dim reader As New MediaFoundationReader(inputFilenameTextBox.Text)
       Dim mediaType = MediaFoundationEncoder.SelectMediaType(
           NAudio.MediaFoundation.AudioSubtypes.MFAudioFormat_AAC,
           reader.WaveFormat,
           reader.WaveFormat.BitsPerSample)
       Using encoder As New MediaFoundationEncoder(mediaType)
           encoder.Encode(outputFilenameTextBox.Text, reader)
       End Using
```
###試したこと
入力ファイルは、Windows7のおまけのKalimba.mp3を利用
wavファイルの作成は確認済み。
wavからmp3への変換はOSにコーディックをインストールしていないためか、SelectMediaTypeでNothingが返ってきました。
入力をwavにしても同様のエラーが発生します。
###補足情報(言語/FW/ツール等のバージョンなど)
OS:Windows7 64bit
.net framework 3.5
Visual Studio 2012
Visual Studio 2012
NAudio 1.8.0.0(https://naudio.codeplex.com/よりダウンロードし手動で参照設定)
参考URL
https://so-zou.jp/software/tech/programming/c-sharp/media/audio/naudio/
  • .NET Framework 3.5

    39 questions

    .NET Framework-3.5は、NET Framework 2.0にアセンブリを追加(3.0も含む)したものをベースにしています。

  • VB.NET

    1371 questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る