티스토리 툴바

블로그 이미지
"변화의 시기에는 배우려고 하는 이들이 세상을 차지합니다"

카테고리

분류 전체보기 (386)
매쉬업 (23)
Flash Platform (131)
AJIT (8)
Mobile (5)
JAVASCRIPT (33)
OpenAPI (5)
RIA (10)
Front-End (2)
Back-End (16)
SQL (2)
낙서장 (137)
TOOLs (4)
Total226,655
Today54
Yesterday86
Statistics Graph
오늘 오전 플래시 플레이어가 10.2버전이 정식으로 릴리즈 되었습니다.
10.2로 업데이트 되면서 퍼포먼스 측면에서 많은 변화가 있었는데요. 그 중 단연 StageVideo를 손으로 꼽을 수 있을 것 같습니다.

StageVideo를 이용하면, 플래시 플레이어가 GPU가속을 사용하게 되면서, 기존 대비 65%이상의 성능 향상이 있었다는 평가입니다. 특히 OSX에서 가히 놀라울만한 퍼포먼스를 보여주더군요.

이 외에

  1. 네이티브 마우스커서를 사용할 수 있게 되었습니다. 이젠 Mouse.hide()를 사용해 굳이 구현을 하지 않아도 됩니다.
  2. 기존에 듀얼 이상의 멀티 모니터를 사용할 경우, 플래시로 전체화면을 사용하게 되면, 다른 모니터로 커서를 옮겨 클릭 할 경우 전체화면이 해제되었는데.. 이젠 이런 걱정을 하지 않아도 됩니다. 멀티 스크린에서 전체 화면이 유지됩니다!
  3. IE9에서 하드웨어 가속을 사용할 수 있게 되었습니다.
  4. Sub-pixel 텍스트 렌더링이 강화되었습니다.
  5. 자세한 사항은 http://www.adobe.com/products/flashplayer/features/ 페이지를 참고하세요!

정식 릴리즈도 되었으니, 샘플 소스 공유해 봅니다.  ^^)/

참!! StageViedeo를 사용할 때 주의할 점이 있습니다.!!!!

1. wmode는 direct만 지원합니다.
2. 플레이어 10.2 이하 사용자를 위해, video객체를 이용해서 StageView를 사용하지 못할 때를 대비하는 방식으로 호환성을 유지해 주셔야 합니다.
 
[DEMO]

To view this page ensure that Adobe Flash Player version 10.2.0 or greater is installed.

package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.NetStatusEvent;
import flash.events.StageVideoAvailabilityEvent;
import flash.events.StageVideoEvent;
import flash.geom.Rectangle;
import flash.media.StageVideo;
import flash.media.StageVideoAvailability;
import flash.net.NetConnection;
import flash.net.NetStream;

[SWF(frameRate="1", backgroundColor="#000000", width="720", height="480")]
public class StageVideoSample extends Sprite
{
	//------------------------------------------------
	// Class Constants
	//------------------------------------------------
	
	/**
	 * Video file path (such as H.264 video file)
	 * http://www.h264info.com/clips.html에서 샘플 영상 다운로드 가능
	 */		
	private const VIDEO_PATH:String = 
		"http://images.apple.com/movies/us/hd_gallery/gl1800/1080p/batman_begins_1080p.mov";
	
	//------------------------------------------------
	// Class Variables
	//------------------------------------------------
	
	/**
	 * Stage Video Object 
	 */		
	private var _sVideo:StageVideo = null;
	
	/**
	 * Stage Video viewport size 
	 */		
	private var _viewportRect:Rectangle;
	
	/**
	 * NetConnection to play video file 
	 */		
	private var _nc:NetConnection;
	
	/**
	 * NetStream 
	 */		
	private var _ns:NetStream;
	
	//------------------------------------------------
	// Constructor
	//------------------------------------------------
	
	/**
	 * Constructor 
	 * 
	 */		
	public function StageVideoSample()
	{
		addEventListener(Event.ADDED_TO_STAGE, onStage);
	}
	
	//------------------------------------------------
	// Class Methods
	//------------------------------------------------
	
	/**
	 *  
	 * @param $e
	 * 
	 */		
	private function onStage($e:Event):void
	{
		init();
	}
	
