[PR]

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コマンドラインで .wav ファイルを再生する

「ファイル名を指定して実行」から「イカちゃん」とか打ち込んだら「なんでゲソ?」って返ってきたら面白いなあと思って調べてみましたけど、別にちょっと .wav ファイルを再生したいとか、スクリプトに組み込みたいとかそういうときにも普通に使えるので引かないでください。

サウンドレコーダーを使用する (XP 以前)

まず XP 以前ならサウンドレコーダーというツールでできてしまいます。サウンドレコーダーは sndrec32.exe ですのでこんな感じです。

sndrec32 /embedding /play /close "C:\Ikamusume\mail_janaika.wav"

/play と /close はそのままなのでいいとして、/embedding は GUI を非表示で起動するオプションです[1]。サウンドレコーダーが使えるならこれが一番簡単ですね。

.NET Framework の SoundPlayer クラス を使用する (Vista 以降)

問題は Vista 以降です。サウンドレコーダーは Vista 以降にもあるのですが、これは sndrec32.exe ではなく SoundRecorder.exe という別物で、その名の通りの録音専用ツールになってしまっています。整合性を求めるのは構いませんけど、そこは機能を削るんじゃなくて名称を変更するところでは……。

仕方がないのでなにか別の方法でできないかと調べていたところ PowerShell で .NET Framework の SoundPlayer クラス[2] を使うという方法に辿り着きました。次のように実行します。

PS C:\foo> $a = New-Object Media.SoundPlayer("D:\Index\mail_nandayo.wav")
PS C:\foo> $a.PlaySync()
PS C:\foo>

オブジェクトを生成してメソッドを呼び出しているだけです[3]。PlaySync() というのは同期再生っていうんですかね、要は再生して、その再生が終了するまで処理を待たせるメソッドです。非同期再生の Play() を使うと再生中に処理が進んでしまうので、スクリプトの場合は終了すると途切れてしまいます。PowerShell のコンソールを開いてそこから実行するのであれば Play() でもいいと思います。

ところで、これは複数行のコマンドなので、このままだと冒頭で述べたような「ファイル名を指定して実行」から「イカデックスたん」とか打ち込んで「え、な、なんでゲソ、なんだよ?」をするためにはコマンドをスクリプトか何かにする必要があります。できなくていいよ気持ち悪い、という方はそれでいいんですけど。

PowerShell のスクリプトについては次回かそこらで説明するかもしれません。しないかも。基本的にはバッチファイルと同じですし、ぐぐってもらえれば、ということで。

  1. ^ 詳細は ぺたぺた :: sndrec32.exeのコマンドラインオプションについてを参照。"sndrec32 /h" とかでヘルプは表示されないんですかね?
  2. ^ 詳細は MSDN の SoundPlayer クラス (System.Media) を参照。
  3. ^ PowerShell のオブジェクト操作は .NET Framework オブジェクト (Windows PowerShell) を参照。

Post a comment

Sponsored Link
Information
Menu
アンケート
Links
Mail Form

名前:
メール:
件名:
本文:

Sponsored Links
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。