Eryskyvidéo v1.05 & v2.00

Description

Encore un lecteur flv !

Oui, mais celui-ci a l'avantage de pouvoir faire du streaming avec les fichiers flv que vous avez stockés sur Skydrive dans un répertoire
public. Je vous rappelle que l'espace disponible est de 25 Go, mais avec une limitation de 50 Mo par fichier. Il y a une petite astuce pour
accéder directement au fichier désiré, sans utiliser le lien directe qui n'est valable que quelques heures.
Il vous suffit de rentrer l'adresse de la page relative à la vidéo.

Exemple : http://cid-xxxxxxxxxxxxxxxx.office.live.com/self.aspx/Video/Radiohead/Radiohead^_-^_A^_Wolf^_at^_the^_Door.flv

Pour que cette adresse soit reconnu par le lecteur, il faut lui supprimer l'entête "http://", ce qui nous donne
"cid-xxxxxxxxxxxxxxxx.office.live.com/self.aspx/Video/Radiohead/Radiohead^_-^_A^_Wolf^_at^_the^_Door.flv".
De même, il ne faut pas mettre d'espace, ou de caractères accentués (Vivement conseillé !).

Un proxy php va s'occuper de récupérer le code de la page, et le traitement sera fait dans l'application flash. Sans le proxy, vous
allez avoir une erreur de sécurité crossdomain. Il faut donc installer le fichier swf, la liste xml, et le proxy dans le même répertoire.
Vous pouvez aussi utiliser des adresses absolues présentes sur votre domaine, ou d'un autre domaine. Dans ce cas, il faut laisser le préfixe "http://".

Voici un exemple d'utilisation dans une balise avec une liste xml :

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="640" height="480" id="eryskyplayer" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="movie" value="./eryskyvideo.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="flashvars" value="liste=./liste.xml&proxy=./as3xy.php&lis=true&cad=true"/>
<embed src="./eryskyvideo.swf" quality="high" flashvars="liste=./liste.xml&proxy=./as3xy.php&lis=true&cad=true"
bgcolor="#000000" width="640" height="480" name="eryskyplayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true"
type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_fr" />
</object>

Vous pouvez aussi l'utiliser sans liste xml :

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="640" height="480" id="eryskyplayer" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="movie" value="./eryskyvideo.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="flashvars" value="vid=http://monsite/video_1.flv|http://monsite/video_2.flv|http://monsite/video_3.flv&proxy=./as3xy.php&lis=true&cad=true"/>
<embed src="./eryskyvideo.swf" quality="high" flashvars="vid=http://monsite/video_1.flv|http://monsite/video_2.flv|http://monsite/video_3.flv&proxy=./as3xy.php&lis=true&cad=true" bgcolor="#000000" width="640" height="480" name="eryskyplayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_fr" />
</object>

La variable "application_locale" doit avoir la valeur true pour le développement, et de false pour l'utilisation du lecteur sur le réseau.

Une version V2.00 est jointe au fichier zip. Pour être plus conforme à la norme AS3, un énorme package est maintenant disponible.

