Votre lecteur Flash n'est pas à jour. Installer la dernière version
Home » Tutoriaux » Flex / ActionScript 3 » Utiliser l'API YouTube en AS3

Utiliser l'API YouTube en AS3

L'API YouTube permet de lire des vidéos stockées sur YouTube.com directement dans vos applications Flash. Elle permet également de personnaliser l'apparence du lecteur. Voici une brève introduction.
La documentation officielle est présente ici.
Sommaire
  1. Récupération de l'API
  2. Utilisation de l'API

1. Récupération de l'API

Pour pouvoir utiliser l'API dans votre application, il est nécessaire de faire une requete pour recuperer le swc sur le serveur de YouTube. Pour ce faire :

_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));

2. Utilisation de l'API

Une fois que la librairie à été chargéé, nous pouvons la récuperer et ajouter les écouteurs sur les différentes actions :

private function onLoaderInit(event:Event):void {
    addChild(_loader);
    _loader.content.addEventListener("onReady", onPlayerReady);
    _loader.content.addEventListener("onError", onPlayerError);
    _loader.content.addEventListener("onStateChange", onPlayerStateChange);
    _loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}

Une fois que notre lecteur est prêt, nous pouvons charger et lancer la vidéo :

private function onPlayerReady(event:Event):void {
    // Récupération de l'API youtube.
    _player = _loader.content;
    // On lance notre vidéo à partir de son identifiant
    _player.loadVideoById(VIDEO_ID);
    // On définie la taille de la vidéo
    _player.setSize(480, 270);
}

Pour terminer, voici le code complet de l'exemple :

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.net.URLRequest;
	
	public class Main extends Sprite {
		private var _loader : Loader;
		private var _player : Object;
		
		private static var VIDEO_ID : String = "D-wvgqDWjnk";
		
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);

			_loader = new Loader();
			_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
			_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
		}

		private function onLoaderInit(event:Event):void {
			addChild(_loader);
			_loader.content.addEventListener("onReady", onPlayerReady);
			_loader.content.addEventListener("onError", onPlayerError);
			_loader.content.addEventListener("onStateChange", onPlayerStateChange);
			_loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
		}

		private function onPlayerReady(event:Event):void {
			_player = _loader.content;
			_player.loadVideoById(VIDEO_ID);
			_player.setSize(480, 270);
		}

		private function onPlayerError(event:Event):void 
			trace("player error:", Object(event).data);
		}

		private function onPlayerStateChange(event:Event):void {
			trace("player state:", Object(event).data);
		}

		private function onVideoPlaybackQualityChange(event:Event):void {
			trace("video quality:", Object(event).data);
		}
		
	}
	
}