큐 포인트 사용

큐 포인트는 비디오 파일이 재생되는 동안 비디오 플레이어에서 cuePoint 이벤트를 전달하는 포인트입니다. 웹 페이지의 다른 요소와 상호 작용하려는 시점마다 FLV 파일에 큐 포인트를 추가할 수 있습니다. 예를 들어, 텍스트 또는 그래픽을 표시하거나, Flash 애니메이션과 동기화하거나, FLV 파일을 일시 정지하여 재생에 영향을 주거나, 비디오의 다른 포인트를 검색하거나, 다른 FLV 파일로 전환하는 등의 작업에 큐 포인트를 사용할 수 있습니다. 큐 포인트를 사용하면 ActionScript 코드에서 제어를 받을 수 있으며 FLV 파일의 포인트를 웹 페이지 상의 다른 액션과 동기화할 수 있습니다.

큐 포인트에는 내비게이션, 이벤트 및 ActionScript의 세 가지 유형이 있습니다. 내비게이션 및 이벤트 큐 포인트는 FLV 파일 스트림 및 FLV 파일의 메타데이터 패킷에 포함되기 때문에 포함된 큐 포인트라고도 합니다.

내비게이션 큐 포인트 는 FLV 파일 내에서 사용자가 지정한 시간에 가장 근접한 지점에 키 프레임을 만들기 때문에 이 큐 포인트를 사용하면 FLV 파일의 특정 프레임을 검색할 수 있습니다. 키 프레임 은 FLV 파일 스트림의 이미지 프레임 사이에 있는 데이터 세그먼트입니다. 내비게이션 큐 포인트를 검색하면 구성 요소에서 해당 키 프레임을 검색하고 cuePoint 이벤트를 시작합니다.

이벤트 큐 포인트 를 사용하면 FLV 파일 내에서 특정 포인트를 웹 페이지의 외부 이벤트에 맞춰 동기화할 수 있습니다. cuePoint 이벤트는 지정된 시간에 정확하게 발생합니다. 비디오 가져오기 마법사나 Flash Video Encoder를 사용하여 내비게이션 및 이벤트 큐 포인트를 FLV 파일에 포함할 수 있습니다. 비디오 가져오기 마법사 및 Flash Video Encoder에 대한 자세한 내용은 Flash 사용 설명서 의 16장, "비디오를 사용한 작업"을 참조하십시오.

ActionScript 큐 포인트 는 구성 요소의 [Flash 비디오 큐 포인트] 대화 상자 또는 FLVPlayback.addASCuePoint() 메서드를 통해 추가할 수 있는 외부 큐 포인트입니다. 구성 요소는 FLV 파일과 별도로 ActionScript 큐 포인트를 저장하고 추적합니다. 그러므로 이 큐 포인트는 포함된 큐 포인트보다 정확도가 떨어집니다. ActionScript 큐 포인트의 정확도는 10분의 1초입니다. 재생 헤드가 업데이트될 때 구성 요소에서는 ActionScript 큐 포인트에 대한 cuePoint 이벤트를 생성하기 때문에 playheadUpdateInterval 속성의 값을 낮게 설정하면 ActionScript 큐 포인트의 정확도를 높일 수 있습니다. 자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.playheadUpdateInterval 속성을 참조하십시오.

ActionScript 및 FLV 파일의 메타데이터에서 큐 포인트는 name , time , type parameters 속성이 있는 객체로 표현됩니다. name 속성은 큐 포인트의 이름을 포함하는 문자열입니다. time 속성은 큐 포인트가 발생하는 시간을 시, 분, 초, 밀리초(HH:MM:SS.mmm)로 나타내는 숫자입니다. type 속성은 만든 큐 포인트의 유형에 따라 "navigation" , "event" 또는 "actionscript" 라는 값을 갖는 문자열입니다. parameters 속성은 지정된 이름과 값의 쌍으로 이루어진 배열입니다.

cuePoint 이벤트가 발생할 때 info 속성을 통해 이벤트 객체에서 큐 포인트 객체를 사용할 수 있습니다.

Flash 비디오 큐 포인트 대화 상자 사용

[구성 요소 관리자]에서 cuePoints 매개 변수의 [값] 셀을 두 번 클릭하면 [Flash 비디오 큐 포인트] 대화 상자가 열립니다. 이 대화 상자는 다음 그림과 같이 나타납니다.

전체 화면으로 그래픽 보기
큐 포인트 대화 상자

