Bass.dll HTTP-Link

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Eddy.

    Bass.dll HTTP-Link

    Guten Abend,
    ist es möglich über die Bass.dll einen HTTP-Link abzuspielen? http://homepage.de/musik.mp3
    Bisher hab ich es leider nicht geschafft und bei Google finde ich auch nichts zu dem Thema

    Hoffentlich kann mir jemand helfen :)

    Liebe grüße,
    require
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.
    Egal ob du einen LiveStream oder ein Audiofile das Online liegt abspielen willst, geht das mit Bass_StreamCreateUrl.

    VB.NET-Quellcode

    1. StreamHandle = Bass.BASS_StreamCreateURL("http://localhost:9753/file.mp3", 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN, Nothing, IntPtr.Zero)

    And i think to myself... what a wonderfuL World!
    Dankesehr, ich bin zwar der Meinung ich habe es genau so gemacht aber deins Funktioniert.. :S
    Die Lieder überspielen sich gegenseitig, wie kann ich das jetzige Lied beenden wenn ein anderes bereits läuft? Mir fällt jetzt Spontan kein Stichwort zur Suche ein
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.
    Du solltest den Stream auch stoppen und freigeben.

    VB.NET-Quellcode

    1. If Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PLAYING Or Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PAUSED Or Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_STALLED Then
    2. Bass.BASS_ChannelStop(StreamHandle)
    3. End If
    4. Bass.BASS_StreamFree(StreamHandle)
    5. StreamHandle = Bass.BASS_StreamCreateURL("http://localhost:9753/file.mp3", 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN, Nothing, IntPtr.Zero)
    6. If StreamHandle <> 0 Then
    7. Bass.BASS_ChannelPlay(StreamHandle, False)
    8. End If

    And i think to myself... what a wonderfuL World!
    r

    require schrieb:

    funktioniert leider nicht.
    Was soll das heißen? Funzt ned...kommt da ne Fehlermeldung oder wird die Datei einfach nur ned abgespielt?

    Ich würde das sowieso (übersichtsthalber) anders machen:

    VB.NET-Quellcode

    1. Dim status As BASSActive = Bass.BASS_ChannelIsActive(StreamHandle)
    2. If status = BASSActive.BASS_ACTIVE_PLAYING Or status = BASSActive.BASS_ACTIVE_PAUSED Or status = BASSActive.BASS_ACTIVE_STALLED Then
    3. Bass.BASS_ChannelStop(StreamHandle)
    4. End If
    5. Bass.BASS_StreamFree(StreamHandle)
    6. StreamHandle = Bass.BASS_StreamCreateURL("http://localhost:9753/file.mp3", 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN, Nothing, IntPtr.Zero)
    7. If StreamHandle <> 0 Then
    8. Bass.BASS_ChannelPlay(StreamHandle, False)
    9. End If

    Dann wird die Abfrage ned sooo lange ;D

    Außerdem, wenn Ihr euch mal die Dokumentation zu der BASS_StreamCreateURL-Funktion mal anschaut[un4seen.com/doc/#bass/BASS_StreamCreateURL.html], dann gibt es für CreateURL kein Flag mit dem Namen BASS_STREAM_PRESCAN, des wird nur bei CreateFile[un4seen.com/doc/#bass/BASS_StreamCreateFile.html] verwendet. Evtl liegt hier dein Fehler

    C-Quellcode

    1. HSTREAM stream=BASS_StreamCreateURL("http://www.asite.com/afile.mp3", 0, 0, NULL, 0);

    VB.NET-Quellcode

    1. StreamHandle stream = Bass.BASS_StreamCreateURL("http://www.asite.com/afile.mp3", 0, 0, Nothing, IntPtr.Zero);


    Bzw was mich an dem localhost-URL stört ist folgendes: Braucht man ned nen lokalen webserver, der grad läuft, um auf die Datei zugreifen zu können?


    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    require schrieb:

    funktioniert leider nicht.


    Dann zeig uns mal deinen Code. Ich habe den Code selbst so probiert und er funktioniert, und ja @Radinator es muss ein Webserver laufen um auf diese Art an die Datei zu kommen.

    Edit:
    Die Lieder überspielen sich gegenseitig


    Radinator schrieb:

    oder wird die Datei einfach nur ned abgespielt?


    Ich wette darauf das er eine nur in der Methode gueltige Variable fuer den Stream nutzt, deshalb funktioniert es nicht, weil dann das StreamHandle immer wieder neu Initialisiert wird und somit =0 ist. Der GC raeumt aber in dem Fall nicht alleine auf, somit laufen die alten Streams weiter.

    And i think to myself... what a wonderfuL World!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eddy“ ()

    Guten Morgen,
    am Code gibts nicht viel zu sehen, ist halt genau deiner außer das ich die Variable nach oben verschoben habe. (Vielleicht mein Fehler?)

    VB.NET-Quellcode

    1. Dim StreamHandle As Integer = Bass.BASS_StreamCreateURL("http://www..com/" & getInfo.Groups(1).Value.Substring(2, getInfo.Groups(1).Value.Length - 2).Split("'")(0).Split("=")(1), 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN, Nothing, IntPtr.Zero)
    2. If Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PLAYING Or Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PAUSED Or Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_STALLED Then
    3. Bass.BASS_ChannelStop(StreamHandle)
    4. End If
    5. Bass.BASS_StreamFree(StreamHandle)
    6. If StreamHandle <> 0 Then
    7. Bass.BASS_ChannelPlay(StreamHandle, False)
    8. End If


    Jedoch wird nun kein Sound mehr abgespielt, wenn ich diesen Code verwende.
    /edit Das liegt nicht an dem komisch zusammengewürfelten Link, habs schon getestet :P

    Danke für eure Hilfe, ich wünsche euch noch schöne Feiertage
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „require“ ()

    Ich wuerde das ein wenig anders machen. Benutze fuer das StreamHandle eine in der ganzen Klasse gueltige Variable. So initialisiertst du immer neu, zum stoppen haste du dann kein gueltiges "Handle". Wenn kein Sound abgespielt wird, ist das StreamHandle 0. Ueberpruefe mal deine Adressen, ob die korrekt sind.
    And i think to myself... what a wonderfuL World!
    ???

    VB.NET-Quellcode

    1. Private StreamHandle As Integer
    2. Sub StartNew(ByVal url As String)
    3. If Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PLAYING Or Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PAUSED Or Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_STALLED Then
    4. Bass.BASS_ChannelStop(StreamHandle)
    5. End If
    6. Bass.BASS_StreamFree(StreamHandle)
    7. StreamHandle = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, IntPtr.Zero)
    8. If StreamHandle <> 0 Then
    9. Bass.BASS_ChannelPlay(StreamHandle, False)
    10. End If
    11. End Sub

    And i think to myself... what a wonderfuL World!