vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 499: MP3 via API abspielen 
Autor: D3luxee
 Tipp anzeigenDatum: 18.04.09 00:42

Ich arbeite gerade an einem ganz einfachen MediaPlayer der Musik abspielen kann in ein paar Textboxen gibt man Pfade an und mit Radiobuttons den dateityp! Bei Wavesounds gibts keine probleme bei MP3 allerdings schon!
Ich bin per Google auf euren Tipp gestoßen und habe alles abgearbeitet!
Jetzt meldet VB mir aber fehler bei Folgenden Codezeilen
sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
aus dem Gesamtcode
Public Function MP3_Play(ByVal sFile As String, _
  ByVal sAlias As String) As Boolean
 
        Dim bResult As Boolean
 
        ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
        ' wie Leerzeichen Probleme machen
        Dim sBuffer As String
        Dim lResult As Long
 
        sBuffer = Space$(255)
        lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
 
        If lResult <> 0 Then
            sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
 
            ' MCI öffnen
            lResult = mciSendString("open " & sFile & _
              " type MPEGVideo alias " & sAlias, 0, 0, 0)
 
            If lResult = 0 Then
                ' MP3 abspielen
                If mciSendString("play " & sAlias & _
                  " from 0", 0, 0, 0) = 0 Then
                    bResult = True
                End If
            End If
        End If
 
        MP3_Play = bResult
    End Function
Dort treten folgende fehler auf:
Das Typzeichen "$" entspricht nicht dem deklarierten Datentyp "Integer".
und
"Public Property Left() As Integer" hat keine Parameter, und der Rückgabetyp kann nicht indiziert werden.


Und dann noch dort wo ich die Dateien Abspielen will
        If lied1 = "leer" Then
            GoTo ml1
        End If
        MP3_Play(lied1), "MyAlias"
ml1:
        If lied2 = "leer" Then
            GoTo ml2
        End If
        MP3_Play(lied2),  "MyAlias"
ml2:
        If lied3 = "leer" Then
            GoTo ml3
        End If
        MP3_Play(lied3),  "MyAlias"
ml3:
        If lied4 = "leer" Then
            GoTo ml4
        End If
        MP3_Play(lied4), "MyAlias"
ml4:
Fehler:
Für den Parameter "sAlias" von "Public Function MP3_Play(sFile As String, sAlias As String) As Boolean" wurde kein Argument angegeben.
und
"end of"-Anweisung erwartet.

Die Variable lied1 - lied4 werden oben mit dem inhalt der 4 textboxen gefüllt, hier der code
Dim lied1 As String = TextBox1.Text
        Dim lied2 As String = TextBox2.Text
        Dim lied3 As String = TextBox3.Text
        Dim lied4 As String = TextBox4.Text
Kann mir jemand erklären was ich falsch mache? Ich benutze VB Express 08!
Ich hoffe jemand von euch kann mir helfen.
Aber Danke im vorraus!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MP3 via API abspielen 
Autor: ModeratorDieter (Moderator)
Datum: 18.04.09 07:39

Dieser Tipp bezieht sich auf VB6 - nicht auf VB 2008.
Für VB2008 haben wir andere Tipps im Archiv
MP3 via API abspielen (.NET)
WAVE-Datei abspielen (.NET)
DirectX9 AudioPlayback

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MP3 via API abspielen 
Autor: D3luxee
Datum: 18.04.09 14:55

Danke für deine Antwort,
Ich hab das mit DirectX9 AudioPlayback versucht! Es gab weniger fehler, aber es gab fehler und deswegen bräuchte ich nochmal hilfe!
Ich habe wie im Tipp beschrieben eine Neue Klasse erstellt und dort den Code eingefügt!
Jetzt gibt es eine Warnung nähmlich:

Der in Imports "Microsoft.DirectX" angegebene Namespace oder Typ enthält keine öffentlichen Member oder kann nicht gefunden werden. Stellen Sie sicher, dass der Namespace oder der Typ definiert ist und mindestens einen öffentlichen Member enthält und dass der importierte Elementname keine weiteren Aliase enthält.

und zwei Fehler:
Der Typ "AudioVideoPlayback.Audio" ist nicht definiert.
und nochmal
Der Typ "AudioVideoPlayback.Audio" ist nicht definiert.