이 대화 상자는 포함된 큐 포인트와 ActionScript 큐 포인트를 표시합니다. 이 대화 상자를 사용하여 ActionScript 큐 포인트 및 큐 포인트 매개 변수를 추가하거나 삭제할 수 있습니다. 또한 포함된 큐 포인트를 활성화하거나 비활성화할 수 있습니다. 그러나 포함된 큐 포인트를 추가, 변경 또는 삭제할 수는 없습니다.

ActionScript 큐 포인트 추가:

  1. [구성 요소 관리자]에서 cuePoints 매개 변수의 [값] 셀을 두 번 클릭하여 [Flash 비디오 큐 포인트] 대화 상자를 엽니다.

  2. 왼쪽 위 모서리(큐 포인트 목록 위)에 있는 더하기(+) 기호를 클릭하여 기본 ActionScript 큐 포인트 항목을 추가합니다.

  3. [이름] 열에서 [새로운 큐 포인트] 텍스트를 클릭하고 해당 큐 포인트에 지정할 이름으로 편집합니다.

  4. [시간] 열의 값 00:00:00:000을 편집할 수 있도록 클릭하고 해당 큐 포인트가 발생할 시간을 지정합니다. 시간은 시, 분, 초, 밀리초(HH:MM:SS.mmm) 형식으로 지정할 수 있습니다.

    큐 포인트가 여러 개 있는 경우 새로운 큐 포인트는 목록에서 시간 순에 따라 해당 위치로 이동됩니다.

  5. 선택한 큐 포인트에 대한 매개 변수를 추가하려면 [매개 변수] 섹션 위에 있는 더하기(+) 기호를 클릭하고 [이름] 및 [값] 열에 필요한 값을 입력합니다. 각 매개 변수에 대해 이 단계를 반복합니다.

  6. ActionScript 큐 포인트를 계속 추가하려면 각 큐 포인트에 대해 2~5단계를 반복합니다.

  7. [확인]을 클릭하여 변경 내용을 저장합니다.

ActionScript 큐 포인트 삭제:

  1. [구성 요소 관리자]에서 cuePoints 매개 변수의 [값] 셀을 두 번 클릭하여 [Flash 비디오 큐 포인트] 대화 상자를 엽니다.

  2. 삭제하려는 큐 포인트를 선택합니다.

  3. 왼쪽 위 모서리(큐 포인트 목록 위)에 있는 빼기(-) 기호를 클릭하여 선택한 큐 포인트를 삭제합니다.

  4. 삭제하려는 각 큐 포인트에 대해 2~3단계를 반복합니다.

  5. [확인]을 클릭하여 변경 내용을 저장합니다.

포함된 FLV 파일 큐 포인트를 활성화 또는 비활성화하려면

  1. [구성 요소 관리자]에서 cuePoints 매개 변수의 [값] 셀을 두 번 클릭하여 [Flash 비디오 큐 포인트] 대화 상자를 엽니다.

  2. 활성화 또는 비활성화할 큐 포인트를 선택합니다.

  3. [유형] 열의 값을 클릭하여 팝업 메뉴를 트리거하거나 아래쪽 화살표를 클릭합니다.

  4. 활성화할 큐 포인트 유형 이름(예: [이벤트] 또는 [내비게이션])을 클릭합니다. [비활성화]를 클릭하여 해당 큐 포인트를 비활성화합니다.

  5. [확인]을 클릭하여 변경 내용을 저장합니다.

ActionScript를 통해 큐 포인트 사용

ActionScript를 사용하여 ActionScript 큐 포인트 추가, cuePoint 이벤트 수신, 모든 유형 또는 특정 유형의 큐 포인트 찾기, 내비게이션 큐 포인트 검색, 큐 포인트 활성화/비활성화, 큐 포인트의 활성화 여부 확인, 큐 포인트 제거 등의 다양한 작업을 수행할 수 있습니다.

이 단원의 예제에서는 다음과 같은 세 가지 큐 포인트가 포함된 cuepoints.flv라는 FLV 파일을 사용합니다.

이름

시간

유형

point1

00:00:00.418

내비게이션

point2

00:00:07.748

내비게이션

point3

00:00:16.020

내비게이션

ActionScript 큐 포인트 추가

