このドキュメントでは、YouTube ActionScript 3.0(AS3)Player API のリファレンス情報を提供します。
注: このドキュメントは、2009 年 10 月に ActionScript 2.0(AS2)ではなく AS3 の使い方を説明するよう改訂されました。
AS3 API を使用すると、Flash アプリケーションにプレーヤーを読み込んだり、ActionScript を介してプレーヤーの公開 API を呼び出したりするなど、YouTube 動画プレーヤーを制御できます。再生、一時停止、指定した動画位置のシーク、音量の調整、ミュートなど、関数を呼び出すことでさまざまな操作を行うことができます。ActionScript API は、プレーヤーが別の SWF に読み込まれると自動的にアクティブになります。
すべてを正しく表示するには、エンドユーザー側のパソコンに Flash Player 9 以降がインストールされている必要があります。
クロムレス プレーヤーをアプリケーションに読み込み、Flash でカスタム コントロールを作成するには、次の URL を使用します:
http://www.youtube.com/apiplayer?version=3
クロムレス プレーヤー SWF を読み込んだら、cueVideoById()、loadVideoById()、cueVideoByUrl()、loadVideoByUrl() を使用して特定の YouTube 動画を読み込むことができます。
Flash ファイルに YouTube プレーヤー SWF を埋め込む方法について詳しくは、例をご覧ください。
AS3 API は JavaScript API とよく似ていますが、プレーヤーの初期化方法に若干の違いがあり、特殊な関数が追加されています。ActionScript を介してプレーヤーの初期化や呼び出しを行う方法については、例をご覧ください。
キュー関数
player.cueVideoById(videoId:String, startSeconds:Number, suggestedQuality:String):VoidplayVideo() または seekTo() が呼び出されるまで FLV をリクエストしません。
videoId パラメータ(必須)には、再生する動画の YouTube 動画 ID を指定します。YouTube Data API 動画フィードでは、<yt:videoId> タグで ID を指定します。startSeconds パラメータ(省略可能)には、playVideo() が呼び出されたときに動画の再生を開始する位置(時間)を浮動小数点数または整数で指定します。startSeconds の値を指定して seekTo() を呼び出すと、seekTo() の呼び出しで指定された時間からプレーヤーが再生を開始します。動画の頭出しをして再生の準備が整ったら、プレーヤーは動画の頭出しイベント(5)をブロードキャストします。suggestedQuality パラメータ(省略可能)は、動画の推奨再生画質を指定します。再生画質について詳しくは、setPlaybackQuality 関数の定義をご覧ください。player.loadVideoById(videoId:String, startSeconds:Number, suggestedQuality:String):VoidvideoId パラメータ(必須)には、再生する動画の YouTube 動画 ID を指定します。YouTube Data API 動画フィードでは、<yt:videoId> タグで ID を指定します。startSeconds パラメータ(省略可能)は、浮動小数点数または整数で指定します。この値を指定すると、指定した時間に最も近いキーフレームから動画が再生されます。suggestedQuality パラメータ(省略可能)は、動画の推奨再生画質を指定します。再生画質について詳しくは、setPlaybackQuality 関数の定義をご覧ください。player.cueVideoByUrl(mediaContentUrl:String, startSeconds:Number):VoidplayVideo() または seekTo() が呼び出されるまで FLV をリクエストしません。
mediaContentUrl は、YouTube プレーヤー URL の形式(http://www.youtube.com/v/VIDEO_ID)に完全に適合している必要があります。YouTube Data API 動画フィードでは、<media:content> タグの format 属性の値が 5 であれば、この形式に完全に適合したプレーヤー URL が url 属性に格納されます。startSeconds パラメータには、playVideo() が呼び出されたときに動画の再生を開始する位置(時間)を浮動小数点数または整数で指定します。startSeconds の値を指定して seekTo() を呼び出すと、seekTo() では指定された時間からプレーヤーが再生を開始します。動画の頭出しをして再生の準備が整ったら、プレーヤーは動画の頭出しイベント(5)をブロードキャストします。player.loadVideoByUrl(mediaContentUrl:String, startSeconds:Number):VoidmediaContentUrl は、YouTube プレーヤー URL の形式(http://www.youtube.com/v/VIDEO_ID)に完全に適合している必要があります。YouTube Data API 動画フィードでは、<media:content> タグの format 属性の値が 5 であれば、この形式に完全に適合したプレーヤー URL が url 属性に格納されます。startSeconds パラメータには、動画の再生を開始する位置(時間)を浮動小数点数または整数で指定します。startSeconds に値を指定すると、指定した時間に最も近いキーフレームから動画が再生されます。この値には浮動小数点数も指定できます。再生の制御とプレーヤーの設定
動画の再生
player.playVideo():Voidplayer.pauseVideo():Voidplayer.stopVideo():Voidplayer.seekTo(seconds:Number, allowSeekAhead:Boolean):VoidseekTo() 関数は、指定された seconds より前の最も近いキーフレームを探します。そのため、リクエストされた時間の直前から再生が開始される場合もありますが、通常は最大で 2 秒程度です。allowSeekAhead パラメータは、現在読み込んでいる動画の長さを seconds の値が超えている場合にプレーヤーからサーバーに新しいリクエストを行うかどうかを指定します。player.clearVideo():VoidstopVideo() を呼び出した後で動画の残りをクリアするときに役立ちます。この関数は、ActionScript 3.0 Player API で廃止されましたのでご注意ください。プレーヤーの音量の変更
player.mute():Voidplayer.unMute():Voidplayer.isMuted():Booleanplayer.setVolume(volume:Number):Voidplayer.getVolume():NumbergetVolume() は、プレーヤーがミュートされている場合でも音量を返します。プレーヤーのサイズの設定
player.setSize(width:Number, height:Number):Void再生ステータス
player.getVideoBytesLoaded():Numberplayer.getVideoBytesTotal():Numberplayer.getVideoStartBytes():Numberplayer.getPlayerState():Numberplayer.getCurrentTime():Number再生画質
player.getPlaybackQuality():Stringundefined を返します。戻り値には、hd720、largemedium、small があります。player.setPlaybackQuality(suggestedQuality:String):VoidonPlaybackQualityChange イベントが起動されるので、コードは setPlaybackQuality 関数を呼び出すだけでなく、このイベントに応答する必要があります。suggestedQuality パラメータ値には、small、medium、large、hd720、default を指定できます。パラメータ値を default に設定すると、YouTube は最適な再生画質を自動選択します。この画質は、ユーザー、動画、システムなどの再生条件によって異なります。medium 画質の方が large 画質よりも実際には動画がきれいに見えます。プレーヤー サイズ別の推奨再生画質を次に示します:small: 解像度が 640x360 ピクセル未満のプレーヤー向け。medium: 解像度が 640x360 ピクセル以上のプレーヤー向け。large: 解像度が 854x480 ピクセル以上のプレーヤー向け。hd720: 解像度が 1280x720 ピクセル以上のプレーヤー向け。default: YouTube が適切な再生画質を選択します。この設定は、画質レベルをデフォルトの状態に戻し、それまでに cueVideoById、loadVideoById、setPlaybackQuality の各関数で行った再生画質の設定を無効にします。setPlaybackQuality 関数を動画で無効な suggestedQuality レベルを指定して呼び出すと、有効な画質の中で低い方から 2 番目の画質が設定されます。たとえば、無効な画質レベルの large をリクエストすると、再生画質は medium に設定されます(この画質レベルが有効な場合)。suggestedQuality を設定すると、suggestedQuality の設定は default と同様に処理されます。player.getAvailableQualityLevels():Arrayhd720、large、medium、small があります。現在の動画がない場合、この関数は空の配列を返します。動画情報の取得
player.getDuration():NumbergetDuration() は 0 を返します。通常、動画再生を開始した直後にこの現象が発生します。player.getVideoUrl():Stringplayer.getVideoEmbedCode():Stringイベント リスナーの追加
player.addEventListener(event:String, listener:Function):Voidevent にリスナー関数を追加します。プレーヤーが起動するイベントの説明については、以下のイベント セクションをご覧ください。listener は、指定したイベントが起動したときに実行する関数への参照です。ActionScript 固有の API 呼び出しは次のとおりです:
player.destroy():Voidplayer.destroy() を呼び出して、YouTube プレーヤーをアンロードするようにしてください。この関数は、NetStream オブジェクトをクローズし、プレーヤーをアンロードした後、動画のダウンロードを停止します。プレーヤー SWF の他にコードで参照しているものがある場合、プレーヤーのアンロード時にその参照も別途破棄する必要があります。onReadyonStateChangeonPlaybackQualityChangesetPlaybackQuality(suggestedQuality) 関数を呼び出した場合、再生画質が実際に変わるとこのイベントが起動します。コードを記述する際は、setPlaybackQuality(suggestedQuality) 関数を呼び出したら画質が自動的に変わるものと想定せず、このイベントに応答するようにする必要があります。同様に、setPlaybackQuality や、推奨再生画質を設定できる関数を明示的に呼び出せば再生画質は変わるものと想定しないようにする必要もあります。onError100、101、150 があります。100 エラー コードは、リクエストされた動画が見つからないときにブロードキャストされます。これは、動画が何らかの理由で削除されている場合や、非公開に設定されている場合に発生します。101 エラー コードは、リクエストされた動画が埋め込みプレーヤーでの再生を許可していないときにブロードキャストされます。エラー コード 150 は 101 と同じで、101 のコード違いです。AS3 API の初期化シーケンスは AS2 プレーヤーとは異なります。AS2 プレーヤーでは isPlayerLoaded() 関数を使用してプレーヤーの読み込み、初期化、API 呼び出し対応の状態を判断しますが、AS3 プレーヤーではもっと強力なイベント システムを使用します。以下のサンプル コードは、AS3 API プレーヤーを読み込んで初期化する方法を示しています:
// This will hold the API player instance once it is initialized.
var player:Object;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
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);
}
function onPlayerReady(event:Event):void {
// Event.data contains the event parameter, which is the Player API ID
trace("player ready:", Object(event).data);
// Once this event has been dispatched by the player, we can use
// cueVideoById, loadVideoById, cueVideoByUrl and loadVideoByUrl
// to load a particular YouTube video.
player = loader.content;
}
function onPlayerError(event:Event):void {
// Event.data contains the event parameter, which is the error code
trace("player error:", Object(event).data);
}
function onPlayerStateChange(event:Event):void {
// Event.data contains the event parameter, which is the new player state
trace("player state:", Object(event).data);
}
function onVideoPlaybackQualityChange(event:Event):void {
// Event.data contains the event parameter, which is the new video quality
trace("video quality:", Object(event).data);
}
以下のサンプル コードは、YouTube の画質トグル ボタンの状態を判断する方法を示しています。ユーザーはこのボタンを使用して、動画を表示できる画質レベルの中から別の再生画質を指定することができます。
var qualityLevels:Array = getAvailableQualityLevels()
// qualityLevels may be undefined if the API function does not exist,
// in which case this conditional is false
if (qualityLevels.length > 1) {
var highestQuality:String = qualityLevels[0]
if (highestQuality begins with "hd") {
// Brand quality toggle button as HD.
} else {
// Brand quality toggle button as HQ.
// The highest available quality is shown, but it is not HD video.
}
var quality:String = getPlaybackQuality();
if (quality == 'small' || quality == 'medium') {
// The user is not watching the highest quality available
// can can toggle to a higher quality.
} else {
// The user is watching the highest quality available
// and can toggle to a lower quality.
}
} else {
// Hide the toggle button because there is no current video or
// there is only one quality available.
}