Accueil Dev WEB

Tutorial: Enregistrement webcam (Red5) 1h30

Comme promis, après le tutoriel sur l’installation d’un serveur red5, voici celui pour mettre en place votre première application red5: Enregistrement d’un flux video/audio directement sur le serveur à partir d’une webcam :)
Et comme un exemple vaut mieux qu’un long discours:

Après ca, je pense que vous voulez le discours… Alors c’est parti !!!
(-HORS-SUJET- Note à Florent, notre responsable commercial: juste au dessus c’est une iframe, tu me demandais si c’était invisible quelque soit le navigateur pour un de nos projets, et bien oui, tu as ta réponse :) )

Pré-requis

- Adobe Flash (CS5 de préférence ;) )
- IDE Webdev (j’utilise dreamweaver CS5, mais il en existe beaucoup de très satisfaisants)
- Red5 installé sur le serveur LAMP/WAMP/MAMP

1- Préparer l’application red5

Pour ce tuto, on va se servir d’une application déjà présente dans les démos de red5. Le développement d’une nouvelle application n’est pas l’objet de ce tuto, mais pourrait faire un autre très bon sujet :)

Rendez-vous donc sur l’interface web de red5, sur le port 5080 (défaut): http://votredomaine.com:5080/

Pour mettre en place une application, red5 vous propose une interface d’installation. Cliquez sur « Install a ready-made application » ou rendez-vous directement sur http://votredomaine.com:5080/installer/ (peut différer suivant les versions de red5).
Nous allons utiliser l’application « messageRecorder ». Cliquez dessus, puis sur « Install ». Patientez jusqu’à la fin du chargement, c’est prêt !

Une dernière chose: vérifier que l’application a bien été créée avec ses répertoires nécessaires au bon enregistrement des fichiers. Allez dans le répertoire d’installation de red5 (chez moi: /usr/local/red5/) . Vous trouverez les applications installées dans le dossier « webapps ». Rendez-vous ensuite dans le dossier « messageRecorder ». Si ce dernier ne contient pas les répertoires « persistence » et « streams », créez-les.

2- Créer le swf dédié au record

Le développement de cette partie va se dérouler sur Flash. Créez une scène de 320×200 px , ce sera la taille de notre enregistrement. Nous allons utiliser la version 2 d’Actionscript. C’est parti :)

import flash.external.*;
stop();

//Capture votre webcam
cam = Camera.get();

//Paramétre de la webcam
cam.setMode(320,200,25);
cam.setQuality(0,90);

//taille de l'objet vidéo "cam_video"
cam_video.width = 320;
cam_video.height = 200;

//Capter le micro de votre webcam ou d'un micro auxiliare
cam_video.attachVideo(cam);
mic = Microphone.get();
mic.setRate(44);

On commence par importer la librairie « external » afin de pouvoir lier javascript et actionscript. Nous verrons plus tard dans le tuto de quelle façon nous allons faire ca.

J’en viens maintenant aux paramètres de la webcam. setMode prend 3 paramètres: width, height, et fps. setQuality définit la qualité de l’enregistrement grâce à une limite de bandwidth et de qualité. Si l’un ou l’autre de ces paramètres est à 0, cela indique qu’il n’y a aucune limite sur ce paramètre. En fonction des paramétrages que vous pourrez apporter ici, d’une part vous modifierez la qualité d’enregistrement, mais aussi la fluidité de l’image et le poids du fichier. Attention alors à trouver un bon compromis afin de ne pas surcharger un serveur en production côté bande passante.

L’objet cam_video est l’objet placé sur la scène. Il affichera le rendu de la webcam.

Enfin, pour le micro, après avoir déclaré la récupération du flux, on utilise setRate pour définir le taux d’échantillonnage. Attention, si il n’est pas spécifié, le taux par défaut est 8kHz. La qualité est basse. Mais cela dépend également de votre matériel d’enregistrement qui ne supporte peut-être pas un taux élevé. Les valeurs possibles sont: 5, 8, 11, 22, et 44. J’ai donc mis le maximum ici.

On continue avec la suite du code:

