Nee, auch heute wo ich etwas "wacher" bin, bekomme ich das mit dem Callback net hin.
Habe aber eine andere Lösung gefunden (im englischen Forum):
Code: Alles auswählen
IncludeFile "fmodex.pb"
Init_FMOD()
FMOD_System_Create(@System)
FMOD_System_Init(System,1,#FMOD_INIT_NORMAL,#Null)
File$ = OpenFileRequester("Open media:","","",0)
If File$
Define TagCount, i, Tag.FMOD_TAG
FMOD_System_CreateStream(System,@File$,#FMOD_DEFAULT,#Null,@Sound)
FMOD_Sound_GetNumTags(Sound,@TagCount,#Null)
Debug "Number of tags: " + Str(TagCount)
For i=0 To TagCount-1
FMOD_Sound_GetTag(Sound,0,i,@Tag)
Debug "TAG Struct:"
Debug Tag\type
Debug Tag\datatype
Debug Tag\name
Debug Tag\_data
Debug Tag\datalen
Debug Tag\udated
Debug PeekS(Tag\name) + " : " + PeekS(Tag\_data, Tag\datalen)
Debug ""
Next
EndIf
FMOD_Sound_Release(Sound)
FMOD_System_Release(System)
Das funktioniert auch mit InternetStreams. Das frage ich dann halt alle paar Sekunden ab und bekomme dann die aktuelle Streaminfo.
Funktioniert wunderbar
Eine letzte klitzekleine Frage hätte ich aber dennoch:
Wenn ich den Buffer (Debug percent) abfrage während der Stream läuft:
Code: Alles auswählen
FMOD_Sound_GetOpenState(sound, @openstate, @percent, @starving)
...schwanken die Werte doch ganz erheblich zwischen 50-98.
Wenn ich den Buffer verändere mit:
...dauert es extrem lange bis der Stream startet und die "percent"-Werte schwanken noch genaus so
Beim alten FMod gab es:
und da hat sich der Buffer relativ lange stabil bei knapp 100% gehalten.
Wieso funktioniert das beim fmodex nicht ?
Hier mein Beispielcode:
Code: Alles auswählen
IncludeFile "fmodex.pb"
Init_FMOD()
FMOD_System_Create(@fmodsystem)
FMOD_System_Init(fmodsystem, 32, 0, 0)
str.s = "http://scfire-mtc-aa06.stream.aol.com:80/stream/1074"
FMOD_System_CreateStream(fmodsystem, @str, #FMOD_SOFTWARE, 0, @sound)
FMOD_System_PlaySound(fmodsystem, 0, sound, 0, @channel)
Dim Arr.f(512)
If OpenConsole()
PrintN("Druecke Escape zum Beenden.")
Repeat
KeyPressed$ = Inkey()
FMOD_Channel_IsPlaying(channel, @isPlaying)
FMOD_Sound_GetOpenState(sound, @openstate, @percent, @starving)
Debug percent
Delay(250)
Until KeyPressed$ = Chr(27) Or isPlaying = #False
EndIf
FMOD_System_Release(fmodsystem)