RadioStream: Browser initialisieren ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

RadioStream: Browser initialisieren ?

Beitrag von sibru »

Hallo,
ich hab´ ´n RadioStream-Player gebaut, der auch ganz gut klappt...:allright:
Nur, wenn ich das Prg nach´m hochfahren starte, klappt nicht´s mehr.
Erst nach Starten und sofortiges Beenden des Internet-Browsers kommt was an den Lautsprechern an...:o
Weiss jemand, ob / wie ich den Browser initialisieren kann / muss ??

Code: Alles auswählen

Procedure.l StreamPlay(URL.s)       ;- Start RadioStream-Output
  Protected Browser.IWebBrowser2
  Protected Document.IHTMLDocument2
  Protected DocumentDispatch.IDispatch
  Protected result.l, Busy.l, Unicode.s, bstr_string.l, *sfArray, *varParam.VARIANT
  Protected Html.s, WebGad
  ;erstmal HTML-Steuerung aufbauen:
  Html + "<object id='VIDEO' width='0' height='0'" 
  Html + "style='position:absolute; left:0; top:0;'"
  Html + "classid='clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6'" ;normal video
  Html + "type='application/x-oleobject'>"
  Html + "<param name='URL' value='" + URL + "'>"
  ;  Html + "<param name='volume' value='" + Str(GetGadgetState(#Volume)) + "'>"
  Html + "<param name='StretchToFit' value='true'>"
  Html + "<param name='UiMode' value='mini'>"
  Html + "<param name='EnableContextMenu' value='false'>"
  Html + "</object>"
  WebGad=WebGadget(#PB_Any,0,0,0,0,"about:blank",#PB_Web_Mozilla) ;gadget aufbauen...
  HideGadget(WebGad,1)                                     ;... und gleich verstecken
  Browser = GetWindowLong_(GadgetID(WebGad), #GWL_USERDATA)
  Repeat ;warten, bis browser bereit...
    While WindowEvent(): Wend
    Browser\get_Busy(@Busy)
    If Busy : Delay(10) : EndIf
  Until Not Busy 
  If Browser
    If Browser\get_document(@DocumentDispatch) = #S_OK And DocumentDispatch
      If DocumentDispatch\QueryInterface(?IID_IHTMLDocument2, @Document) = #S_OK
        If Document
          Unicode = Space(Len(Html) * 2 + 2)
          PokeS(@Unicode, Html, - 1, #PB_Unicode)
          bstr_string = SysAllocString_(@Unicode)
          *sfArray = SafeArrayCreateVector_(#VT_VARIANT, 0, 1)
          If *sfArray
            If SafeArrayAccessData_(*sfArray, @*varParam) = #S_OK
              *varParam\vt = #VT_BSTR
              *varParam\bstrVal = bstr_string
              If SafeArrayUnaccessData_(*sfArray) = #S_OK
                Document\write(*sfArray)
                result = #True ;Document written
              EndIf
            EndIf
            SafeArrayDestroy_(*sfArray)
          EndIf
          SysFreeString_(bstr_string)
        EndIf
        Document\close()
        Document\Release()
      EndIf
      DocumentDispatch\Release()
    EndIf
  EndIf
  ProcedureReturn result
  DataSection
  IID_IHTMLDocument2: ;{332C4425-26CB-11D0-B483-00C04FD90119}
  Data.l $332C4425
  Data.w $26CB, $11D0
  Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19
EndDataSection
EndProcedure



WinID=OpenWindow(0,0,0,0,0,"Radio",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WinID)

StreamPlay("http://ice.streaming.spacenet.de:80/dieneue1077_80er")

Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
Gruss Siggi
Bild Bild
Benutzeravatar
Kiffi
Beiträge: 10715
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: RadioStream: Browser initialisieren ?

Beitrag von Kiffi »

@sibru:

keine Ahnung, warum Dein Code bei Dir nicht so läuft, wie erwartet, bei
mir hat er's auf Anhieb getan.

Allerdings hat sich PB-technisch in der Zwischenzeit auch einiges getan,
so dass Du auf den ganzen Dispatch-Kram auch leicht verzichten kannst,
was einen leichter verständlichen Code zur Folge hat:

Code: Alles auswählen

Enumeration
  #MyWindow
  #WebGadget
EndEnumeration

OpenWindow(#MyWindow,0,0,0,0,"Radio",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#MyWindow))

;erstmal HTML-Steuerung aufbauen:
Html.s
Html + "<object id='VIDEO' width='0' height='0'"
Html + "style='position:absolute; left:0; top:0;'"
Html + "classid='clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6'" ;normal video
Html + "type='application/x-oleobject'>"
Html + "<param name='URL' value='http://ice.streaming.spacenet.de:80/dieneue1077_80er'>"
;  Html + "<param name='volume' value='" + Str(GetGadgetState(#Volume)) + "'>"
Html + "<param name='StretchToFit' value='true'>"
Html + "<param name='UiMode' value='mini'>"
Html + "<param name='EnableContextMenu' value='false'>"
Html + "</object>"

WebGadget(#WebGadget,0,0,0,0,"about:blank",#PB_Web_Mozilla) ;gadget aufbauen...

While GetGadgetAttribute(#WebGadget, #PB_Web_Busy) <> 0
  While WindowEvent() : Delay(0) : Wend
Wend

SetGadgetItemText(#WebGadget, #PB_Web_HtmlCode, Html)

  
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
Probier's mal aus. Vielleicht hast Du damit weniger Probleme.

Grüße ... Kiffi

// Edit: Grade gesehen: Du verwendest ja PB3.8 :oops:
Naja, ich lasse es mal drin. Vielleicht braucht's ja noch ein anderer (oder
es bewegt Dich endlich zum Kauf der neuen 4.2 ;-))
a²+b²=mc²
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag von sibru »

Danke für die Optimierung, ist doch viel leichter lesbar als die alte Version...
Hat jedoch das eigentliche Prob nicht verändert, hab´ nun halt ´n kleinen
Internet-Downoad vor´s Radio im AutoStart gelegt... und nun kommt das
Radio sauber und ohne manuelle Aktion nach´m Hochfahren: Ziel erreicht...

... und Signatur korrigiert ;-)

Gruss Siggi
Bild Bild
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Cool. Funktioniert.

Aber macht man das so beim Streaming?
Benutzeravatar
Kiffi
Beiträge: 10715
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@sibru: Dann hat es sich ja doch gelohnt ;-)
Sven hat geschrieben:Aber macht man das so beim Streaming?
joah, kann man so machen. Viele Wege führen nach Rom. Funktioniert ja auch einwandfrei :-)

Für 'aufwändigere' Methoden böten sich fmod und bass an (Codes für beides
sind hier und im englischen Forum vorhanden; einfach mal SuFu aktivieren).

Grüße ... Kiffi
a²+b²=mc²
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Das heisst aber, IE oder Firefox müssen installiert sei, weil ja das WebGadget darauf basiert, oder?

Ich überleg schon länger, mal einen kleinen I-Radioplayer zu bauen, weil mir verfügbare zu viel Overhead (großes Programmfenster, überflüssige Anzeigen) mitbringen oder nicht alle Formate (Winamp) können.
Benutzeravatar
Kiffi
Beiträge: 10715
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Sven hat geschrieben:Das heisst aber, IE oder Firefox müssen installiert sei, weil ja das WebGadget darauf basiert, oder?
bei dem IE ist das so. Allerdings sollte Dir das nicht allzugrosse
Kopfschmerzen bereiten. Ich schätze mal, dass auf 99% aller aktuellen
Windows-Rechner auch ein IE installiert ist. ;-)

Wenn Du den Ff nutzen möchtest, benötigst Du auf jeden Fall noch eine
ActiveX-DLL (den Link dazu müsstest Du Dir hier im Board raussuchen). So
von alleine lässt sich der Ff jedenfalls nicht in PB verwenden.
Sven hat geschrieben:Ich überleg schon länger, mal einen kleinen I-Radioplayer zu bauen
Vielleicht kannst Du Dich ja von PureProggers Streamplayer inspirieren lassen:

http://www.purebasic.fr/german/viewtopi ... 837#194837

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ein minimum-IE ist zwangsweise drauf, bei XP ist das glaubich der 5er.
mir ist nicht bekannt, dass man den bei der Installation des Betriebssystems ausschließen könnte.
der ist übrigens auch nötig, um Windows-Updates durchzuführen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Grillmeister
Beiträge: 23
Registriert: 17.04.2008 09:54
Wohnort: Hannover
Kontaktdaten:

Beitrag von Grillmeister »

Hallo Sibru und Sven !

Ich hatte/habe auch so ein kleines Projekt (war eigentlich nur eine "Schnapsidee" die sich mittlerweile zu einem Dauerprojekt entwickelt hat).
Ich habe mit Purebasic und FMOD einen Internetradioplayer gebastelt der ausschließlich einen Stream von einem Radiosender abspielt und auf "Einfachheit" sowie "idiotensichere Bedienung" setzt.
Der Player ist noch lange nicht "perfect", aber er wird, erstaunlicherweise, ganz gut angenommen.
Ich kann bei solchen Angelegenheiten wirklich raten Euch mit FMOD zu beschäftigen - das Teil ist echt mächtig und wenn man es einmal verstanden hat, auch sehr gut anzuwenden.

Wenn Ihr Euch meinen Player mal anschauen, ausprobieren und eventuell inspirieren lassen wollt, könnt Ihr ihn gerne mal ausprobieren.
Ich hoffe ich vertoße gegen keine Regeln wenn ich den Link hier angebe: http://www.terpe.info/index.php?option= ... &Itemid=32
Der Link soll auch keine Werbung sein, ich mache das tatsächlich freiwillig, kostenlos aus Überzeugung (ja sowas gibt es noch).
Runterladen könnt Ihr den Player gaaanz unten auf der Seite.

Grüße,
Grillmeister
Crawler
Beiträge: 110
Registriert: 08.02.2009 19:52
Computerausstattung: PB 4.41
Win7 64bit

Beitrag von Crawler »

Basierend auf Kiffis Code habe ich mir einen kleinen Player für meine drei liebsten Radiostreams zusammengeschustert, scheitere aber noch an einer vernünftigen Lautstärkeregelung.
Anfangs hatte ich vor, die Systemlautstärke über die Windows-API einzustellen, was auch sicherlich klappen würde. Lieber wäre mir jedoch eine programminterne Regelung. Gibt es hier irgendwelche Ideen, wie man dies hier realisieren könnte? Auf fmod bzw. bass wollte ich nicht ausweichen...

Gruß Crawler
Antworten