// Enregistrer une vidéo
function record_vidz(nom_vidz){
	//Création de la connection pour le record
	record_nc = new NetConnection();
	record_nc.connect("rtmp://votredomaine:1935/messageRecorder");

	//Status de la connection record_nc
	record_nc.onStatus = function(info)
	{

		if(info.code == "NetConnection.Connect.Success")
		{
		//Création du stream pour le record
			record_ns = new NetStream(record_nc);
			record_ns.attachAudio(mic);
			record_ns.attachVideo(cam);	

			//On publie le stream
			record_ns.publish(nom_vidz, "record");

			// On appelle la fonction JS "vidz_started"
			ExternalInterface.call("vidz_started");
		}
	}

}

C’est la fonction actionscript qui va lancer l’enregistrement des flux video/audio. On commence par se connecter au serveur red5 sur le port RTMP. Pensez à modifier « votredomaine » par le serveur red5, et le port 1935 si vous l’avez changé pour ce protocole.

Ensuite on écoute le statut de la connexion. Si elle a été effectuée avec succès, on y attache nos flux audio et video.

On spécifie ensuite le nom du fichier conteneur des flux, via la méthode publish. On remarque que ce nom est passé en paramètre à la fonction, nous y viendrons plus tard.

Enfin, on effectue un appel à la fonction javascript « vidz_started » grâce à ExternalInterface. Ceci va permettre de définir une fonction javascript qui s’exécutera au lancement de l’enregistrement, en permettant ainsi la détection.

function stop_vidz(){

	//Close stream record
	record_ns.publish(false);
	record_ns.close();

	nc_close = setInterval(close_nc,1000,this);

}

function close_nc(){
	record_nc.close();
	clearInterval(nc_close);
	// On appelle la fonction JS "vidz_stopped"
	ExternalInterface.call("vidz_stopped");
}

Ici on déclare les 2 fonctions permettant de terminer l’enregistrement. La fonction « stop_vidz » est destinée à être appelée via un contrôle javascript, je vais y venir. La fonction « close_nc » permet quant à elle de finaliser le record et d’appeler la fonction javascript « vidz_stopped », nous permettant d’écouter la fin de l’enregistrement.

// On prepare les appels avec JS
ExternalInterface.addCallback("record", this, record_vidz);
ExternalInterface.addCallback("stop_record", this, stop_vidz);  

Enfin, cette dernière partie permet de déclarer les fonctions Actionscript qui pourront être appelées depuis Javascript. Le premier paramètre spécifie le nom de la méthode javascript à appliquer au swf, le 2e l’objet à utiliser dans la fonction actionscript, et le 3e la référence à la fonction actionscript à exécuter.

Publions l’application, c’est prêt de ce côté! Vous pouvez tester d’inclure votre swf dans une page HTML, vous verrez ainsi ce que voit votre webcam.

Nous allons maintenant mettre en place le côté interface web et les contrôles javascript ;) . Mais avant ça, un petit schéma des communications à venir ne nous fera pas de mal:

3- Interfaçage WEB

Créez un fichier vierge html dans votre IDE web. Ici je ne vais pas rentrer dans le détail des implémentations, je pars des principes suivants:
- Soit vous savez déjà le faire
- Soit vous êtes assez débrouillard pour vous servir de google
- Soit vous me demandez un tuto dans les commentaires :D :D
Je vais quand même vous donner des liens utiles pour chaque phase d’implémentation.

3.1- Implémenter votre application grâce à swfobject
Google
Documentation

3.2- Charger dynamiquement les boutons qui permettent de lancer/stopper le record
Ici je vais quand même détailler un peu, c’est une partie qui nous intéresse. J’utilise la librairie jQuery pour développer en javascript.

$(document).ready(function(){

	$("#demo_record").after('<div class="opts"></div>');

	// Initialiser l'interface recording
	ini_demo();

	// Initialiser le player
	ini_player();

});

$(document).ready(function) nous permet de déclarer des actions à effectuer une fois que le DOM de la page est entièrement chargé. J’ajoute donc dynamiquement après mon application swf une div qui servira de conteneur pour les boutons d’action. Ensuite je lance 2 fonctions: ini_demo que je vais détailler de suite, et ini_player dont je parlerais à la fin.

