1

デフォルト以外のサウンド カードで MP3 を再生したい (たとえば、USB ヘッドセットを接続した)。

別のサウンド カードで WAV ファイルを再生したい場合、完全に正常に動作するコードがあります。しかし、MP3 では失敗します。コードを C# で記述しようとしていますが、アプリと WinAPI (相互運用など) の間に何もないため、VB6 に変換しました。具体的には、サウンド カードを変更する呼び出し - mciSendCommand - が失敗し、エラー 274 - で失敗しますThe MCI device you are using does not support the specified command。MCI タイプの操作のシーケンスは通常、次のようになります。ファイルを開き、操作を行い (サウンド カードの変更など)、再生します。

Dim cmd as String
Dim rc as Long
Dim lngDeviceID As Long
Dim parms As MCI_WAVE_SET_PARMS

cmd = "Open test.mp3 type mpegvideo alias Mp3File"
rc = mciSendString(CommandString, vbNullString, 0, 0&)  ' Open works

lngDeviceID = mciGetDeviceID("Mp3File")
parms.wOutput = 1 ' tell it to playback on the 2nd card 

rc = mciSendCommand(lngDeviceID, MCI_SET, MCI_WAVE_OUTPUT, parms) ' FAILS with 274
If (rc <> MMSYSERR_NOERROR) Then
    ' The command failed.
    MsgBox "Change card: " & GetMCIErrorString(rc)
End If

興味深いことに、WAV ファイルを再生したい場合、(このように)waveaudioの代わりに開く必要がありますが、すべて正常に動作します。しかし、MP3 ファイルを開こうとすると、何を試しても機能しません。mpegvideocmd = "Open test.mp3 type waveaudio alias WAVFile"

私は何が欠けていますか?2000 年にさかのぼって、このような未回答の質問を 12 ほど見てきました。別のサウンド カードで MP3 ファイルを再生する方法が必要です。

4

1 に答える 1

0

変えようとしたか

cmd = "Open test.mp3 type mpegvideo alias Mp3File"

cmd = "Open test.mp3 type mpegvideo alias MediaFile"?

.NET と Winmm.dll を使用して MP3 ファイルを再生する CodeProject に関する次の記事をご覧ください。

「MP3 ヘルパー クラス - http://www.codeproject.com/Articles/95000/MP3-Helper-Class」

于 2012-12-08T07:01:55.717 に答える