Mp3 Player

  • EDIT //////
    Ok hab soweit alles hinbekommen =)

    Aber nun hab ich ein Anderes Problem.
    iwie Funtzt des nicht mehr mit dem Fileopendialog...

    Hier mein Code

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <Sound.au3>
    #include <Guislider.au3>
    #include <GuiListBox.au3>
    #include <_Transinput.au3>
    #include <GUIEnhance.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Angaben zur Fenster Animation
    Opt("GUIOnEventMode", 1)
    $iWinHeight = 400
    $iGUI = GUICreate("", 300, $iWinHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, "EventHandler")
    ;Ende Angaben zur Fenster Animation

    [/autoit] [autoit][/autoit] [autoit]

    ;Löschen der Dateien
    FileDelete( @TempDir & "\iflowbg.jpg")
    FileDelete( @TempDir & "\iflowplay.jpg")
    FileDelete( @TempDir & "\iflowpause.jpg")
    FileDelete( @TempDir & "\iflowstop.jpg")
    FileDelete( @TempDir & "\iflowopen.jpg")
    FileDelete( @TempDir & "\iflowsplash.jpg")
    ;Ende Löschen der Dateien

    [/autoit] [autoit][/autoit] [autoit]

    ;Dateien Installieren
    FileInstall("D:\iFlow Media Player\Player\data\iflowbg.jpg", @TempDir & "\iflowbg.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowplay.jpg", @TempDir & "\iflowplay.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowpause.jpg", @TempDir & "\iflowpause.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowstop.jpg", @TempDir & "\iflowstop.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowopen.jpg", @TempDir & "\iflowopen.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowsplash.jpg", @TempDir & "\iflowsplash.jpg")
    ;Ende Dateien Installieren

    [/autoit] [autoit][/autoit] [autoit]

    ;Splash Bild
    $destination = @TempDir & "\iflowsplash.jpg"

    [/autoit] [autoit][/autoit] [autoit]

    SplashImageOn ( "iFlow Music Player", $destination, 300, 100, -1, -1)
    Sleep(3000)
    SplashOff()
    ;Ende Splash Bild

    [/autoit] [autoit][/autoit] [autoit]

    ;Globale Variablen
    Global $hSound, $iLength, $bSlider = True
    Global $old_slider_value = 50
    ;Ende Globale Variablen

    [/autoit] [autoit][/autoit] [autoit]

    ;Fenster Hintergrund
    GUISetBkColor(0x000000)
    GUICtrlCreatePic ( @TempDir & "\iflowbg.jpg", 0, 300 , 300 , 100)
    GuiCtrlSetState(-1,$GUI_DISABLE)
    ;Ende Fenster Hintergrund

    [/autoit] [autoit][/autoit] [autoit]

    ;Song wo gerade gespielt wird
    $CurrentSong = GUICtrlCreateInput("", 10, 10, 220, 20)
    _TransInput_Create($CurrentSong,12)
    ;Ende Song wo gerade gespielt wird

    [/autoit] [autoit][/autoit] [autoit]

    ;Playlist
    $playlist = GUICtrlCreateList("", 0, 50, 300, 214)
    ;Ende Playlist

    [/autoit] [autoit][/autoit] [autoit]

    ;Button zum Öffnen von Music
    $Open = GUICtrlCreatePic ( @TempDir & "\iflowopen.jpg", 240, 355 , 42 , 42)
    ;Ende Button zum Öffnen von Music

    [/autoit] [autoit][/autoit] [autoit]

    ;Button zum Abspielen von Music
    $Play = GUICtrlCreatePic ( @TempDir & "\iflowplay.jpg", 125, 355 , 42 , 42)
    ;Ende Button zum Abspielen von Music

    [/autoit] [autoit][/autoit] [autoit]

    ;Button zum Pausieren der Music
    $Pause = GUICtrlCreatePic ( @TempDir & "\iflowpause.jpg", 75, 355 , 42 , 42)
    ;Ende Button zum Pausieren der Music

    [/autoit] [autoit][/autoit] [autoit]

    ;Button zum Stoppen der Music
    $Stop = GUICtrlCreatePic ( @TempDir & "\iflowstop.jpg", 175, 355 , 42 , 42)
    ;Ende Button zum Stoppen der Music

    [/autoit] [autoit][/autoit] [autoit]

    ;Slider für Lautstärke
    $slider = GUICtrlCreateSlider(5, 355, 50, 40, BitOR($TBS_VERT, $TBS_AUTOTICKS))
    GUICtrlSetBkColor(-1,-2)
    GUICtrlSetLimit($slider, 100, 0)
    GUICtrlSetData($slider, 50)
    ;Ende Slider für Lautstärke

    [/autoit] [autoit][/autoit] [autoit]

    ;Slider für Position der Music ändern
    $idSldrPos = GUICtrlCreateSlider(15, 270, 270, 25, $TBS_TOOLTIPS)
    GUICtrlSetBkColor(-1,-2)
    GUICtrlSetLimit($idSldrPos,100, 1)
    ;Ende Slider für Position der Music ändern

    [/autoit] [autoit][/autoit] [autoit]

    ;Anzeige der Vergangenen Abspielzeit
    $Label1 = GUICtrlCreateLabel("00:00", 50, 310, 100, 36)
    GUICtrlSetBkColor(-1,-2)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    ;Ende Anzeige der Vergangenen Abspielzeit

    [/autoit] [autoit][/autoit] [autoit]

    ;Anzeige der Gesamten Abspielzeit
    $Label2 = GUICtrlCreateLabel("00:00", 160, 310, 100, 36)
    GUICtrlSetBkColor(-1,-2)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    ;Ende Anzeige der Gesamten Abspielzeit

    [/autoit] [autoit][/autoit] [autoit]

    ;Trenn Symbol zwischen den Abspielzeiten
    $Label3 = GUICtrlCreateLabel("/", 150, 310, 12, 36)
    GUICtrlSetBkColor(-1,-2)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    ;Ende Trenn Symbol zwischen den Abspielzeiten

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ;Haupt Fenster
    _GUIEnhanceAnimateWin ($iGUI, 400, $GUI_EN_ANI_FADEIN)
    GuiCtrlSetState(-1,$GUI_DISABLE)
    _GUIEnhanceAnimateTitle ($iGUI, "iFlow Music Player", $GUI_EN_TITLE_DROP)
    Sleep(1000)
    _GUIEnhanceAnimateTitle ($iGUI, "iFlow Music Player", $GUI_EN_TITLE_SLIDE)
    Sleep(1000)
    GuiCtrlSetState(-1,$GUI_DISABLE)
    ;Ende Haupt Fenster

    [/autoit] [autoit][/autoit] [autoit]

    ;Registrieren der Abspiel Position
    AdlibRegister("_GetPos", 1000)
    ;Ende Registrieren der Abspiel Funktion

    [/autoit] [autoit][/autoit] [autoit]

    ;Anfang Aller Funktionen
    While 1

    [/autoit] [autoit][/autoit] [autoit]

    $slider_value = GUICtrlRead($slider)

    [/autoit] [autoit][/autoit] [autoit]

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    ;Öffnen der Music Datei
    Case $Open
    $Opened_File = FileOpenDialog("Open Music File","C:\Documents and Settings\Windows\My Documents\My Music","Music Files(*.mp3;*.wav;*.wma;*.cda)",3)
    $hSound = _SoundOpen($Opened_File)
    ;Ende Öffnen der Music Datei

    [/autoit] [autoit][/autoit] [autoit]

    ;Schreibe Informationen in das GUI
    GUICtrlSetData($Label2, _SoundLength($hSound))
    GUICtrlSetData($CurrentSong, $Opened_File)
    GUICtrlSetData($playlist, $Opened_File)
    ;Ende Schreibe Informationen in das GUI

    [/autoit] [autoit][/autoit] [autoit]

    ;Gibt die Länge der Music Datei an
    $iLength = _SoundLength($hSound, 2) / 1000
    GUICtrlSetLimit($idSldrPos,$iLength, 1)
    _SoundPlay($hSound)
    ;Ende Gibt die Länge der Music Datei an

    [/autoit] [autoit][/autoit] [autoit]

    ;Funktionen für Positions Slider
    Case $GUI_EVENT_PRIMARYDOWN
    $bSlider = False

    [/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_PRIMARYUP
    $bSlider = True
    ;Ende Funktionen für Positions Slider

    [/autoit] [autoit][/autoit] [autoit]

    ;Ausgabe der Position in der Console
    Case $idSldrPos
    $bSlider =False
    $iSS = GUICtrlRead($idSldrPos)
    consolewrite("Neue Pos in Seknden:" & $iSS & @CRLF)
    Local $iHH = Int($iSS / 3600)
    $iSS = Mod($iSS, 3600)
    Local $iMM = Int($iSS / 60)
    $iSS = Mod($iSS, 60)
    consolewrite($iHH & ":" & $iMM & ":" & $iSS & @CRLF)
    _SoundSeek($hSound, $iHH, $iMM, $iSS)
    _SoundPlay($hSound)
    $bSlider =True
    ;Ende Ausgabe der Position in der Console

    [/autoit] [autoit][/autoit] [autoit]

    ;Media Buttons
    Case $Stop
    _SoundStop($hSound)
    Case $Play
    _SoundPlay($hSound)
    Case $Pause
    _SoundPause($hSound)
    ;Ende Media Buttons

    [/autoit] [autoit][/autoit] [autoit]

    ;Funktion für Lautstärke Slider
    Case $old_slider_value <> $slider_value
    SoundSetWaveVolume(100 - $slider_value)
    $old_slider_value = $slider_value
    ;Ende Funktion für Lautstärke Slider
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;Funktion für Positions Angabe
    Func _GetPos()
    $iPos = _SoundPos($hSound, 2) / 1000
    GUICtrlSetData($Label1, _SoundPos($hSound));Zeigt die wie weite das Lied schon ist
    if $bSlider Then GUICtrlSetData($idSldrPos, $iPos)
    EndFunc
    ;Ende Funktion für Positions Angabe

    [/autoit] [autoit][/autoit] [autoit]

    ;Funktion für Animiertes GUI
    Func EventHandler()
    Switch @GUI_CtrlId
    Case $GUI_EVENT_CLOSE
    _GUIEnhanceAnimateWin ($iGUI, 400, $GUI_EN_ANI_FADEOUT)
    Exit
    EndSwitch
    EndFunc
    ;Ende Funktion für Animiertes Gui
    ;Ende Aller Funktionen

    [/autoit]

    Hoffe um Antwort

    Einmal editiert, zuletzt von slash (23. September 2010 um 00:45)

    • Offizieller Beitrag

    Wenn du ein Beispiel willst, durchsuche das Scripte Forum. Es gibt zig Mediaplayer die du dir ansehen kannst. Sovile ich weiß, gibts sogar eine UDF in Scripte.
    Suchfunktion benutzen oder Google suchen lassen.

  • Hi,
    Ich hab dir mal schnell ein kleines Bsp gecodet

    Spoiler anzeigen
    [autoit]

    #include <Sound.au3>
    ;by Sprenger120
    $hgui = GUICreate("Player", 226, 54, 192, 114)
    $Play = GUICtrlCreateButton("Play", 8, 8, 65, 33)
    $Pause = GUICtrlCreateButton("Pause", 80, 8, 57, 33)
    $Stop = GUICtrlCreateButton("Stop", 144, 8, 49, 33)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $Pfad = FileOpenDialog("MP3 Datei öffnen", @DesktopDir, "Mp3 Dateien (*.mp3)", 3, "", $hgui)
    If @error Then Exit
    $hSound = _SoundOpen($Pfad)
    If @error Then
    ConsoleWrite("Konnte Datei nicht öffnen" & @CRLF)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $Play
    _SoundPlay($hSound)
    Case $Pause
    _SoundPause($hSound)
    Case $Stop
    _SoundStop($hSound)
    EndSwitch
    WEnd

    [/autoit]

    Viel Spaß damit. ;)

  • Thx 4 Example!
    Ok hab mal ein bischen getüftelt.
    Jedoch habe ich ein Paar Probleme.

    1. Wenn ich das Volume ändern möchte crasht das Programm.
    2. Sobald ich Pause drücke kann ich kein Play mehr machen, genauso auch mit Stop.

    Hier mein derzeitiger Code.

    Spoiler anzeigen
    [autoit]


    #include <GuiSlider.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiConstants.au3>
    #include <Misc.au3>
    #include <Sound.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Löschen der Dateien
    FileDelete( @TempDir & "\iflowbg.jpg")
    FileDelete( @TempDir & "\iflowplay.jpg")
    FileDelete( @TempDir & "\iflowpause.jpg")
    FileDelete( @TempDir & "\iflowstop.jpg")
    FileDelete( @TempDir & "\iflowopen.jpg")
    FileDelete( @TempDir & "\iflowsplash.jpg")
    ;Ende Löschen der Dateien

    [/autoit] [autoit][/autoit] [autoit]

    ;Dateien Installieren
    FileInstall("D:\iFlow Media Player\Player\data\iflowbg.jpg", @TempDir & "\iflowbg.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowplay.jpg", @TempDir & "\iflowplay.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowpause.jpg", @TempDir & "\iflowpause.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowstop.jpg", @TempDir & "\iflowstop.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowopen.jpg", @TempDir & "\iflowopen.jpg")
    FileInstall("D:\iFlow Media Player\Player\data\iflowsplash.jpg", @TempDir & "\iflowsplash.jpg")
    ;Ende Dateien Installieren

    [/autoit] [autoit][/autoit] [autoit]

    $destination = @TempDir & "\iflowsplash.jpg"

    [/autoit] [autoit][/autoit] [autoit]

    SplashImageOn("iFlow Music Player", $destination,300,100)
    Sleep(3000)
    SplashOff()

    [/autoit] [autoit][/autoit] [autoit]

    ;Fenster
    $iGUI = GUICreate("iFLow Mediaplayer", 300, 400, -1, -1)
    GUISetBkColor(0x000000)
    GUICtrlCreatePic ( @TempDir & "\iflowbg.jpg", 0, 300 , 300 , 100)
    GuiCtrlSetState(-1,$GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Buttons / Input
    $CurrentSong = GUICtrlCreateInput("", 10, 10, 220, 20)
    $Open = GUICtrlCreatePic ( @TempDir & "\iflowopen.jpg", 240, 9 , 42 , 22)
    $Play = GUICtrlCreatePic ( @TempDir & "\iflowplay.jpg", 125, 355 , 42 , 42)
    $Pause = GUICtrlCreatePic ( @TempDir & "\iflowpause.jpg", 75, 355 , 42 , 42)
    $Stop = GUICtrlCreatePic ( @TempDir & "\iflowstop.jpg", 175, 355 , 42 , 42)

    [/autoit] [autoit][/autoit] [autoit]

    ;Lautstärke
    $Volume = GuiCtrlCreateSlider(0, 97, 396, 20, BitOr($GUI_SS_DEFAULT_SLIDER, $TBS_HORZ))
    _SliderMask(0, 97, 395, 20)
    GUICtrlSetBkColor ($Volume, 0xFFFFFF)
    GUICtrlSetData($Volume, 100)
    ;Ende Fenster

    [/autoit] [autoit][/autoit] [autoit]

    ;Anfang Funktionen
    GuiSetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $VolLevel = 100

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg = $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $nMsg = $Open
    $Opened_File = FileOpenDialog("MP3 Datei öffnen", @DesktopDir, "Mp3 Dateien (*.mp3)", 3, "", $iGUI)
    $hSound = _SoundOpen($Opened_File)
    GUICtrlSetData($CurrentSong, $Opened_File)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $nMsg = $Play
    $Play = _SoundPlay($hSound)

    [/autoit] [autoit][/autoit] [autoit]

    Case $nMsg = $Pause
    $Pause = _SoundPause($hSound)

    [/autoit] [autoit][/autoit] [autoit]

    Case $nMsg = $Stop
    $Stop = _SoundStop($hSound)

    [/autoit] [autoit][/autoit] [autoit]

    Case Else
    If GUICtrlread($Volume) <> $VolLevel Then
    $hSound.Volume = GUICtrlRead($Volume)
    $VolLevel = GUICtrlRead($Volume)
    EndIf
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _SliderMask($sX, $sY, $sW, $sH)
    GUICtrlCreateLabel("", $sX - 1, $sY - 1, 2, $sH + 1)
    GUICtrlSetState(-1,$GUI_DISABLE)
    GUICtrlCreateLabel("", $sX + 1, $sY -1, $sW - 1, 2)
    GUICtrlSetState(-1,$GUI_DISABLE)
    GUICtrlCreateLabel("", ($sX + $sW) - 1, $sY -1, 2, $sH + 1)
    GUICtrlSetState(-1,$GUI_DISABLE)
    GUICtrlCreateLabel("", $sX + 1, ($sY + $sH) - 1, $sW - 1, 2)
    GUICtrlSetState(-1,$GUI_DISABLE)
    EndFunc
    ;Ende Funktionen

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Schonmal Danke im Voraus!!

  • 1. Nicht schon nach 1h Pushen.
    2. Ohne hinzugucken kann ich dir sagen das du vergessen hast $hSound zu deklarieren.
    d.h.

    [autoit]

    Global $hSound

    [/autoit]

    an den Anfang
    3. $hSound ist kein Objekt deshalb kann man nicht .Volume benutzen. Mit den _Sound Funktionen kann man nicht die Lautstärke der Musikausgabe steuern. Dies ginge mit der Bass Dll aber das ist wieder eine andere Geschichte.
    Also einfach Lautstärke Steuerung rausnehmen.