function ini_demo(){
	$(".opts").html('<input type="button" value="Lancer l\'enregistrement" id="link_record"/></div>');

	$("#link_record").click(function(){
		$("#demo_record").get(0).record("demo_spiblog");
	});
}

Ici j’initialise donc mon application, en plaçant un bouton de lancement de l’enregistrement dans mon conteneur d’options. Je lui assigne ensuite un écouteur sur l’évènement click. Au click sur ce bouton, je cible mon application swf (possédant l’id « demo_record »). Je récupère son équivalent HTML Object, auquel j’applique la méthode « record ». Cette possibilité est offerte grâce, rappelez-vous, au premier ExternalInterface.addCallback de l’Actionscript. Cette méthode prend également un paramètre, qui servira comme expliqué plus haut, au nommage du fichier!!! C’est donc ici que vous pouvez décider du nom de votre enregistrement. Dans mon cas, le fichier final sera « demo_spiblog.flv ».

Maintenant, il faut penser à déclarer nos fonctions « vidz_started » et « vidz_stopped » qui seront appelées rappelez-vous par l’application swf:

function vidz_started(){
	$(".opts").html('<input type="button" value="Stopper l\'enregistrement" id="link_stop_record"/></div>');
	$("#link_stop_record").click(function(){
		$("#demo_record").get(0).stop_record();
	});
}

function vidz_stopped(){
	ini_demo();
	$.post("index.php",{posted:1},function(data){
		ini_player();
	});
}

Notre fonction vidz_started remplace le bouton start par le bouton stop. La fonction vidz_stopped fait l’inverse, et un appel ajax qui sert dans mon exemple uniquement à déplacer le fichier red5 qui s’est créé. D’ailleurs, où s’est-il créé?

Si tout s’est bien passé, vous pouvez retrouver votre fichier dans le répertoire /path/de/red5/webapps/messageRecorder/streams/ ! Il est au format flv.

3.3- Mettre en place un player pour visualiser notre enregistrement
Ici j’ai choisi de mettre en place le Flowplayer, parce que je ne l’avais jamais utilisé (je suis très habitué au player jwplayer). Je n’ai pas du tout poussé ses possibilités, mais il m’a l’air également très puissant. Je vous laisse le soin de vous en occuper!

4. Pour terminer

Vous trouverez les sources quasi-complètes de ce tuto ici.

Sur ce, bonnes fêtes à vous, je ne pense pas avoir un seul lecteur pour cet article avant 2011 haha ;) Bon réveillon et à l’année prochaine !

