kostenloser Webspace werbefrei: lima-city


Visual Basic: MP3 Sounds abspielen

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Also ich hab hier ein kleines Problem. Und zwar will ich MP3-Sounds abspielen, aber irgendwie bekomme ich das nicht hin. Ich habe schon einige APIs ausprobiert, die WinMediaPlayer.ocx, und einige *.DLLs. Nun bin ich bei mciSendString angekommen, die so weit ich weiss auch irgendwann mal bei mir funktionierte.

    Mein Code sieht momentan so aus:
    Dim Paths As PathLib
    
    Private Type PathLib
      Sounds As String
    End Type
    
    Private Function PlayMP3(ByVal strFile As String) As Long
      
      Dim Sound As String
    
      Sound = Paths.Sounds & strFile & ".mp3"
      
      Play = mciSendString("play " & Sound, 0&, 0, 0)
      
    End Function
    
    Private Sub Command1_Click()
    
      PlayMP3 "hallo"
    
    End Sub
    
    Private Sub Form_Load()
    
      Paths.Sounds = App.Path & "\"
    
    End Sub


    PlaySounds.Bas:
    Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long


    Das müsste eigentlich funktionieren, denke ich. Aber ich finde den Fehler einfach nicht. Habe sogar schon daran gedacht, dass meine Boxen den Geist aufgegeben haben, oder ich den Sound gemuted habe oder so, aber ich hab alles getestet und der Sound ist in jeder Hinsicht funktionstüchtig. Die Datei ist ebenfalls in Ordnung, habe sie schon mit dem WMP abspielen können. Wäre euch dankbar, wenn ihr mir helfen könntet.

    Liebe Grüße
    - VampireSilence

    Beitrag zuletzt geändert: 1.2.2009 2:48:14 von vampiresilence
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Dein Code kann nicht ganz funktionieren, da du vergessen hast, den Dateipfad in Anführungszeichen zu setzen.

    Korrekt wäre:
    Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal command As String, ByRef buffer As Any, ByVal bufferSize As Long, ByVal hWndCallback As Long) As Long
    
    Sub Play()
         
         Dim sCommand As String
         Dim strFilePath As String
         strFilePath = "C:\Windows\Media\ringout.wav"
         
         sCommand = "play " & """" & strFilePath & """"
         Call mciSendString(sCommand, 0&, 0, 0)
    
    End Sub


    Mehr Infos: http://www.pinvoke.net/default.aspx/winmm/mciSendString.html
  4. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Mit *.wav funzts nun prima, nur mit *.mp3 leider immernoch nicht. Auch als ich die *.mp3 in *.wav kovertiert hab, lief diese nicht. Müssen die vllt mit ner bestimmten Bitrate codiert sein oder so ?

    Im übrigen läuft diese *.wav auch ohne Anführungszeichen und auch ohne ".dll" hinter der Lib. Daran kann es also schonmal nicht liegen.

    Edit: Ok, das glaubst du mir yetzt nicht, aber im Windows\Media-Ordner funzt die Datei und im Projekt-Ordner nicht. Ich dachte grad, ich steh im Wald, aber es is wirklich so. Entweder akzeptiert er keine Pfade auf alternativen Laufwerken, oder er akzeptiert keine Leerzeichen innerhalb eines Pfades, woanders kann es nicht mehr dran liegen. Im Windows\Media-Ordner funzt die Datei im übrigen auch mit meinem Originalcode.

    Edit2: Aber wie teste ich nun, ob gerade noch eine Datei abgespielt wird ?

    Liebe Grüße
    - VampireSilence

    Beitrag zuletzt geändert: 3.2.2009 19:02:42 von vampiresilence
  5. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Andere Formate musst du speziell angeben, z.B. "type mpegvideo"

    Zum Abfragen von Ereignissen einfach noch den Parameter "notify" mit übergeben.

    Steht alles hier:
    http://www.pinvoke.net/default.aspx/winmm/mciSendString.html
    http://www.vbarchiv.net/api/details.php?id=mcisendstring


    Damit du eine abgespielte Datei erneut abspielen kannst, musst du sie zuvor wieder schließen:
    Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal command As String, ByRef buffer As Any, ByVal bufferSize As Long, ByVal hWndCallback As Long) As Long
    
    Sub mciPlay()
         Dim sCommand As String
         Dim strFilePath As String
         strFilePath = "D:\Folders and Folders\File.wav"
         sCommand = "open " & """" & strFilePath & """" & " type waveaudio alias MediaFile"
         Call mciSendString(sCommand, 0&, 0, 0)
         sCommand = "play MediaFile"
         Call mciSendString(sCommand, 0&, 0, 0)
    End Sub
    
    Sub mciStop()
         sCommand = "close MediaFile"
         Call mciSendString(sCommand, 0&, 0, 0)
    End Sub

    Hier sollte auch ein Pfad mit Leerzeichen funktionieren.
  6. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Ich benutze Visual Basic 6.0 Professional.

    Liebe Grüße
    - VampireSilence
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!