J'ai un projet qui fait appelle au streaming audio mais je bloque depuis des semaines et je n'ai pas trouvé la réponse sur le forum.
Le streaming peut fonctionner mais j'ai des bugs et je ne maîtrise pas du tout le c#
Dans mon code je ne comprends pas l'ordre de lecture.
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class GetStream : MonoBehaviour {
AudioClip clipa;
bool played;
WWW www;
float timer;
public string url = "http://###################/listen2.mp3";
private int interval = 5;
void Start(){
Debug.Log("depart");
clipa=null;
played = false;
timer=0;
}
void Update() {
//Debug.Log(timer);
timer = timer+1*Time.deltaTime;
if(timer>=interval){
if(www != null){
http://www.Dispose();
Debug.Log(this+"youhou");
www=null;
played = false;
timer= 0;
interval = 10;
}
}else{
if(www == null){
Debug.Log(this+"loading");
www = new WWW(url);
interval = 20;
timer= 0;
//GetComponent<AudioSource>().Stop();
}
}
if(clipa==null){
if(www != null){
clipa =www.GetAudioClip(false,true);
}
}
if( clipa != null ){
if( clipa.isReadyToPlay && played == false ){
GetComponent<AudioSource>().PlayOneShot(clipa);
played = true;
clipa=null;
interval = 60;
}
}
}
}
Quelques inconvénients :
La méthode isReadyToPlay est annoncée comme obsolète mais quand je remplace par loadState ça ne marche plus, et je ne sais pas comment cette fonction doit être renseignée.
Le streaming commence bien après l'intervalle mais recommence par dessus le premier puis le premier s'arrête. Comme il y a une intro, elle se répète aussi après chaque intervalle.
Quand je veux mettre un yield le void start() ne marche plus et je dois changer pour ienumerator start() (?)
Je ne sais où mettre un while mais je sais qu'il le faut
La méthode play() ne donne pas de son.
Je ne sais pas pourquoi playOneShot fonctionne.
Voilà quelques questions qui je le pense mérite que plusieurs cerveaux se penchent dessus.