Flasvars :
- liste : nom et chemin de la liste (Ex : ./liste.xml ou http://monsite/sex_pistols.xml)
- proxy : nom et chemin du proxy (Ex :./as3xy.php ou http://monsite/proxy/as3xy.php) Obligatoire pour le crossdomain Skydrive
- aut : démarrage automatique (Ex : aut=1 ou aut=true)
- ran : choix aléatoire de la vidéo (Ex : ran=1 ou ran=true)
- rep : répétition de la vidéo (Ex : rep=1 ou rep=true)
- lis : lissage de l'image vidéo (Ex : lis=1 ou lis=true)
- ple : flash plein écran (Ex : ple=1 ou ple=true)
- cad : cadrage de la vidéo au dimensions du flash (Ex : aut=1 ou aut=true)
- buf : temps de vidéo chargé avant démarrage en secondes (Ex : buf=5)
- vol : volume de la bande audio (Ex : vol=(1 à 100))

Vous pouvez aussi utiliser vid, tit, et img comme dans la source, pour ne pas avoir à créer de playlist. Si il y en a plusieurs, il faut séparer les adresses par le caractère "|". Si il n'y a pas concordance du nombre dans chaque variable, une erreur est déclarée.

Vous pouvez renommer le fichier vidéo .flv en .ecv. Si vous modifiez la source, vous pouvez renommer avec n'importe quelle extension. Evitez les extensions image, ou exécutable !

Source / Exemple :


import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.*;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.text.TextFormat;
import flash.media.SoundTransform;
import flash.display.Loader;
import flash.utils.Timer;
import flash.display.Bitmap;
import flash.display.StageDisplayState;

var annonce:String = "ErySkyVideo V1.05";
var video_demo:String = "http://monsite/road_killer.ecv|http://monsite/pil_rise.ecv|http://monsite/eryskyvideo/video.flv"
var titre_demo:String = "Road_Killer|Public_Image_Limited|Radiohead_-_A wolf_at_the_door";
var image_demo:String = "http://monsite/image/road_killer.jpg|http://monsite/image/pil.jpg|http://monsite/image/radiohead.jpg";
var liste_demo:String = "http://monsite/eryskyvideo/liste.xml"
var url_video:String;
var url_page:String;
var connexion_reseau:NetConnection;
var flux_video:NetStream;
var meta_video:Object;
var client_video:Object;
var video:Video;
var timer_video:Timer;
var volume_video = new SoundTransform();
var adresse_video:Array = new Array();
var titre_video:Array = new Array();
var image_video:Array = new Array();
var image_menu:Array;
var titre_menu:Array;
var duree_video:int;
var position_video:int;
var parametre:Object = loaderInfo.parameters;
var liste_xml:String = parametre.liste;
var proxy:String = parametre.proxy;
var video_automatique:String = parametre.aut;
var video_aleatoire:String = parametre.ran;
var video_repetition:String = parametre.rep;
var video_lissage:String = parametre.lis;
var video_video:String = parametre.vid;
var video_titre:String = parametre.tit;
var video_image:String = parametre.img;
var video_plein_ecran:String = parametre.ple;
var video_cadrage:String = parametre.cad;
var video_buffer:String = parametre.buf;
var video_volume:String = parametre.vol;
var etat_pause:Boolean = false;
var etat_chargement_page:Boolean = false;
var etat_pret:Boolean = false;
var position_pause:int;
var position_volume:int;
var modification_volume:Boolean = false;
var longueur_liste:int;
var pointeur_liste:int;
var hauteur_flash:int = this.height;
var largeur_flash:int = this.width;
var compteur_image:int;
var pointeur_image:int;
var chargeur_image:Loader;

fond_commande.bouton_play.addEventListener(MouseEvent.CLICK, action_bouton_play);
fond_commande.bouton_play.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_play.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_pause.addEventListener(MouseEvent.CLICK, action_bouton_pause);
fond_commande.bouton_pause.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_pause.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_stop.addEventListener(MouseEvent.CLICK, action_bouton_stop);
fond_commande.bouton_stop.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_stop.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_precedent.addEventListener(MouseEvent.CLICK, action_bouton_precedent);
fond_commande.bouton_precedent.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_precedent.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_suivant.addEventListener(MouseEvent.CLICK, action_bouton_suivant);
fond_commande.bouton_suivant.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_suivant.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_retour.addEventListener(MouseEvent.CLICK, action_bouton_retour);
fond_commande.bouton_retour.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_retour.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_lissage_off.addEventListener(MouseEvent.CLICK, action_bouton_lissage_off);
fond_commande.bouton_lissage_on.addEventListener(MouseEvent.CLICK, action_bouton_lissage_on);
fond_commande.bouton_repetition_off.addEventListener(MouseEvent.CLICK, action_bouton_repetition_off);
fond_commande.bouton_repetition_on.addEventListener(MouseEvent.CLICK, action_bouton_repetition_on);
fond_commande.bouton_aleatoire_off.addEventListener(MouseEvent.CLICK, action_bouton_aleatoire_off);
fond_commande.bouton_aleatoire_on.addEventListener(MouseEvent.CLICK, action_bouton_aleatoire_on);
fond_commande.bouton_cadrage_off.addEventListener(MouseEvent.CLICK, action_bouton_cadrage_off);
fond_commande.bouton_cadrage_on.addEventListener(MouseEvent.CLICK, action_bouton_cadrage_on);
fond_commande.bouton_plein_ecran.addEventListener(MouseEvent.CLICK, action_bouton_plein_ecran);
fond_commande.masque_progression.addEventListener(MouseEvent.CLICK, action_barre_progression);
bouton_macaron.addEventListener(MouseEvent.CLICK, action_bouton_play);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_UP, action_bouton_volume_up);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_DOWN, action_bouton_volume_down);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_MOVE, action_bouton_volume_move);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_OUT, action_bouton_volume_up);
this.addEventListener(MouseEvent.MOUSE_OVER, action_ecran_video_over);
this.addEventListener(MouseEvent.MOUSE_OUT, action_ecran_video_out);
fond_commande.bouton_menu.addEventListener(MouseEvent.CLICK, action_bouton_menu);
fond_menu.bouton_exit.addEventListener(MouseEvent.CLICK, action_bouton_menu);
fond_menu.bouton_menu_up.addEventListener(MouseEvent.CLICK, action_bouton_up);
fond_menu.bouton_menu_down.addEventListener(MouseEvent.CLICK, action_bouton_down);
fond_menu.bouton_image_1.addEventListener(MouseEvent.CLICK, action_bouton_image_1);
fond_menu.bouton_image_2.addEventListener(MouseEvent.CLICK, action_bouton_image_2);
fond_menu.bouton_image_3.addEventListener(MouseEvent.CLICK, action_bouton_image_3);
fond_menu.bouton_image_4.addEventListener(MouseEvent.CLICK, action_bouton_image_4);