39 Commentaires

  1. maes
    4 janvier 2011 at 23 h 16 min

    C’est pas invisible ton iframe, go ie7, t’auras d’autres surprises…

  2. Renaud Feigenbaum
    5 janvier 2011 at 11 h 32 min

    Oui, bien vu l’aveugle, c’est corrigé :)

  3. RudyOS
    12 avril 2011 at 15 h 01 min

    Le fichier flv est enregistré nullepart. D’ou le problème pourrait il venir ? Pourtant le dossier streams existe bien et possède les droits correctes pour l’écriture.

  4. Renaud Feigenbaum
    12 avril 2011 at 15 h 14 min

    Première chose à vérifier, au delà de l’existence du répertoire « streams », c’est l’existence du répertoire « persistence », au même niveau que « streams ».

    Si il existe bien, il faut ensuite regarder du côté de l’application flash. Pour savoir si cette dernière se connecte bien au serveur sur le protocole rtmp, dans le cadre de l’exemple de cet article, vous pouvez faire un alert(‘test’); dans votre fonction javascript vidz_started.
    Si votre navigateur réagit bien, c’est que l’application flash a bien réussi à se connecter au serveur et à lancer l’enregistrement. Dans ce cas, tester de la même façon la fermeture du flux d’enregistrement en effectuant un alert dans la fonction javascript vidz_stopped.

    J’attends le retour de vos tests :)

  5. RudyOS
    13 avril 2011 at 6 h 02 min

    Merci pour votre réponse rapide et claire Renaud. J’ai inclus un alert(‘test’) dans la fonction javascript vidz_started et vidz_stopped et aucun avertissement ne s’affiche à l’écran. Je préfère quand même vous montrer mon code afin d’être sure de n’avoir pas fait d’erreur :

    ****************************************
    function vidz_started(){
    $(« .opts »).html( »);
    $(« #link_stop_record »).click(function(){
    $(« #demo_record »).get(0).stop_record();
    });
    alert(‘test’);
    }

    function vidz_stopped(){
    ini_demo();
    $.post(« index.php »,{posted:1},function(data){
    ini_player();
    });
    alert(‘test’);
    }
    ****************************************************************

    Du coup de je demande s’il faut pas que je tourne vers RED5. C’est peut être celui-ci qui est mal configuré. Pourtant les demos fonctionnent bien. C’est dommage car ce tuto est excellent et très bien expliqué. C’est le seul et unique tuto que j’ai trouvé qui explique comment enregistrer une vidéo avec sa webcam avec red5.
    Les répertoires ‘persistence’ et ’streams’ sont bien créés et au même niveau d’arborescence. :D

  6. RudyOS
    13 avril 2011 at 9 h 06 min

    Après réinstallation de Red5 les ‘alert’ fonctionnent bien mais toujours aucun fichier enregistré. J’ai pourtant bien mis les repertoires ’streams’ et ‘persistence’ en CHMOD 777.

  7. Renaud Feigenbaum
    13 avril 2011 at 9 h 25 min

    Quel est votre système d’exploitation?

    Normalement, si le premier alert s’affiche, c’est que votre application flash a bien réussi à se connecter au serveur rtmp, puisque dans ce cas le code retourné est « NetConnection.Connect.Success ».

    Si c’est bel et bien le cas (une vérification des ports ouverts est tout de même à faire par acquis de conscience) , alors le problème va plutôt se situer au niveau de l’enregistrement du fichier, lorsque vous en spécifier le nom. Comment faites-vous à ce niveau?

    Et dernière question, quelle version de Red5 utilisez-vous?

  8. RudyOS
    13 avril 2011 at 10 h 09 min

    Mon système d’exploitation est la dernière version d’ubuntu et idem pour red5 (la 0.9.1). J’ai effectué plusieurs test en déconnectant le parefeu (firestarter) et toujours le même problème. Si je comprend bien il faut que je crée une fonction pour nommer le fichier et l’enregistrer dans le répertoire ’streams’ ?
    Je vois que dans le fichier index.php de la source il est écrit en haut :
    **********************************************************
    if(!empty($_POST["posted"]) && $_POST["posted"]==1){
    //déplacement du fichier
    }
    else {
    ************************************************************
    C’est peut etre là que je dois créer une fonction pour l’enregistrement alors ?

  9. Renaud Feigenbaum
    13 avril 2011 at 10 h 23 min

    Non, l’appel AJAX sur ce script te servira à déplacer le fichier dans ton site web lorsqu’il sera correctement enregistré dans le répertoire « streams » :p

    Ce qui te permet de nommer le fichier, c’est:
    record_ns.publish(nom_vidz, « record »);
    Pour une description de la méthode et pour bien comprendre, voir http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/help.html?content=00000186.html

    Dans mon exemple, le processus de nommage se fait en 3 étapes.
    1/ En javascript, on passe le nom du fichier dans la méthode « record » de l’embed: $(« #demo_record »).get(0).record(« demo_spiblog »);
    2/ La fonction AS « record_vidz » prend en paramètre le nom de la vidéo
    3/ Elle ‘publie’ le stream en mode record et lui donne le nom envoyé par javascript dans record_ns.publish(nom_vidz, « record »);

    Ces 3 étapes sont-elles ok? Dans le doute, côté actionscript, remplacer record_ns.publish(nom_vidz, « record »); par record_ns.publish(« test », « record »); , un nom en dur, puis essayer.

    D’une manière générale encore une fois, si le premier alert est affiché, cela signifie que l’on rentre dans la condition if(info.code == « NetConnection.Connect.Success »). La connexion au serveur red5 s’est donc bien effectuée, le problème vient de ce qui se passe en conséquence de cette condition. Le nom me semble être une bonne piste.

  10. RudyOS
    14 avril 2011 at 9 h 47 min

    Quelquechose m’échappe, quand j’ouvre le fichier record.fla de la source pour le modifier, Flash CS3 me dit que le format de fichier est innattendu et lorsque que je créé un nouveau fichier record.fla en suivant le tuto le fichier record.swf n’a pas l’air de fonctionner. Donc des 2 manières je n’arrive pas à mes fins. Je n’arrive ni a modifier ni a créer un nouveau fichier. C’est bizarre tout cela…

  11. Renaud Feigenbaum
    14 avril 2011 at 9 h 53 min

    J’ai remplacé le .rar , j’y ai mis le .fla au format antérieur. Tu devrais pouvoir l’ouvrir maintenant ;)

  12. RudyOS
    14 avril 2011 at 9 h 57 min

    Merci beaucoup Renaud. Je te tiens au courant…:D

  13. RudyOS
    14 avril 2011 at 10 h 50 min

    je recois toujours la même erreur…Peut être que ma version de flash est trop ancienne, c’est bizarre…

  14. Renaud Feigenbaum
    14 avril 2011 at 11 h 01 min

    C’est possible, mon CS5 me propose uniquement une compatibilité CS4 dans l’enregistrement, je pensais que ca aurait des chances de fonctionner sur CS3 mais apparemment non.
    Je t’invite à télécharger la version d’essai sur le site d’adobe (simple enregistrement requis) pour pouvoir essayer (30j d’essai), au moins pour voir si cela fonctionne avec mon .fla, si c’est le cas tu pourras ensuite analyser les différences ;)

  15. RudyOS
    14 avril 2011 at 11 h 28 min

    Il n’est malheureusement plus possible de télécharger Flash CS5 sur le site d’adobe.Apparemment prochainement une nouvelle version 5.5 de Flash sortira et la version d’essai n’est pour l’instant pas encore disponible… :D

  16. Renaud Feigenbaum
    14 avril 2011 at 11 h 34 min

    Sisi en fait c’est toujours disponible c’est juste qu’ils les cachent bien… Voir ici https://www.adobe.com/cfusion/tdrc/index.cfm?ref=sup&product=flash&loc=fr

  17. RudyOS
    14 avril 2011 at 12 h 04 min

    oh les vilains, en effet ils le cachent très bien! Merci beaucoup Renaud, je te tiens au courant de la suite… ;)

  18. RudyOS
    14 avril 2011 at 12 h 43 min

    J’ai regardé un peu les exemples de red5 et je me demandais si c’était normal qu’il ne se passait rien quand on cliquait sur ‘connect’ dans l’exemple ‘OFLA DEMO’. J’ai vu sur un site que normalement le voyant jaune passe au vert quand il y a connection…

  19. Renaud Feigenbaum
    14 avril 2011 at 12 h 47 min

    Effectivement chez moi ca passe au vert et ca m’affiche quelque tests précédents. /!\Attention/!\ Ca ne fonctionne pas via localhost, je suis obligé de me connecter en passant par mon domaine. Peut-être est-ce cela qui ne va pas chez toi?

  20. RudyOS
    14 avril 2011 at 13 h 26 min

    En effet tu as souligné un point important, les exemples ne fonctionnent pas sous localhost, il faut obligatoirement passer par son domaine. Je me suis donc reconnecté en saisant mon domaine à la place de localhost et le voyant passe maintenant bien au vert…

  21. RudyOS
    14 avril 2011 at 13 h 58 min

    J’ai reussis a ouvrir le fichier source avec Flash CS5 et changer le domaine de l’exemple par mon domaine. Tout fonctionne très bien, que ce soit l’enregistrement ou la lecture néanmoins un petit problème persiste. Quand j’enregistre une nouvelle video, celle ci écrase la précédente et porte le même nom c’est à dire ‘demo_spiblog.flv’. Apparement au niveau du nommage, la fonction javascript ne rajoute pas le ‘time’ à la suite de ‘demo_spiblog’ du coup elle écrase la vidéo enregistrée auparavant

  22. Renaud Feigenbaum
    14 avril 2011 at 18 h 06 min

    Ok parfait :D
    Du coup c’est là qu’intervient l’appel AJAX sur un fichier PHP (ou autre langage serveur) qui va te permettre de déplacer le fichier (appelons-le « temporaire ») vers son emplacement final. Par exemple dans le répertoire de ton site, ce sera bien plus propre :)
    Pour ca tu peux utiliser une commande système en passant par un exec par exemple.

    Edit: sinon si l’emplacement streams te convient (ce que je te déconseille tout de même), tu peux toujours ajouter une chaine unique basée sur la méthode getTime() de l’objet Date de JS: (new Date()).getTime()

  23. RudyOS
    15 avril 2011 at 8 h 57 min

    Bonjour Renaud :D J’ai reussi à trouver un moyen pour déplacer le fichier en utilisant la fonction SSH de PHP. Je te remercie vraiment beaucoup pour ton aide car c’est une partie dans la création de mon site que j’appréhendais. Ton tuto est d’ailleurs le seul et unique que j’ai trouvé pour enregistrer rapidement et facilement des vidéos avec sa webcam via RED5. La plupart des tutos sur le net sont en anglais, ils utilisent Flash Media Server et ils sont surtout pas détaillés et incompréhensibles. Tu es très pédagogue et tu sais prendre ton temps pour expliquer les choses. Tu fairais un bon prof, ca se voit que tu connais ce que tu dis et que tu es passionné! J’espère que ton tuto servira et aidera encore d’autres personnes. Encore un grand merci Renaud ;)

  24. Renaud Feigenbaum
    15 avril 2011 at 9 h 31 min

    Merci à toi, et surtout n’hésite pas à repasser régulièrement, je vais avoir à nouveau un petit peu de temps pour me remettre à rédiger ;)

    Prochain article dans les jours à venir ;)

  25. RudyOS
    15 avril 2011 at 19 h 29 min

    Super, encore pleins de bonnes choses à apprendre avec toi :) . Un bon tuto sur comment faire du streaming (diffuser sa webcam en live) avec RED5 complèterait bien celui-ci. Cela pourrait servir pour les applications de T’Chat ou d’E-learning. J’ai vu que l’on pouvait faire cela avec haxevideo pour du streaming avec des clients flash…Je suivrais le site avec attention car tes articles sont très intéressants et assez exclusifs au niveau des sujets ;)

  26. Stef
    16 mai 2011 at 20 h 38 min

    Je rencontre un problème lors de l’enregistrement video, celui-ci coupe azu bout de 6s. Je ne comprend pas. Il enregistrement la video mais lors de la lecture avec flowplayer la video coupe au bout de 6 secondes. Merci de bien vouloir m’éclairer à ce sujet

  27. Renaud Feigenbaum
    17 mai 2011 at 9 h 46 min

    Avez-vous essayé avec un autre player pour voir si le problème provient de la vidéo ou de l’enregistrement? Je penche plutôt pour l’enregistrement, je ne vois pas pourquoi flowplayer jouerais 6sec et s’arreterait!

  28. Stef
    17 mai 2011 at 12 h 46 min

    Je n’ai pas testé avec d’autres players mais je pense également que le problème vient de l’enregistrement parceque quand j’ouvre le .flv avec flash, l’enregistrement coupe au bout d’un moment. Parfois ca coupe a 6s et parfois ca coupe plus loin et parfois meme l’enregistrement ne coupe pas. Je ne comprend pas d’ou pourrait provenir le problème.

  29. Renaud Feigenbaum
    17 mai 2011 at 12 h 47 min

    Auriez-vous un lien online pour tester votre application?

  30. Stef
    17 mai 2011 at 14 h 02 min

    Oui biensur le lien est : http://video.shankara-voyance.com/cam/cam1/cam2.php?identifiant=demo
    J’espère que vous pourrez m’éclaircir sur le problème, mais la j’avoue que ca me bloque. Peut etre faudrait t’il reinstaller red5 mais le problème est que tout marchait bien avant et que le live cam marche aussi sans problème ….

  31. Renaud Feigenbaum
    17 mai 2011 at 15 h 14 min

    C’est extremement étrange, je ne rencontre absolument pas le soucis sur votre application. L’essai est parfaitement concluant, à en juger par la dernière vidéo que je viens de tourner. Serait-ce un problème matériel? Avez-vous testé avec une autre webcam? Suis-je le seul à avoir testé l’application en dehors de vous?

  32. kouta
    17 juin 2011 at 2 h 35 min

    bonjour,
    il est trés simpa ton tuto .merci deja .
    mais je trouve nul part le fichier enregistré,c’est a dire le demo_spiblog.flv ,
    alors que tout est bien configurer ,j’ai testé avec celui de red5 lui meme ca marche , j’arrive a les trouvé .
    mais avec le tien j’arrive pas a le trouvé !!
    j’ai raté quleque chose peut etre !

  33. jeremy
    15 novembre 2011 at 13 h 35 min

    Bonjour,
    Super tuto !!! merci
    Par contre j’ai un problème avec le fichier record.fla qui se trouve dans l’archive rar.
    Quand j’essaye de l’ouvrir avec Flash 8, j’obtiens un message d’erreur ‘Format de fichier inattendu’
    Problème de version de Flash ?

  34. Renaud Feigenbaum
    16 novembre 2011 at 12 h 13 min

    Bonjour Jeremy,
    regarde les commentaires plus haut, c’est un problème qu’avait rencontre Rudy.
    La version de Flash est effectivement trop ancienne. Téléchargement possible d’un trial de CS5 ici: https://www.adobe.com/cfusion/tdrc/index.cfm?ref=sup&product=flash&loc=fr

  35. jeremy
    17 novembre 2011 at 16 h 45 min

    Bonjour,
    Effectivement, je n’avais pas vu le commentaire de Ruby…
    J’arrive bien à l’ouvrir avec CS5 (j’avais trouvé une parade en utilisant Sothink SWF decompiler)
    En tout cas merci pour votre réponse et encore merci pour ce tuto complet qui est unique sur la toile.
    Si vous avez un tuto similaire sur soball, je suis preneur ;-)
    Bonne journée et bonne continuation !

  36. Renaud Feigenbaum
    17 novembre 2011 at 17 h 37 min

    Génial :)
    Par contre, je ne connais pas « soball »

    A bientôt ;=)

  37. Tibo
    21 mars 2014 at 18 h 45 min

    Bonjour,
    Je vois que le dernier commentaire a été posté il y a un petit nombre d’années mais je tente quand même ma chance.

    Merci pour le tutorial, je l’ai mis en place et ça fonctionne très bien.

    J’ai tout de même une question. Pour utiliser la webcam il est nécessaire d’accepter l’accès au microphone et à la webcam. Si l’utilisateur clique sur le bouton « Lancer l’enregistrement » avant d’accepter cette accès, alors le serveur red5 enregistre un flux vide. Comment puis-je controller en JS ou en flash le fait que la webcam soit active avant le lancer l’enregistrement. Merci.

  38. Renaud Feigenbaum
    22 mars 2014 at 15 h 02 min

    Bonjour Tibo,

    effectivement il est possible de détecter l’approbation de l’utilisateur en utilisant Camera.onStatus.
    Je t’invite à lire la documentation à ce sujet ici, c’est très simple !
    http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000876.html

  39. amel
    6 mai 2015 at 2 h 45 min

    Bsr j’ai comme SE ubuntu 14.04 sur virtual machine je sais pas comment faire Créer le swf dédié au record Svp quelqu’un m’aider pour résoudre ce problème en tapant les commandes à suivre pour faire cette tache merci d’avance :)

Ajouter un commentaire

Votre Email n'est jamais publiée ou partagée. Les champs requis sont marqués *.

*
*