フルスクリーンモードでのビデオ再生

Flash Player 9 以降、Adobe AIR 1.0 以降

Flash Player および AIR には、ビデオ再生を行うフルスクリーンアプリケーションを作成し、フルスクリーンのサイズにビデオを拡大/縮小して表示できる機能があります。

デスクトップでフルスクリーンモードで実行されている AIR コンテンツの場合、ビデオ入力が停止するか、ユーザーがフルスクリーンモードを終了するまで、再生中はシステムのスクリーンセーバーと省電力オプションが無効になります。

フルスクリーンモードの使用法について詳しくは、 フルスクリーンモードの操作 を参照してください。

ブラウザーでの Flash Player のフルスクリーンモードの有効化

ブラウザーで Flash Player のフルスクリーンモードを実装する前に、パブリッシュテンプレートを使用して、アプリケーションに対してフルスクリーンモードを有効にする必要があります。フルスクリーンを可能にするテンプレートには、 <object> タグおよび <embed> タグが含まれます。これらのタグには、 allowFullScreen パラメーターが含まれます。次の例は、 <embed> タグ内の allowFullScreen パラメーターを示しています。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
    id="fullScreen" width="100%" height="100%" 
    codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 
    ... 
    <param name="allowFullScreen" value="true" /> 
    <embed src="fullScreen.swf" allowFullScreen="true" quality="high" bgcolor="#869ca7" 
        width="100%" height="100%" name="fullScreen" align="middle" 
        play="true" 
        loop="false" 
        quality="high" 
        allowScriptAccess="sameDomain" 
        type="application/x-shockwave-flash" 
        pluginspage="http://www.adobe.com/go/getflashplayer"> 
    </embed> 
    ... 
</object>

Flash では、ファイル/パブリッシュ設定を選択し、パブリッシュ設定ダイアログの「HTML」タブで、「Flash のみ - フルスクリーンサポート」テンプレートを選択します。

Flex で、HTML テンプレートにフルスクリーンをサポートする <object> タグおよび <embed> タグが含まれていることを確認します。

フルスクリーンモードの開始

ブラウザー上で実行される Flash Player コンテンツでは、マウスのクリックまたはキー押下に応答してビデオのスクリーンモードを開始します。例えば、ユーザーが「フルスクリーン」というラベルのボタンをクリックしたとき、またはコンテキストメニューから「フルスクリーン」コマンドを選択したときに、フルスクリーンモードを開始することができます。ユーザーに応答するには、アクションが発生するオブジェクトにイベントリスナーを追加します。次のコードでは、ユーザーがフルスクリーンモードに入るためにクリックするボタンにイベントリスナーを追加しています。

var fullScreenButton:Button = new Button(); 
fullScreenButton.label = "Full Screen"; 
addChild(fullScreenButton); 
fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
 
function fullScreenButtonHandler(event:MouseEvent) 
{ 
    stage.displayState = StageDisplayState.FULL_SCREEN;     
 
}

Stage.displayState プロパティを StageDisplayState.FULL_SCREEN に設定することでフルスクリーンモードを開始しています。このコードは、ステージを占める空間に比例したビデオスケーリングで、ステージ全体をフルスクリーンに拡大します。

fullScreenSourceRect プロパティでは、フルスクリーンに拡大するステージの特定領域を指定することができます。まず、フルスクリーンに拡大する四角形を定義します。次に、その四角形を Stage.fullScreenSourceRect プロパティに割り当てます。次のバージョンの fullScreenButtonHandler() 関数では、ビデオのみをフルスクリーンに拡大する 2 行のコードが追加されています。

private function fullScreenButtonHandler(event:MouseEvent) 
{ 
    var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
    stage.fullScreenSourceRect = screenRectangle; 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
}

この例ではマウスのクリックに応答してイベントハンドラーを呼び出していますが、フルスクリーンモードにする方法は Flash Player と AIR の両方で同じです。拡大する四角形を定義し、 Stage.displayState プロパティを設定します。詳しくは、『 Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド 』を参照してください。

以下の完全な例では、ビデオの接続および NetStream オブジェクトを作成し、その再生を開始するコードを追加しています。

package 
{ 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 
    import flash.media.Video; 
    import flash.display.StageDisplayState; 
    import fl.controls.Button; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.events.FullScreenEvent; 
    import flash.geom.Rectangle; 
     
    public class FullScreenVideoExample extends Sprite 
    {     
        var fullScreenButton:Button = new Button(); 
        var video:Video = new Video(); 
 
        public function FullScreenVideoExample() 
        { 
            var videoConnection:NetConnection = new NetConnection(); 
            videoConnection.connect(null); 
             
            var videoStream:NetStream = new NetStream(videoConnection); 
            videoStream.client = this; 
 
            addChild(video); 
             
            video.attachNetStream(videoStream); 
             
            videoStream.play("http://www.helpexamples.com/flash/video/water.flv"); 
             
            fullScreenButton.x = 100; 
            fullScreenButton.y = 270; 
            fullScreenButton.label = "Full Screen"; 
            addChild(fullScreenButton); 
            fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
        } 
 
        private function fullScreenButtonHandler(event:MouseEvent) 
        {  
            var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
            stage.fullScreenSourceRect = screenRectangle; 
            stage.displayState = StageDisplayState.FULL_SCREEN;  
        }     
         
        public function onMetaData(infoObject:Object):void 
        { 
            // stub for callback function 
        } 
    } 
}

onMetaData() 関数は、ビデオメタデータが存在する場合にそのメタデータを処理するためのコールバック関数です。コールバック関数は、何らかのタイプの出現またはイベントに応答してランタイムによって呼び出される関数です。この例では、 onMetaData() 関数は、関数を提供するための要件を満たすスタブです。詳しくは、 メタデータとキューポイントのコールバックメソッドの作成 を参照してください。

フルスクリーンモードの終了

ユーザーは、Esc キーなどのキーボードショートカットの 1 つを入力することによりフルスクリーンモードを終了できます。ActionScript では、 Stage.displayState プロパティを StageDisplayState.NORMAL に設定することによりフルスクリーンモードを終了できます。次の例のコードは、NetStream.Play.Stop netStatus イベントの発生時にフルスクリーンモードを終了します。

videoStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
 
private function netStatusHandler(event:NetStatusEvent) 
{ 
    if(event.info.code == "NetStream.Play.Stop") 
        stage.displayState = StageDisplayState.NORMAL; 
}

フルスクリーンのハードウェアアクセラレーション

ステージの矩形領域をフルスクリーンモードに拡大する場合、Flash Player または AIR ではハードウェアアクセラレーションが使用されます(使用可能で、有効になっている場合)。コンピューターのビデオアダプターを使用することで、ビデオやステージの一部をフルスクリーンサイズに拡大表示する処理が高速化されます。このような状況では、多くの場合、Flash Player アプリケーションは Video クラス(または Flash Player 11.4/AIR 3.4 ではCamera クラス)から StageVideo クラスに切り替えると便利です。

フルスクリーンモードのハードウェアアクセラレーションについて詳しくは、 フルスクリーンモードの操作 を参照してください。StageVideo について詳しくは、 ハードウェアアクセラレーションによる表示のための StageVideo クラスの使用 を参照してください。