2009-05-08 6 views
0

일정 기간 동안 swf 동영상의 상태를 캡처하고 캡처하여 서버에 jpg로 저장하는 것이 가능한지 궁금합니다.SWF에서 애니메이션 시퀀스를 JPEG로 내보내기

AS3에는 새로운 com.adobe.images.JPGEncoder 클래스가 있지만 작업을 수행 할 수 있지만 시퀀스를 캡처 할 수 있습니까? 비디오 나 애니메이션으로 되돌릴 수 있기를 희망합니다.

swf를 비디오에 프로그래밍 방식으로 인코딩하는 다른 방법이 있습니까?

답변

1

JPGEncoder를 사용하기 전에 "화면 캡처"를 수행 했으므로 ENTER_FRAME 이벤트에서 화면을 캡처 할 수 있어야합니다. JPG 인코딩이 매우 빠르지 않으므로 작동하지 않을 수 있습니다.

내가 그렇게하는 방법입니다. 당신은 아마 당신의 ENTER_FRAME 이벤트 핸들러에서 호출이를 확장 한 다음 다른 파일 이름에 파일을 저장할 수 있습니다

var fileReference:FileReference = new FileReference(); 

// Capture the BitmapData of the stage for example 
var captureMovieClip:DisplayObjectContainer = stage; 

var stage_snapshot:BitmapData = new BitmapData(captureMovieClip.width, captureMovieClip.height); 
stage_snapshot.draw(captureMovieClip); 

// Setup the JPGEncoder, run the algorithm on the BitmapData, and retrieve the ByteArray 
var encoded_jpg:JPGEncoder = new JPGEncoder(100); 
var jpg_binary:ByteArray = encoded_jpg.encode(stage_snapshot); 

// save 
fileReference.save(jpg_binary, "screenshot.jpg"); 

: 참고로, 여기 (하나의 스크린 샷에 대한)이 작업을 수행하는 코드입니다. 스테이지 대신에 다른 표시 객체를 사용할 수도 있습니다.

이것이 얼마나 빨리 실행되는지는 모르겠지만 프레임 속도를 낮춰야하므로 ENTER_FRAME이 그렇게 많이 호출되지는 않지만 JPG 렌더링에서 품질이 떨어질 수 있습니다.

줄의 품질을 낮추면 : new JPGEncoder(100) 을 100에서 낮은 값으로 설정하면 jpeg의 파일 크기를 줄일 수 있지만 압축시 더 많은 오버 헤드가 발생할 수 있습니다.

관련 문제