var application_locale:Boolean = true; // Développement et projection Windows : true | Réseau : false

preparation_player();

function preparation_player():void
{
	if (application_locale)
	{
		video_video = video_demo;
		video_titre = titre_demo;
		video_image = image_demo;
		//liste_xml = liste_demo;
		video_volume = "50";
		video_lissage = "true";
		video_cadrage = "1";
	}
	if (proxy == null) proxy = "./as3xy.php";
	if (video_automatique == null) video_automatique = "false";
	if (video_automatique != "1" && video_automatique.toLowerCase() != "true") bouton_macaron.visible = true;
	if (video_repetition == null) video_repetition = "false";
	if (video_repetition != "1" && video_repetition.toLowerCase() != "true") fond_commande.bouton_repetition_on.visible = false;
	if (video_aleatoire == null) video_aleatoire = "false";
	if (video_aleatoire != "1" && video_aleatoire.toLowerCase() != "true") fond_commande.bouton_aleatoire_on.visible = false;
	if (video_lissage == null) video_lissage = "false";
	if (video_lissage != "1" && video_lissage.toLowerCase() != "true") fond_commande.bouton_lissage_on.visible = false;
	if (video_cadrage == null) video_cadrage = "false";
	if (video_cadrage != "1" && video_cadrage.toLowerCase() != "true") fond_commande.bouton_cadrage_on.visible = false;
	if (video_buffer == null) video_cadrage = "5";
	if (Number(video_buffer) < 1 || Number(video_buffer) > 10) video_buffer = "5";
	if (video_volume == null) video_volume = "100";
	if (Number(video_volume) < 1 || Number(video_volume) > 100) video_volume = "100";
	if (video_plein_ecran != null) action_bouton_plein_ecran(null);
	fond_commande.masque_bouton.visible = false;
	fond_commande.barre_progression.width = 0;
	fond_commande.barre_chargement.width = 0;
	formater_texte(texte_annonce, annonce, true, false);
	fond_commande.bouton_volume.x = 575 + Number(video_volume) / 2;
	fond_menu.visible = false;
	if (video_video != null) chargement_liste_video(); else chargement_liste_xml(liste_xml);
}
function chargement_liste_video():void
{
	var erreur_parametre:int = 0;
	if (video_video.indexOf("|") > -1)
	{
		adresse_video = video_video.split("|");
		longueur_liste = adresse_video.length;
		if (video_titre != null)
		{
			titre_video = video_titre.replace(/_/g," ").split("|");
			if (titre_video.length != longueur_liste) erreur_parametre += 1;
		}
		else erreur_parametre += 1;
		if (video_image != null)
		{
			image_video = video_image.split("|");
			if (image_video.length != longueur_liste) erreur_parametre += 2;
		}
		else erreur_parametre += 2;
		for (var i:int = 0; i < longueur_liste; i++)
		{
			if ((erreur_parametre & 0x1) == 0x1) titre_video[i] = "";
			if ((erreur_parametre & 0x2) == 0x2) image_video[i] = "";
		}
	}
	else
	{
		adresse_video[0] = video_video;
		if (video_titre == null) titre_video[0] = ""; else titre_video[0] = video_titre;
		if (video_image == null) image_video[0] = ""; else image_video[0] = video_image;
		longueur_liste = 1;
	}
	pointeur_liste = 0;
	if (longueur_liste == 1)
	{
		fond_commande.bouton_precedent.visible = false;
		fond_commande.bouton_suivant.visible = false;
	}
	if (erreur_parametre != 0 || longueur_liste == 1) fond_commande.bouton_menu.visible = false;
	if (erreur_parametre != 0) formater_texte(fond_commande.texte_progression, "Erreur paramètres !", true, false);
	if (!bouton_macaron.visible) action_bouton_play(null);
}
function initialisation_connexion():void
{
	etat_pret = false;
	connexion_reseau = new NetConnection();
	connexion_reseau.addEventListener(NetStatusEvent.NET_STATUS, status_reseau);
	connexion_reseau.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite_reseau);
	connexion_reseau.connect(null);
}
function chargement_liste_xml(url_xml:String):void
{
	var chargeur_xml:URLLoader = new URLLoader();
	chargeur_xml.addEventListener(Event.COMPLETE, fin_chargement_liste_xml);
	chargeur_xml.addEventListener(IOErrorEvent.IO_ERROR, erreur_chargement);
	chargeur_xml.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite);
	chargeur_xml.load(new URLRequest(url_xml));
}
function connexion_flux():void
{
	texte_annonce.text = "";
	flux_video = new NetStream(connexion_reseau);
	video = new Video(largeur_flash, hauteur_flash);
	flux_video.addEventListener(NetStatusEvent.NET_STATUS, status_reseau);
	flux_video.addEventListener(AsyncErrorEvent.ASYNC_ERROR, erreur_asynchrone_reseau);
	flux_video.bufferTime = Number(video_buffer);
	client_video = new Object();
	client_video.onMetaData = recuperation_donnees;			
	flux_video.client = client_video;
	video.attachNetStream(flux_video);
	flux_video.play(url_video);
	ecran_video.addChild(video);
	etat_pret = true;
	timer_video = new Timer(333);
	timer_video.addEventListener(TimerEvent.TIMER, progression_video);
	timer_video.start();
}
function recuperation_donnees(donnees:Object):void
{
	meta_video = donnees;
	cadrage_video();
}
function cadrage_video():void
{
	if (fond_commande.bouton_cadrage_on.visible)
	{
		var ratio_largeur:Number = largeur_flash / meta_video.width;
		var ratio_hauteur:Number = hauteur_flash / meta_video.height;
		if (ratio_largeur < ratio_hauteur)
		{
			video.width = int(meta_video.width * ratio_largeur);
			video.height = int(meta_video.height * ratio_largeur);
		}
		else if (ratio_largeur > ratio_hauteur)
		{
			video.width = int(meta_video.width * ratio_hauteur);
			video.height = int(meta_video.height * ratio_hauteur);
		}
		else
		{
			video.width = largeur_flash;
			video.height = hauteur_flash;
		}
	}
	else
	{
		video.width = meta_video.width;
		video.height = meta_video.height;
	}
	video.x = (largeur_flash - video.width) / 2;
	video.y = (hauteur_flash - video.height) / 2;
}
function chargement_page(url:String):void
{
	if (url == null || url == "")
	{
		formater_texte(fond_commande.texte_progression, "Erreur url video !", true, false);
		return;
	}
	if (url.toLowerCase().indexOf(".flv") == - 1 && url.toLowerCase().indexOf(".ecv") == - 1)
	{
		formater_texte(fond_commande.texte_progression, "Erreur extention !", true, false);
		return;
	}
	if (url.substr(0, 4) == "cid-")
	{
		var requete_page:URLRequest;
		var chargeur_page:URLLoader  = new URLLoader();
		if (etat_chargement_page) return;
		etat_chargement_page = true;
		if (application_locale) requete_page = new URLRequest("http://" + url);
		else requete_page = new URLRequest(proxy + "?adr=" + url);
		chargeur_page.addEventListener(Event.COMPLETE, fin_chargement_texte);
		chargeur_page.addEventListener(IOErrorEvent.IO_ERROR, erreur_chargement);
		chargeur_page.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite);
		chargeur_page.dataFormat = URLLoaderDataFormat.TEXT;
		chargeur_page.load(requete_page);
	}
	else
	{
		url_video = url;
		initialisation_connexion();
		etat_chargement_page = false;
		return;
	}
}
function recherche_adresse_directe(texte_page:String):void
{
	var i:int = texte_page.toLowerCase().indexOf('id="sppreviewlink"', 0);
	var j:int = texte_page.toLowerCase().indexOf('id="sppreviewimage"', i);
	if ((i != -1) && (j != -1) && (j > i))
	{
		texte_page = texte_page.substr(i, j - i);
		i = texte_page.indexOf("http", 0);
		j = texte_page.indexOf("download", i);
		if ((i != -1) && (j != -1) && (j > i))
		{
			url_video = texte_page.substr(i, (j - i)).replace(/&#47;/g,"\/").replace(/&#63;/,"").replace(/&#58;/g,":");
			return;
		}
	}
	formater_texte(texte_annonce, "Adresse introuvable", true, false);
}
function formater_texte(objet_texte:Object, texte_objet:String, gras:Boolean, italique:Boolean):void
{
	if (texte_objet == null || texte_objet == "")
	{
		formater_texte(fond_commande.texte_progression, "Erreur texte !", true, false);
		return;
	}
	var format_texte:TextFormat = new TextFormat();
	format_texte.bold = gras;
	format_texte.italic = italique;
	objet_texte.text = texte_objet;
	objet_texte.setTextFormat(format_texte);
}
function conversion_horloge(valeur):String
{
	var minute:String = int(valeur / 60).toString();
	if (minute.length == 1) minute = "0" + minute;
	var seconde:String = (valeur % 60).toString();
	if (seconde.length == 1) seconde = "0" + seconde;
	return (minute + ":" + seconde);
}
function generation_video_aleatoire(nombre:int):int {return Math.floor(Math.random() * nombre);}
function chargement_image(url_image:String):void
{
	if (url_image == null || url_image == "")
	{
		formater_texte(fond_commande.texte_progression, "Erreur image !", true, false);
		return;
	}
	chargeur_image = new Loader();
	chargeur_image.contentLoaderInfo.addEventListener(Event.COMPLETE, fin_chargement_image);
	chargeur_image.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, erreur_chargement);
	chargeur_image.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite);
	chargeur_image.load(new URLRequest(url_image));
}
function placer_image_menu(pointeur:int, compteur:int):void
{
	compteur_image = compteur;
	if (pointeur + compteur_image < longueur_liste) chargement_image(image_video[pointeur + compteur_image]);
	else return;
	switch (compteur)
	{
		case 0 : formater_texte(fond_menu.texte_titre_1, titre_video[pointeur + compteur_image], true, false); break;
		case 1 : formater_texte(fond_menu.texte_titre_2, titre_video[pointeur + compteur_image], true, false); break;
		case 2 : formater_texte(fond_menu.texte_titre_3, titre_video[pointeur + compteur_image], true, false); break;
		case 3 : formater_texte(fond_menu.texte_titre_4, titre_video[pointeur + compteur_image], true, false); break;
	}
}
function commande_play(index:int):void
{
	if (!etat_pret)
	{
		bouton_macaron.visible = false;
		if (index != -1) pointeur_liste = index;
		if (fond_commande.bouton_aleatoire_on.visible) pointeur_liste = generation_video_aleatoire(longueur_liste);
		url_page = adresse_video[pointeur_liste];
		formater_texte(texte_annonce, titre_video[pointeur_liste], true, false);
		chargement_page(url_page);
	}
	else
	{
		if (etat_pause)
		{
			flux_video.togglePause();
			etat_pause = false;
		}
	}
}
function effacer_texte_menu():void
{
	fond_menu.texte_titre_1.text = "";
	fond_menu.texte_titre_2.text = "";
	fond_menu.texte_titre_3.text = "";
	fond_menu.texte_titre_4.text = "";
}
// Evènements
function fin_chargement_image(e:Event):void
{
	switch (compteur_image)
	{
		case 0 :
			fond_menu.cadre_image_1.addChild(Bitmap(chargeur_image.content));
			placer_image_menu(pointeur_image, 1);
			break;
		case 1 :
			fond_menu.cadre_image_2.addChild(Bitmap(chargeur_image.content));
			placer_image_menu(pointeur_image, 2);
			break;
		case 2 :
			fond_menu.cadre_image_3.addChild(Bitmap(chargeur_image.content));
			placer_image_menu(pointeur_image, 3);
			break;
		case 3 :
			fond_menu.cadre_image_4.addChild(Bitmap(chargeur_image.content));
	}
}
function fin_chargement_liste_xml(e:Event):void
{
	var texte_xml:XML = new XML(e.target.data);
	var videos:XMLList = texte_xml.elements();
	longueur_liste = 0;
	for each (var ligne:XML in videos)
	{
		adresse_video[longueur_liste] = ligne.adresse;
		titre_video[longueur_liste] = ligne.titre;
		image_video[longueur_liste] = ligne.image;
		longueur_liste++;
	}
	pointeur_liste = 0;
	pointeur_image = 0;
	if (adresse_video.length <= 1)
	{
		fond_commande.bouton_precedent.visible = false;
		fond_commande.bouton_suivant.visible = false;
		fond_commande.bouton_menu.visible = false;
	}
	if (!bouton_macaron.visible) action_bouton_play(null);
}
function status_reseau(e:NetStatusEvent):void
{
	switch (e.info.code)
	{
		case "NetConnection.Connect.Success":
			connexion_flux();
			position_video = 0;
			break;
		case "NetStream.Play.StreamNotFound":
			formater_texte(fond_commande.texte_progression, "Erreur streaming !", true, false);
	}
}
function progression_video(e:TimerEvent):void
{
	if (meta_video == null) return;
	video.smoothing = fond_commande.bouton_lissage_on.visible;
	duree_video = meta_video.duration;
	position_video = flux_video.time;
	fond_commande.barre_chargement.width = (flux_video.bytesLoaded / flux_video.bytesTotal) * 200;
	fond_commande.barre_progression.width = (position_video  * 200) / duree_video;
	formater_texte(fond_commande.texte_progression, conversion_horloge(position_video) + "|" + conversion_horloge(duree_video), true, false);
	volume_video.volume = (fond_commande.bouton_volume.x - 575) / 50;
	flux_video.soundTransform = volume_video;
	if (position_video >= duree_video)
	{
		if (fond_commande.bouton_repetition_on.visible) flux_video.seek(0);
		else action_bouton_stop(null);
	}
}
function erreur_securite_reseau(e:SecurityErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur sécurité !", true, false);
}
        
