Stream/double utilisation de fichier

Résolu
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008 - 19 juil. 2005 à 23:04
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008 - 22 juil. 2005 à 17:11
Bonjour amis Mirceurs... hum...

Je suis en train de créer une radio(j'en ai déjà fait une en
utilisant nhtmln etc.. mais bon c'est pas très difficile...). Je me
suis lancé dans le streaming des radio shoutcast(les plus
fréquentes...) = winamp.

J'ai fait cela de 2 manière :

1) nous sommes la radio... ça je boss encore la dessus, ça marche mais les titres ne s'enchainent pas...

2) Nous sommes clients ou auditeurs et là j'ai un problème.

Je reçois le stream(flux de donné) par socket tcp. Je l'enregistre dans un fichier stream.mp3(utilisation de bwrite)

Cependant, lorsque je veux bien sur écouter la radio avec un simple /splay stream.mp3

bwrite fonctionne mais s'affiche alors en boucle, à l'écran :



* /bwrite: unable to open 'H:*****\stream.mp3'



J'ai aussi essayé avec les file handling (/fopen fwrite etc...) mais sans succès et sans son en plus ^^.





Alors voilà, si quelqu'un a une idée pour pouvoir écouter le fichier
même si celui ci est en train d'être modifié, je suis preneur.



Merci
--------------------------------------------
Signature des parents :

7 réponses

cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008
20 juil. 2005 à 17:44
Hum tous les x octets, fais une instance de ton fichier stream.mp3 et tu /splay avec la position precedente.

Avec ce systeme de double fichier, ca permettra de contourner le probleme de droit d ouvertue du /Splay.
3
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
20 juil. 2005 à 08:42
j'avais fais une remote pour écouter les radios shoutcast en live, jss au taff tte la journée, je look ça ce soir si j'ai encore. ça serait pas le -1 que t'as zappé en début de bwrite pour écrire à la fin du fichier?


-1337 connexion-
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
20 juil. 2005 à 08:49
T'aurais pas un path avec espaces sinon ? :p
PaDa
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
20 juil. 2005 à 12:54
Non aux 2 :) le -1 je l'ai mis, les espacesn je fais sans car j'écris directement bwrite stream.mp3

Le problème vien du fait que je le joue avec /splay et que j'essaie d'écrire dedans...



Je vais chercher encore un autre moyen...

Merci Tofu, si tu trouves bah je ne ferais pas la remote, mais ça m aidera pour plus tard :)


------------------------------------
Signature des parents :
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
20 juil. 2005 à 19:37
En effet Huitre ça marche bien comme ça :)

J'ai mis 1Mo par changement, et ça marche plutot bien, sauf que bien
sur, il y a une coupure de 1sec à chaque fois que l'on change de
fichier de lecture...

Je pense qu'il y a une façon d'optimiser le fonctionnement en fonction
de la connection, de la réception, car il se passe un peu moins de une
minute entre le moment où j'arrète le stream et la fin du mp3... enfin
ça dépend de la qualité ensuite... donc c'est plutot compliqué à la fin.



Merci :)



Si vous voulez que je post le code, Z'avez qu'à demander ^^
---------------------------------------
Signature des parents :
0
Zova Messages postés 150 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 24 août 2010 2
22 juil. 2005 à 10:51
Salut je trouve l'idée plutôt interessente si tu pouvai poster le code de façon à voir un peu tout comment ça marche ça serai pas mal.. merci d'avance et bonne continuation pour ce projet qui m'a l'air assez prenant lol.
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
22 juil. 2005 à 17:11
on *:sockopen:stream:{

if ($sockerr) { echo -a Stream erreur | return }

sockwrite -tn stream GET / HTTP/1.1

; requete du stream remplacez / par /lenom si c'est de la forme 127.0.0.1:8000/lenom

sockwrite -tn stream Host: $sock($sockname).ip

;ip du stream (je sais pas sir $sock... marchera à chaque coup)

sockwrite -tn stream User-Agent: WinampMPEG/5.0

sockwrite -tn stream Accept: */*

sockwrite -tn stream Connection: close

sockwrite -tn stream $crlf

set %stream.oct 1

}

on 1:sockread:fuck:{

bunset &stream

sockread &stream

var %stream = $calc($file(stream.mp3).size - %stream.oct)

; on calcule le nombre d'octets ajouté depuis la dernière instance de stream.mp3

bwrite stream.mp3 -1 -1 &stream

;on écrit les valeurs dans stream.mp3

if ( %stream >= 1000000 ) {

; si l'on a ajouté plus de 1Mo, on crée le fichier d'instance (la
valeur de 1Mo est modifiable...mais une valeur basse bloque mirc)

var %songpos = $insong.pos

splay stop

if (%newstream) .remove %newstream

; on suprimme la dernière instance

var %ancstream = %newstream

while (%ancstream = %newstream) {

set %newstream $+(stream,$r(1,99999),.mp3)

}

; on crée une nouvelle instance

.copy stream.mp3 %newstream

; on y met les informations

set %stream.oct $file(stream.mp3).size

splay %newstream %songpos

;Play ;)

}

}



Je pense qu'il n'est pas nécessaire de créer une instance et de la
supprimmer ensuite pour recréer... je sais pas :/ j'ai pas testé
autrement!

Je pense qu'en mettant le fichier stream.mp3 en file handling, la vitesse d'exécution serait meilleure aussi... à voir :)




---------------------------------------
Signature des parents :
0
Rejoignez-nous