addASCuePoint() 메서드를 사용하여 FLV 파일에 ActionScript 큐 포인트를 추가할 수 있습니다. 다음 예제에서는 FLV 파일이 재생 준비가 되었을 때 두 개의 ActionScript 큐 포인트를 FLV 파일에 추가합니다. 첫 번째 큐 포인트는 큐 포인트의 시간, 이름 및 유형을 속성으로 지정하는 큐 포인트 객체를 사용하여 추가합니다. 두 번째 호출에서는 메서드의 time name 매개 변수를 사용하여 시간과 이름을 지정합니다.

// Requires an FLVPlayback instance called my_FLVPlybk on Stage 
import fl.video.*; 
import fl.video.MetadataEvent; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var cuePt:Object = new Object(); //create cue point object 
cuePt.time = 2.02; 
cuePt.name = "ASpt1"; 
cuePt.type = "actionscript"; 
my_FLVPlybk.addASCuePoint(cuePt);//add AS cue point 
// add 2nd AS cue point using time and name parameters 
my_FLVPlybk.addASCuePoint(5, "ASpt2"); 

자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.addASCuePoint() 메서드를 참조하십시오.

cuePoint 이벤트 수신

cuePoint 이벤트를 사용하면 cuePoint 이벤트가 발생할 때 ActionScript 코드에서 제어를 받을 수 있습니다. 다음 예제에서 큐 포인트가 발생하면 cuePoint 리스너는 playheadTime 속성 및 해당 큐 포인트의 이름과 유형을 표시하는 이벤트 핸들러 함수를 호출합니다. 결과를 보려면 이 예제와 이전 단원에 있는 ActionScript 큐 포인트 추가 예제를 함께 사용하십시오.

my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Elapsed time in seconds: " + my_FLVPlybk.playheadTime); 
        trace("Cue point name is: " + eventObject.info.name); 
        trace("Cue point type is: " + eventObject.info.type); 
}

cuePoint 이벤트에 대한 자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.cuePoint 이벤트를 참조하십시오.

큐 포인트 찾기

ActionScript를 사용하여 모든 유형의 큐 포인트를 찾거나 지정 시간에 가장 근접한 큐 포인트를 찾거나 특정 이름을 갖는 다음 큐 포인트를 찾을 수 있습니다.

다음 예제에서 ready_listener() 이벤트 핸들러는 findCuePoint() 메서드를 호출하여 ASpt1 큐 포인트를 찾은 다음 findNearestCuePoint() 메서드를 호출하여 ASpt1 큐 포인트의 시간에 가장 근접한 내비게이션 큐 포인트를 찾습니다.

import fl.video.FLVPlayback; 
import fl.video.CuePointType; 
import fl.video.VideoEvent; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var rtn_obj:Object; //create cue point object 
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point 
function ready_listener(eventObject:VideoEvent):void { 
    rtn_obj = my_FLVPlybk.findCuePoint("ASpt1", CuePointType.ACTIONSCRIPT); 
    traceit(rtn_obj); 
    rtn_obj = my_FLVPlybk.findNearestCuePoint(rtn_obj.time, CuePointType.NAVIGATION); 
    traceit(rtn_obj); 
} 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function traceit(cuePoint:Object):void { 
    trace("Cue point name is: " + cuePoint.name); 
    trace("Cue point time is: " + cuePoint.time); 
    trace("Cue point type is: " + cuePoint.type); 
}

다음 예제에서는 ready_listener() 이벤트 핸들러가 ASpt 큐 포인트를 찾고 findNextCuePointWithName() 메서드를 호출하여 동일한 이름의 다음 큐 포인트를 찾습니다.

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var rtn_obj:Object; //create cue point object 
my_FLVPlybk.addASCuePoint(2.02, "ASpt");//add AS cue point 
my_FLVPlybk.addASCuePoint(3.4, "ASpt");//add 2nd Aspt 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:VideoEvent):void { 
    rtn_obj = my_FLVPlybk.findCuePoint("ASpt", CuePointType.ACTIONSCRIPT); 
    traceit(rtn_obj); 
    rtn_obj = my_FLVPlybk.findNextCuePointWithName(rtn_obj); 
    traceit(rtn_obj); 
} 
function traceit(cuePoint:Object):void { 
    trace("Cue point name is: " + cuePoint.name); 
    trace("Cue point time is: " + cuePoint.time); 
    trace("Cue point type is: " + cuePoint.type); 
}

큐 포인트를 찾는 방법에 대한 자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.findCuePoint(), FLVPlayback.findNearestCuePoint() 및 FLVPlayback.findNextCuePointWithName() 메서드를 참조하십시오.

