我想在聲卡以外的默認位置播放MP3(例如,我插入USB耳機)。更改聲卡並播放MP3
如果我想在不同的聲卡上播放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
而不是mpegvideo
(這樣cmd = "Open test.mp3 type waveaudio alias WAVFile"
)打開它,一切工作正常。但是,無論我嘗試過什麼,如果我嘗試打開MP3文件,它都不起作用。
我錯過了什麼?我已經看到了一些像2000年這樣的未解答的問題 - 必須有一種方法可以在不同的聲卡上播放MP3文件。
這裏是一個ASM例如mybe它可以幫助你:HTTP:// WWW。 rohitab.com/discuss/topic/9205-play-mpeg-mp3-avi-probably/ – Jester
這個傢伙戴夫看起來像他遇到了同樣的問題:http://www.itlisting.org/1-windows-media/911fe1683fd26cc4 .aspx –
@Jester ASM示例不會更改mp3文件將播放的音頻設備。它只是播放文件。這部分對我來說確實很好。更改要播放它的設備 - 這是什麼不起作用。 – AngryHacker