	/**
	 * initialize 
	 * 
	 */		
	private function init():void
	{				
		stage.scaleMode = StageScaleMode.NO_SCALE;
		stage.align = StageAlign.TOP_LEFT;
		_viewportRect = new Rectangle();
		readyStageVideo();
		configureEvents();
	}
	
	/**
	 * ready for StageVideo 
	 * 
	 */		
	private function readyStageVideo():void
	{
		_nc = new NetConnection();
		_nc.connect(null);				
		_ns = new NetStream(_nc);
		_ns.client = this;		
	}
	
	/**
	 * Configure application event 
	 * 
	 */		
	private function configureEvents():void
	{
		stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, 
			onStageVideoStateHandler);
		
		_ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusHandler);
	}
	
	/**
	 * play video 
	 * 
	 */		
	private function playVideo():void
	{
		_sVideo = stage.stageVideos[0];			
		
		if(!_sVideo.hasEventListener(StageVideoEvent.RENDER_STATE))
			_sVideo.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);
		
		_sVideo.attachNetStream(_ns);			
		_ns.play(VIDEO_PATH);
	}
	
	/**
	 * invalidate size 
	 * 
	 */		
	private function invalidateVideoSize():void
	{	
		var videoWidth:uint = _sVideo.videoWidth;
		var videoHeight:uint = _sVideo.videoHeight;
		
		var scaling:Number = Math.min (
			stage.stageWidth / videoWidth, 
			stage.stageHeight / videoHeight);
		
		videoWidth *= scaling;
		videoHeight *= scaling;				
		
		_viewportRect.x = stage.stageWidth - videoWidth >> 1;
		_viewportRect.y = stage.stageHeight - videoHeight >> 1;
		_viewportRect.width = videoWidth;
		_viewportRect.height = videoHeight;
		
		_sVideo.viewPort = _viewportRect;
		
	}
	
	//------------------------------------------------
	// Event Handlers
	//------------------------------------------------
	
	/**
	 * check video state 
	 * @param $e
	 * 
	 */		
	private function stageVideoStateChange($e:StageVideoEvent):void
	{
		trace("StageVideoEvent:: " + $e.status);
		invalidateVideoSize();
	}			
	
	/**
	 * NetStatus Handler 
	 * @param $e
	 * 
	 */		
	private function onNetStatusHandler($e:NetStatusEvent):void
	{
		trace("NetStatusEvent:: " + $e.info.code);
	}
	
	/**
	 * Check StageVideo feature in player 
	 * @param $e
	 * 
	 */		
	private function onStageVideoStateHandler($e:StageVideoAvailabilityEvent):void
	{
		trace("StageVideoAvailabilityEvent:: " + $e.availability);
		
		if(StageVideoAvailability.AVAILABLE == $e.availability)
			playVideo();				
	}
	
	/**
	 * For NetStream client method
	 * @param $e
	 * 
	 */		
	public function onMetaData ($e:Object):void
	{
		trace($e.duration);
	}
	
}
}




저작자 표시 비영리 동일 조건 변경 허락
Posted by lovedev

Trackback | http://lovedev.tistory.com/trackback/619 관련글 쓰기

  1. 2011/02/11 11:56

    Subject: Flash Player 10.2의 StageVideo에 대해

    지난해 2010년 11월 30일 Flash Player 10.2 Beta가 처음 배포되면서 가장 눈에 띈 것은 바로 StageVideo가 아닌가 싶다. 이전 버전 Flash Player 10.1은 H.264 코덱 영상의 하드웨어 가속 기능을 강화하여 동영상 재생시 CPU 점유율을 감소시켰다는데 의미가 있었다. 10.2에서는 비디오 랜더링 파이프라인을 더욱 확장하고 색상 보정 기능과 이미지 스케일링등의 각종 기능을 추가했다. 즉, GPU가속 기능을 더..

     삭제Tracked from 지돌스타 블로그

댓글을 달아 주세요

  1. 2011/02/11 11:56 Favicon of http://blog.jidolstar.com BlogIcon 지돌스타  댓글주소  수정/삭제  댓글쓰기

    앗 형님도 글을 적으셨군요. 잘보고 가요~~ ^^

  2. 2011/03/31 11:08 Favicon of http://www.scripter.co.kr BlogIcon 야매코더_  댓글주소  수정/삭제  댓글쓰기

    많은 도움 되었습니다. ^^

최근에 달린 댓글

최근에 받은 트랙백

달력

« » 2012.05
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

글 보관함