내비게이션 큐 포인트 검색

내비게이션 큐 포인트 검색, 지정한 시간 이후의 다음 내비게이션 큐 포인트 검색 및 지정한 시간 앞의 이전 내비게이션 검색 등의 작업을 수행할 수 있습니다. 다음 예제에서는 FLV 파일 cuepoints.flv를 재생하고 ready 이벤트가 발생할 때 7.748 위치의 큐 포인트를 검색합니다. cuePoint 이벤트가 발생할 때 이 예제에서는 seekToPrevNavCuePoint() 메서드를 호출하여 첫 번째 큐 포인트를 검색합니다. 해당 cuePoint 이벤트가 발생할 때 이 예제에서는 seekToNextNavCuePoint() 메서드를 호출하여 eventObject.info.time (현재 큐 포인트의 시간)에 10초를 추가하는 방식으로 마지막 큐 포인트를 검색합니다.

import fl.video.*; 
 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:Object):void { 
    my_FLVPlybk.seekToNavCuePoint("point2"); 
} 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
    trace(eventObject.info.time); 
    if(eventObject.info.time == 7.748) 
        my_FLVPlybk.seekToPrevNavCuePoint(eventObject.info.time - .005); 
    else 
        my_FLVPlybk.seekToNextNavCuePoint(eventObject.info.time + 10); 
} 
my_FLVPlybk.source = "http://helpexamples.com/flash/video/cuepoints.flv";

자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.seekToNavCuePoint(), FLVPlayback.seekToNextNavCuePoint() 및 FLVPlayback.seekToPrevNavCuePoint() 메서드를 참조하십시오.

포함된 FLV 파일 큐 포인트 활성화 및 비활성화

setFLVCuePointEnabled() 메서드를 사용하여 포함된 FLV 파일 큐 포인트를 활성화 및 비활성화할 수 있습니다. 비활성화된 큐 포인트는 cuePoint 이벤트를 트리거하지 않으며 seekToCuePoint() , seekToNextNavCuePoint() 또는 seekToPrevNavCuePoint() 메서드에 반응하지 않습니다. 그렇지만 비활성화된 큐 포인트도 findCuePoint() , findNearestCuePoint() findNextCuePointWithName() 메서드를 사용하여 찾을 수는 있습니다.

isFLVCuePointEnabled() 메서드를 사용하여 포함된 FLV 파일 큐 포인트가 활성화되었는지 확인할 수 있습니다. 다음 예제에서는 비디오 재생 준비가 되었을 때 포함된 큐 포인트 point2 point3 을 비활성화합니다. 하지만, 첫 번째 cuePoint 이벤트가 발생할 때 이벤트 핸들러에서는 point3 큐 포인트가 비활성화되었는지 확인하고 비활성화된 경우 이를 활성화합니다.

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"; 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:VideoEvent):void { 
    my_FLVPlybk.setFLVCuePointEnabled(false, "point2"); 
    my_FLVPlybk.setFLVCuePointEnabled(false, "point3"); 
} 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Cue point time is: " + eventObject.info.time); 
        trace("Cue point name is: " + eventObject.info.name); 
        trace("Cue point type is: " + eventObject.info.type); 
        if (my_FLVPlybk.isFLVCuePointEnabled("point2") == false) { 
            my_FLVPlybk.setFLVCuePointEnabled(true, "point2"); 
        } 
}

자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.isFLVCuePointEnabled() 및 FLVPlayback.setFLVCuePointEnabled() 메서드를 참조하십시오.

ActionScript 큐 포인트 제거

removeASCuePoint() 메서드를 사용하여 ActionScript 큐 포인트를 제거할 수 있습니다. 다음 예제에서는 ASpt1 큐 포인트가 발생할 때 ASpt2 큐 포인트를 제거합니다.

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point 
my_FLVPlybk.addASCuePoint(3.4, "ASpt2");//add 2nd Aspt 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Cue point name is: " + eventObject.info.name); 
        if (eventObject.info.name == "ASpt1") { 
            my_FLVPlybk.removeASCuePoint("ASpt2");     
            trace("Removed cue point ASpt2"); 
        } 
}

자세한 내용은 Adobe Flash Professional CS5용 ActionScript 3.0 참조 설명서 에서 FLVPlayback.removeASCuePoint()를 참조하십시오.