Radio über Bass.au3 spielen

  • Huhu,

    ich möchte gerne 89.0 RTL im Script abspielen können, idealerweise am besten mit den Funktionen der Bass-UDF's...
    Nun habe ich auf meiner Platte eine xyz.m3u liegen, in der Folgendes steht:

    Code
    #EXTM3U
    #EXTINF:-1,brocken
    http://62.75.176.45/rtl-high


    Mit VLC beispielsweise funktioniert das soweit auch, aber gibt es per AutoIt eine Möglichkeit?

    PS: Hab mit schon viele Stream-Scripts angeschaut, aber irgendwie scheint es mit "IE..." und den WMP-Funktionen nich so richtig zu klappen, zumindest nich solche URL's


    Ich hoffe auf Hilfe, BG Andy :)

    Einmal editiert, zuletzt von AndyTR (30. Dezember 2010 um 17:37)

  • Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include "EasyBASS.au3"

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

    HotKeySet('{ESC}', '_Exit')

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

    Global $hStream

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

    _EasyBASS_Start()

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

    _EasyBASS_OpenStream($hStream, 'http://www.89.0rtl.de/webradio/rtl-high.m3u')

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

    _EasyBASS_Play($hStream)

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

    While 1
    Sleep(10)
    WEnd

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

    Func _Exit()
    _EasyBASS_Close()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    Die EasyBASS.au3 ist eine UDF, die ich aktuell schreibe um die Bass.au3 noch einfacher zu nutzen.
    Aktuell gibt es noch keine Error-Rückgabe undsoweiter und die EasyBASS.au3 ist noch ziemlich unaufgeräumt.

    Für alle die es interessiert, $__translate ist der Wert mit dem man den Rückgabewert von BASS_GetChannelPosition/ChannelGetLength, multiplizieren muss um den Millisekunden Wert zu erhalten.

    Bass.au3 muss im Verzeichnis der EasyBASS.au3 sein, genauso wie die Bass.dll

    Edit bernd670 : Bitte den Code direkt einfügen und nicht über pastebin.com verlinken!

  • Welche .au3? Du hast doch jetzt das Script von pastebin in einer .au3 gespeichert und ausgeführt oder?
    Weil die EasyBASS.au3 kannste sooft ausführen wie du willst und es wird nix passieren :D

  • Die EasyBass.au3 ins Include-Verzeichnis und folgendes in eine .au3 und ausgeführt...

    Spoiler anzeigen
    [autoit]

    #include <EasyBASS.au3>

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

    HotKeySet('{ESC}', '_Exit')

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

    Global $hStream
    _EasyBASS_Start()
    _EasyBASS_OpenStream($hStream, 'http://www.89.0rtl.de/webradio/rtl-high.m3u')
    _EasyBASS_Play($hStream)

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

    While 1
    Sleep(10)
    WEnd

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

    Func _Exit()
    _EasyBASS_Close()
    Exit
    EndFunc

    [/autoit]


    Gruß :)

  • Wie gesagt ich hab noch keine Fehlerabfragen. Könnte dran liegen das die Bass.au3 auch im Include-Verzeichnis liegt und die bass.dll im include-verzeichnis aufruft, diese dort aber nicht ist und deswegen kanns nicht initialisiert werden und wegen der fehlenden Fehlerabfrage kommt halt kein Fehler. Hoffe daran liegts, denn wenn nicht, dann weiß ich auch nicht weiter.

  • Doch im Include-verzeichnis stimmt soweit alles, wie es sollte, hab schon so einiges mit den Bass-Sachen realisiert...
    Könnte unter Umständen auch an unterschiedlichen Versionen der Bass-UDF liegen, da gibts Unterschiede bei den Funktionsparametern...

    Dennoch danke und vllt weiß ja noch jemand anders etwas :) Gruß

  • ...Für alle die es interessiert, $__translate ist der Wert mit dem man den Rückgabewert von BASS_GetChannelPosition/ChannelGetLength, multiplizieren muss um den Millisekunden Wert zu erhalten...

    Ich muss dich leider enttäuschen, das kann so nicht funktionieren!
    Wieviele Bytes nun wieviele Sekunden ergeben ist abhängig von der Samplingfrequenz, der Auflösung und der Anzahl der Kanäle.
    Deshalb gibt es auch die Funktion _BASS_ChannelBytes2Seconds, die dann den genauen Wert ausrechnet.
    (Deine Methode funktioniert nur bei 44100KHz/16Bit/Mono)

    lgE

  • eukalyptus, meine Methode funktioniert nur bei Stereo, ob 16-Bit oder 8-Bit ist egal, genauso die KHz. Bei Mono muss man dann halt * 2 rechnen.
    Das es die _BASS_ChannelBytes2Seconds Funktion gibt, wusste ich nicht^^ danke dafür.