FmodEx : Jouer un flux shoutcast
Publié : jeu. 21/nov./2013 17:48
■ Fmod Ex est une bibliothéque C++ multiplate-forme (Windows, Linux, Macintosh, Android, XBox, Playstation, Nintendo (WII, 3DS et U), Iphone qui permet la création de module de son.
Fmod Ex supporte une vingtaine de formats musicaux (MP3, FLAC, WAV , WMA, XMA, etc ....) et supporte aussi la lecture de flux internet audios.
■ C'est un exemple simplifié de cette fonctionnalité que je vous présente ci-dessous.
Pour pouvoir exploiter Fmod Ex vous devez copier dans le dossier de votre projet les fichiers fmodex.dll ainsi que fmodex.pbi. Ces deux fichiers sont fournis en annexe de ce post.
Important : Il faut désactiver le support unicode.
Le code étant documenté, je ne ferais pas de commentaire supplémentaire.
■ Annexe
Les DLL (x86 & x64) et l'include necessaires au fonctionnement des codes est disponible sur la platform collaborative GitHub.
https://github.com/pbcodex/fmodex
■ A voir aussi
Ecouter un fichier audio
Fmod Ex supporte une vingtaine de formats musicaux (MP3, FLAC, WAV , WMA, XMA, etc ....) et supporte aussi la lecture de flux internet audios.
■ C'est un exemple simplifié de cette fonctionnalité que je vous présente ci-dessous.
Pour pouvoir exploiter Fmod Ex vous devez copier dans le dossier de votre projet les fichiers fmodex.dll ainsi que fmodex.pbi. Ces deux fichiers sont fournis en annexe de ce post.

Le code étant documenté, je ne ferais pas de commentaire supplémentaire.
Code : Tout sélectionner
;Fmodex : Jouer un shoutcast
EnableExplicit
IncludeFile "fmodex.pbi"
Enumeration
#Mainform
#Pause
#Volume
EndEnumeration
Define.l Event, GEvent, TiEvent
Global WindowStyle.i=#PB_Window_SystemMenu|#PB_Window_ScreenCentered
Global fmodsystem.i, Channel.i, Sound.i, Volume.f = 0.5, PauseStatus.b
Global Url.s
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 300, 100, "Play Shoutcast", WindowStyle)
TextGadget(#PB_Any, 10, 50, 30, 20, "Vol")
TrackBarGadget(#Volume, 45, 45, 200, 24, 0, 100)
SetGadgetState(#Volume, 50)
ButtonGadget(#Pause, 117, 70, 50, 22, "Pause")
EndProcedure
Procedure Start()
Open_MainForm()
;Déclarer l'objet FMOD System
FMOD_System_Create(@fmodsystem)
;Initialiser le system (32 canaux)
;Un seul canal suffirait pour cet exemple.
;Le maximum est de 4093 canaux.
FMOD_System_Init(fmodsystem, 32, #FMOD_INIT_NORMAL, 0)
;CreateStream permet de commencer la lecture avant le chargement complet de l'url
Url ="http://195.70.62.125:8300"
FMOD_System_CreateStream(fmodsystem, @Url, #FMOD_CREATESTREAM, 0, @sound)
;On joue le son sur le canal 1 (@Channel contiendra le handle du cannal 1)
FMOD_System_PlaySound(fmodsystem, 1, sound, 0, @channel)
;Et on ajuste le volume (le son est compris entre 0.0 et 1.0)
FMOD_Channel_SetVolume(Channel, 0.5)
;le son (@Sound) et intimement lié à son canal (@Channel)
EndProcedure
start()
Repeat
Event = WaitWindowEvent(100)
GEvent = EventGadget()
Select Event
Case #PB_Event_Gadget
Select GEvent
Case #Volume
Volume = GetGadgetState(#Volume)/100
FMOD_Channel_SetVolume(Channel, Volume)
Case #Pause
;FMOD_Channel_GetPaused permet de savoir si le son sur le canal est en pause ou pas
FMOD_Channel_GetPaused(Channel, @PauseStatus)
If PauseStatus = #False
FMOD_Channel_SetPaused(Channel, #True) ;Pause
SetGadgetText(#Pause, "Play")
Else
FMOD_Channel_SetPaused(Channel, #False) ;Reprise de la lecture
SetGadgetText(#Pause, "Pause")
EndIf
EndSelect
Case #PB_Event_CloseWindow
FMOD_Channel_Stop(Channel)
FMOD_System_Release(fmodsystem)
End
EndSelect
ForEver
Les DLL (x86 & x64) et l'include necessaires au fonctionnement des codes est disponible sur la platform collaborative GitHub.

■ A voir aussi
Ecouter un fichier audio