function erreur_asynchrone_reseau(e:AsyncErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur synchronisation !", true, false);
}
function erreur_chargement(e:IOErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur chargement !", true, false);
	etat_chargement_page = false;
}
function erreur_securite(e:SecurityErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur sécurité !", true, false);
	etat_chargement_page = false;
}
function action_bouton_play(e:MouseEvent):void
{
	if (fond_menu.visible) action_bouton_menu(null);
	commande_play(-1);
}
function action_bouton_pause(e:MouseEvent):void
{
	if (etat_pret)
	{
		flux_video.togglePause();
		etat_pause = !etat_pause;
	}
}
function action_bouton_stop(e:MouseEvent):void
{
	if (!etat_pret) return;
	timer_video.stop();
	flux_video.close();
	ecran_video.removeChild(video);
	ecran_video.addChild(bouton_macaron);
	ecran_video.addChild(texte_annonce);
	etat_pret = false;
	etat_pause = false;
	bouton_macaron.visible = true;
}
function action_bouton_precedent(e:MouseEvent):void
{
	action_bouton_stop(null);
	pointeur_liste += - 1;
	if (pointeur_liste < 0) pointeur_liste = longueur_liste - 1;
	url_page = adresse_video[pointeur_liste];
	action_bouton_play(null);
}
function action_bouton_suivant(e:MouseEvent):void
{
	action_bouton_stop(null);
	pointeur_liste += 1;
	if (pointeur_liste >= longueur_liste) pointeur_liste = 0;
	url_page = adresse_video[pointeur_liste];
	action_bouton_play(null);
}
function action_bouton_retour(e:MouseEvent):void
{
	if (!etat_pret) return;
	flux_video.seek(0);
}
function action_bouton_lissage_off(e:MouseEvent):void {fond_commande.bouton_lissage_on.visible = true;}
function action_bouton_lissage_on(e:MouseEvent):void {fond_commande.bouton_lissage_on.visible = false;}
function action_bouton_repetition_off(e:MouseEvent):void {fond_commande.bouton_repetition_on.visible = true;}
function action_bouton_repetition_on(e:MouseEvent):void {fond_commande.bouton_repetition_on.visible = false;}
function action_bouton_aleatoire_off(e:MouseEvent):void {fond_commande.bouton_aleatoire_on.visible = true;}
function action_bouton_aleatoire_on(e:MouseEvent):void {fond_commande.bouton_aleatoire_on.visible = false;}
function action_bouton_volume_up(e:MouseEvent):void {modification_volume = false;}
function action_bouton_volume_down(e:MouseEvent):void {modification_volume = true;}
function action_bouton_volume_move(e:MouseEvent):void 
{
	if ((modification_volume) && (e.stageX >= 580) && (e.stageX <= 630)) fond_commande.bouton_volume.x = e.stageX - 5;
}
function action_barre_progression(e:MouseEvent):void
{
	if (e.localX < fond_commande.barre_chargement.width) flux_video.seek(int((e.localX * duree_video) / 200));
}
function masquer_bouton(e:MouseEvent):void
{
	fond_commande.masque_bouton.x = e.stageX - e.localX;
	fond_commande.masque_bouton.y = e.stageY - e.localY - fond_commande.y;
	fond_commande.masque_bouton.visible = true;
}
function demasquer_bouton(e:MouseEvent):void {fond_commande.masque_bouton.visible = false;}
function fin_chargement_texte(e:Event):void
{
	recherche_adresse_directe(e.target.data);
	etat_chargement_page = false;
	initialisation_connexion();
}
function action_ecran_video_out(e:MouseEvent):void {fond_commande.visible = false;}
function action_ecran_video_over(e:MouseEvent):void
{
	fond_commande.visible = true;
	addChild(fond_commande);
}
function action_bouton_menu(e:MouseEvent):void
{
	fond_menu.visible = !fond_menu.visible;
	if (fond_menu.visible)
	{
		effacer_texte_menu();
		placer_image_menu(pointeur_image, 0);
		addChild(fond_menu);
	}
	else removeChild(fond_menu)
}
function action_bouton_up(e:MouseEvent):void
{
	if (pointeur_image > 0)
	{
		effacer_texte_menu();
		pointeur_image -= 1;
	}
	placer_image_menu(pointeur_image, 0);
}
function action_bouton_down(e:MouseEvent):void
{
	if (pointeur_image + 4 < longueur_liste)
	{
		effacer_texte_menu();
		pointeur_image += 1;
	}
	placer_image_menu(pointeur_image, 0);
}
function action_bouton_image_1(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image);
}
function action_bouton_image_2(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image + 1);
}
function action_bouton_image_3(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image + 2);
}
function action_bouton_image_4(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image + 3);
}
function action_bouton_plein_ecran(e:MouseEvent):void
{
	if (stage.displayState == StageDisplayState.FULL_SCREEN) stage.displayState = StageDisplayState.NORMAL;
	else stage.displayState = StageDisplayState.FULL_SCREEN;
}
function action_bouton_cadrage_off(e:MouseEvent):void
{
	fond_commande.bouton_cadrage_on.visible = true;
	cadrage_video();
}
function action_bouton_cadrage_on(e:MouseEvent):void
{
	fond_commande.bouton_cadrage_on.visible = false;
	cadrage_video();
}

Conclusion :


Maintenant, deux versions sont disponibles. Une en AS2+, et une en AS3 avec un énorme package. J'ai fait ce que j'ai pu, car j'ai très peu de connaissances en flash.

Vous pouvez modifier et utiliser ces sources à votre gré.

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.