Und in der Windows Form gibts auch noch einen Fehler
Dim WithEvents Playback As New AudioPlayback
Mit dem Fehlercode
"WithEvents" ist bei der Deklaration von lokalen Variablen ungültig.
alle Fehler sind in der neuen Klasse, deswegen werde ich mal den Code davon posten!
Imports Microsoft.DirectX
Public Class AudioPlayback
    ' Musik ist zu Ende Event
    Public Event AudioEnd(ByVal sender As Object, ByVal e As EventArgs)
 
    ' DirectX9 Audio
    Public WithEvents m_Audio As AudioVideoPlayback.Audio = Nothing
 
    ' Variable : Läuft die Musik noch ?
    Private m_AudioPlaying As Boolean = False
    ''' <summary>
    ''' Lädt die angegebene Audio-Datei
    ''' </summary>
    ''' <param name="Filename">Dateiname der Audio-Datei</param>
    Public Sub Load(ByVal Filename As String)
        m_Audio = New AudioVideoPlayback.Audio(Filename)
    End Sub
    ''' <summary>
    ''' Spielt die Audio-Datei ab
    ''' </summary>
    Public Sub Play()
        Try
            m_Audio.Play()
            m_AudioPlaying = True
        Catch
            m_AudioPlaying = False
        End Try
    End Sub
    ''' <summary>
    ''' Abspielvorgang stoppen
    ''' </summary>
    Public Sub [Stop]()
        m_Audio.Stop()
        m_AudioPlaying = False
    End Sub
    ''' <summary>
    ''' Pause-Funktion für den Abspielvorgang
    ''' </summary>
    Public Sub Pause()
        m_Audio.Pause()
    End Sub
    ' Gibt die Ressourcen frei
    Private Sub Dispose()
        m_Audio.Dispose()
    End Sub
    ''' <summary>
    ''' Beendet die Wiedergabe und gibt die Ressourcen frei
    ''' </summary>
    Public Sub Beenden()
        [Stop]()
        Dispose()
    End Sub
    ''' <summary>
    ''' Legt die Lautstärke fest oder gibt diese zurück
    ''' </summary>
    Public Property Volume() As Integer
        Get
            Return m_Audio.Volume
        End Get
        Set(ByVal value As Integer)
            m_Audio.Volume = value
        End Set
    End Property
    ''' <summary>
    ''' Gibt zurück, ob aktuell ein Abspielvorgang läuft
    ''' </summary>
    Public ReadOnly Property IsPlaying() As Boolean
        Get
            Return m_AudioPlaying
        End Get
    End Property
    ' Löst ein Event aus, wenn der Abspielvorgang beendet ist
    Private Sub Ending(ByVal sender As Object, _
      ByVal e As EventArgs) Handles m_Audio.Ending
 
        m_AudioPlaying = False
 
        ' Event auslösen
        RaiseEvent AudioEnd(sender, e)
    End Sub
End Class


Beitrag wurde zuletzt am 18.04.09 um 15:07:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MP3 via API abspielen 
Autor: ModeratorDieter (Moderator)
Datum: 18.04.09 15:51

Einfach nur "Code kopieren" reicht halt nicht immer aus - man sollte auch ab und zu das lesen, was vorher im Tipp steht.

Zitat:

...
Fügen Sie Ihrem Projekt zunächst den Verweis "Microsoft.DirectX.AudioVideoPlayback" hinzu.
...

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MP3 via API abspielen 
Autor: D3luxee
Datum: 18.04.09 16:59

Ich habe das hinzugefügt, das hat aber keinen fehler behoben sondern noch einen zusätzlich erzeugt!
Das ist ein Code-Ausschnitt meiner anwendung
Public Class Form1
    Dim WithEvents Playback As New AudioPlayback
    Microsoft.DirectX.AudioVideoPlayback()
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
 
        Dim lied1 As String = TextBox1.Text
        Dim lied2 As String = TextBox2.Text
        Dim lied3 As String = TextBox3.Text
        Dim lied4 As String = TextBox4.Text
        If RadioButton1.Checked = True Then
            GoTo wav
        End If
        If RadioButton2.Checked = True Then
            GoTo mp
        End If
wav:
        If lied1 = "leer" Then
            GoTo l1
 
        End If
        Playback.Load(lied1)
bei
Microsoft.DirectX.AudioVideoPlayback()
gibt es den fehler:
Deklaration erwartet.

Hab ich irgendetwas an eine falsche stelle im code eingefügt?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel