MCIによるメディアデバイスの操作方法 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CDの再生方法 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
最初にデバイスをオープンします。 (ちなみに、cdaudioの場合はオープンしないでも再生できます。) /mcicontrol open cdaudio cdaudioというのは、Windowsに登録された、CD用のMCIデバイス名です。 MCIでは基本的に全てのコマンドにデバイス名を指定しなければなりません。 オープンしたら再生が可能になります。 /mci play cdaudio EQのコマンドは他と区別がつく限り省略ができるので、/mciとしてみました(w オープン直後なら、これで最初のトラックから再生が始まるはずです。 停止するには /mci stop cdauio です。 ところで、cdaudioって打つのに長すぎていやになりませんか?(w そういう時はaliasオプションを使うとよいです。 エイリアスとは、別名定義で、オープン時に指定すると、 以後のコマンドでデバイス名ではなくその名前でデバイスがコントロールできます。 /mci open cdaudio alias cd こうすると、cdという名前で別名定義されるので、 /mci play cd /mci stop cd などのように使用できます。 ところで、ストップしてから再生を行なうと、その位置から再生が始まります。 最後のトラックまで再生し終えると、次に再生コマンドを送っても再生されません。 再生位置が一番後ろに来ているからです。 その場合は、playコマンドにスタート位置を指定するか、シークさせてから再生します。 まずは、シークコマンドです。 ただ、このシークコマンドはかなり面倒です。(元々プログラム用なので) シーク位置の指定は、現在の時間フォーマットで指定する必要があります。 現在のタイムフォーマットを得るには、 /mci status cd time format フォーマットを指定するには、 /mci set cd time format XXX XXXの位置には以下のどれかが使用できます。
トラック単位でシーク位置を指定したいならば、あらかじめtime format tmsfを行なっておいて シークコマンドを利用します。 /mci set cd time format tmsf /mci seek cd to 3:00:00:00 これでトラック3の先頭にシークします。 このシークの位置指定はplayコマンドでも同じで、 /mci play cd from 4:00:00:00 とすることで、トラック4の先頭から再生を開始します。 シークしただけでは再生は始まりません。 例えば、トラック15だけを再生したい場合は、 /mci play cd from 15:00:00:00 to 16:00:00:00 と指定します。 そして、最後に必ずデバイスをクローズしましょう。 (オープンしなかった場合は必要ありません。) /mci close cd CDの場合は平気だと思いますが、ファイルを利用するデバイス等は、 クローズしないと、リソースを消費したままになるかも知れません。 リセットすれば大丈夫ですが(w コマンド使用例) /mci open cdaudio alias cd /mci set cd time format tmsf /mci play cd /mci play cd from 15:00:00:00 to 16:00:00:00 /mci stop cd /mci seek cd to 3:00:00:00 /mci close cd CDドライブが2台以上ある場合は、若いドライブ記号のものが選択されますが、 オープン時にドライブを指定する事も出来ます。 例えば、D:とE:が双方ともCDドライブで、E:の方を再生したい場合は 以下のように記述します。 /mci open e:\ type cdaudio alias cd デバイス名にパスを指定し、デバイスタイプを明示的に指定します。 CDーROMは、サウンドカードに接続している方を選択しないと再生しても 聞こえませんので注意。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MIDI、MP3、WAVEの再生方法 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MIDIやMP3の場合は、デバイス名の代わりにファイル名を指定します。 /mci open c:\mididata\abc.mid alias midi のような感じです。 ファイル名はフルパスで指定する必要があるので、コマンドのたびにタイプするのは 大変なので、エイリアスを必ず指定しましょう。 また、MP3の場合は、拡張子が関連付けされていない可能性があり、その場合は オープン時にデバイスタイプを明示的に指定します。 /mci open c:\mp3data\xyz.mp3 type Mpegvideo alias mp3 MP3とは、MPEGビデオフォーマットの音声トラックの事で、音声だけの MPEGムービーと考えてください。 したがって再生デバイスはMpegvideoになります。 また、古いメディアプレーヤーではサポートされていませんので、 最新のメディアプレーヤーが入っている必要があると思います。 ちなみにMIDIの場合はデバイスタイプはMidiaudioではなくSequencerです。 どのタイプのファイルがどのデバイスタイプで再生可能かは、Windowsディレクトリの win.iniに記述があります。 [mci extensions] mid=Sequencer rmi=Sequencer wav=waveaudio avi=AVIVideo cda=CDAudio aif=MPEGVideo aifc=MPEGVideo aiff=MPEGVideo au=MPEGVideo m1v=MPEGVideo m3u=MPEGVideo midi=Sequencer mov=MPEGVideo mp2=MPEGVideo mp3=MPEGVideo mpa=MPEGVideo mpe=MPEGVideo mpeg=MPEGVideo mpg=MPEGVideo mpv2=MPEGVideo qt=MPEGVideo snd=MPEGVideo asf=MPEGVideo2 asx=MPEGVideo2 ivf=MPEGVideo2 lsf=MPEGVideo2 lsx=MPEGVideo2 mp2v=MPEGVideo wax=MPEGVideo2 wvx=MPEGVideo2 wm=MPEGVideo2 wma=MPEGVideo2 wmv=MPEGVideo2 wmx=MPEGVideo2 wmp=MPEGVideo2 と、こんな感じで[mci extensions]セクションに定義されています。 MIDIやMP3のような、ファイルの場合は、通常トラックが単一なので、 時間フォーマットはmsfでplayやseekを行なうとよいと思います。 コマンド使用例) /mci open c:\mididata\abc.mid alias midi /mci set midi time format msf /mci play midi /mci stop midi /mci seek midi to 00:00:00 /mci close midi /mci open c:\mp3data\xyz.mp3 type Mpegvideo alias mp3 /mci set mp3 time format msf /mci play mp3 /mci stop mp3 /mci seek mp3 to 00:00:00 /mci close mp3 /mci open c:\wavdata\zxr.wav alias wav /mci set wav time format msf /mci play wav /mci stop wav /mci seek wav to 00:00:00 /mci close wav | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
コマンド一覧 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
以下に、一般的にMCIで利用できるコマンドをまとめます。 色々試してください。 ただ、MCIの戻り値も文字列であるため、日本語Windowsでは漢字が返ってくる事があります。 その場合、EQクライアントでは文字化けしてしまいます。 device_nameのところにCDの場合はcdaudioが入ります。 device_nameにはパス名を指定する事も出来ます。 ただ、パス名から拡張子が判別できない場合は、エラーになるので、オープン時に typeオプションでデバイスタイプを指定する必要があります。 openの時にaliasを指定したならば、aliasで指定した文字列が代わりに使用できます。
デバイスによってはサポートしていないコマンドもあります。 また、ビデオ系のデバイスではWindow制御等のコマンドもありますが、 EQプレイ中にはどうせ見れませんから、割愛しました。 SEEKやPLAYのポジションの指定は、現在のタイムフォーマットで指定 しなければなりません。違うフォーマットで指定した場合はエラーになります。 また、start positionより前や、start position+lengthより後を指定しても、 エラーになります。 |
プログラムの作成に使用したい方は、ここで紹介した文字列による制御よりも
定数制御のほうが向いています。 さらに詳しい情報が欲しい方には、こちらの本の18章メディアコントロールインターフェースをお勧めします。 |