패키지flash.net
클래스public class NetStream
상속NetStream Inheritance EventDispatcher Inheritance Object

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

NetStream 클래스는 AIR 또는 Flash Player 응용 프로그램과 Flash Media Server 간의 단방향 스트리밍 연결이나 AIR 또는 Flash Player 응용 프로그램과 로컬 파일 시스템 간의 단방향 스트리밍 연결을 엽니다. NetStream 객체는 NetConnection 객체 안에 있는 채널입니다. 이 채널은 NetStream.publish()를 사용해 스트림을 배급하거나 NetStream.play()를 사용해서 배급된 스트림에 등록하거나 데이터를 수신합니다. 라이브(실시간) 데이터 및 이전에 기록한 데이터를 배급하거나 재생할 수 있습니다. 또한 NetStream 객체를 사용하여 모든 구독 클라이언트에 텍스트 메시지를 보낼 수도 있습니다(NetStream.send() 메서드 참조).

외부 비디오 파일을 재생하면 SWF 파일에 비디오를 포함하는 것에 비해 성능, 메모리 관리, 비디오와 SWF 프레임 속도의 독립성과 같은 여러 가지 장점을 얻을 수 있습니다.

Adobe AIR 및 Flash Player 9.0.115.0 이상 버전은 H.264 비디오 및/또는 HEAAC v2 인코딩된 오디오가 포함되어 있으며 F4V, MP4, M4A, MOV, MP4V, 3GP 및 3G2와 같은 표준 MPEG-4 컨테이너 포맷에서 파생된 파일을 지원합니다. H.264는 Sorenson 또는 On2의 동일한 인코딩 프로파일에 비해 더 느린 비트율로 더 좋은 품질의 비디오를 제공합니다. HE-AAC v2는 SBR(Spectral Band Replication) 및 PS(Parametric Stereo) 기술을 사용하여 낮은 비트율로 코딩 효율성을 향상시키는 AAC(MPEG-4 비디오 표준에 정의된 표준 오디오 포맷)의 확장입니다. 지원하는 코덱과 파일 형식에 대한 자세한 내용은 http://www.adobe.com/go/hardware_scaling_krFlash Media Server 설명서를 참조하십시오.

이 NetStream 클래스는 파일을 로드하고 재생하는 동안 파일 진행률을 추적하고 사용자에게 재생 제어 기능(중지, 정지 등)을 제공하기 위해 사용할 수 있는 몇 가지 메서드 및 속성을 제공합니다.

일반적인 오디오 또는 비디오 스트리밍 작업 과정: 다음은 실시간 오디오 및 비디오를 배급하는 작업 과정을 요약한 단계입니다.

  1. NetConnection 객체를 만듭니다.
  2. NetConnection.connect() 메서드를 사용하여 응용 프로그램 인스턴스를 서버에 연결합니다.
  3. 이 연결 안에서 데이터 스트림을 만들기 위해 NetStream 객체를 만듭니다.
  4. NetStream.attachAudio() 메서드를 사용하여 스트림을 통해 오디오를 캡처 및 전송하고 NetStream.attachCamera() 메서드를 사용하여 스트림을 통해 비디오를 캡처 및 전송합니다.
  5. NetStream.publish() 메서드를 사용하여 이 스트림에 고유한 이름을 부여한 후 스트림을 통해 데이터를 서버로 전송하여 다른 사용자가 이를 수신할 수 있게 합니다. 또한 데이터를 배급하면서 사용자가 나중에 이를 재생할 수 있도록 기록하는 것도 가능합니다.

이 스트림에 등록한 파일에서는 publish()play() 호출에 응답해 전달된 이름을 사용하고 동일한 NetConnection.connect() 메서드를 배급자로 호출합니다. 그리고 Video.attachNetStream() 메서드를 호출하여 비디오를 스트리밍하고 NetStream.play() 메서드를 호출하여 이를 재생해야 합니다.

Flash Media Server와 함께 데이터 키프레임 사용: NetConnection 및 NetStream 객체를 만든 다음 NetStream.send()를 사용하여 실시간 오디오나 비디오를 서버에 스트리밍할 때처럼 실시간 오디오나 비디오에 메타데이터를 추가할 수 있습니다. 메타데이터는 비디오의 높이나 너비, 지속 시간, 작성자 이름 등과 같은 정보가 될 수 있습니다. 메타데이터를 정의하려면 특수한 핸들러 이름 @setDataFrameNetStream.send()의 첫 번째 인수로 사용합니다.

Flash Media Server 스트림, 점진적 F4V 파일 또는 점진적 FLV 파일에서 데이터 받기: Flash Media Server, F4V 파일 및 FLV 파일은 스트리밍 또는 재생 중에 특정 데이터 포인트의 데이터가 들어 있는 이벤트 객체를 보낼 수 있습니다. 재생 중에 두 가지 방식으로 스트림이나 FLV 파일의 데이터를 처리할 수 있습니다.

참고: MP3 파일과 같은 오디오 파일을 통해 데이터를 보내려면 Sound 클래스를 사용하여 오디오 파일을 Sound 객체에 연결합니다. 그런 다음 Sound.id3 속성을 사용하여 사운드 파일에서 메타데이터를 읽습니다.

예제 보기

참고 사항

flash.media.Video
flash.net.NetConnection
send()
client
onImageData
onMetaData
Basics of video
Introduction to working with video


Public 속성
 속성다음에 의해 정의됨
  bufferLength : Number
[읽기 전용] 현재 버퍼에 있는 데이터의 시간(초) 수입니다.
NetStream
  bufferTime : Number
스트림을 표시하기 전에 메시지를 버퍼링할 시간을 지정합니다.
NetStream
  bytesLoaded : uint
[읽기 전용] 응용 프로그램에 로드된 데이터의 바이트 수입니다.
NetStream
  bytesTotal : uint
[읽기 전용] 응용 프로그램에 로드되는 파일의 전체 바이트 크기입니다.
NetStream
  checkPolicyFile : Boolean
비디오 파일의 로드를 시작하기 전에 응용 프로그램이 로드된 비디오 파일의 서버로부터 크로스 도메인 정책 파일을 다운로드해야 할지 여부를 지정합니다.
NetStream
  client : Object
스트리밍 또는 FLV 파일 데이터를 처리하기 위해 콜백 메서드를 호출할 객체를 지정합니다.
NetStream
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
  currentFPS : Number
[읽기 전용] 표시되는 초당 프레임 수입니다.
NetStream
  farID : String
[읽기 전용] 이 NetStream 인스턴스에 연결되는 먼 끝의 ID입니다.
NetStream
  farNonce : String
[읽기 전용] 이 스트림의 다른 끝에서 충분히 선택된 값으로, 이 연결에 고유합니다.
NetStream
  info : NetStreamInfo
[읽기 전용] 해당 속성에 서비스 품질에 대한 통계가 포함될 수 있는 NetStreamInfo 객체를 반환합니다.
NetStream
  liveDelay : Number
[읽기 전용] 버퍼링이 없는 라이브 모드에서 구독 스트림의 버퍼에 들어 있는 데이터의 초 수입니다.
NetStream
  maxPauseBufferTime : Number
정지 모드에서 메시지를 얼마나 오랫동안 버퍼링할지 초 단위로 지정합니다.
NetStream
  nearNonce : String
[읽기 전용] 스트림의 이 끝에서 충분히 선택된 값으로, 이 연결에 고유합니다.
NetStream
  objectEncoding : uint
[읽기 전용] 이 NetStream 객체에 대한 객체 인코딩(AMF 버전)입니다.
NetStream
  peerStreams : Array
[읽기 전용] 이 배급 NetStream 인스턴스를 수신하는 모든 구독 NetStream 인스턴스를 보유하는 객체입니다.
NetStream
 Inheritedprototype : Object
[정적] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
  soundTransform : SoundTransform
이 NetStream 객체의 사운드를 제어합니다.
NetStream
  time : Number
[읽기 전용] 재생 헤드의 위치(초)입니다.
NetStream
Public 메서드
 메서드다음에 의해 정의됨
  
NetStream(connection:NetConnection, peerID:String = "connectToFMS")
지정된 NetConnection 객체를 통해 비디오 파일 재생에 사용할 수 있는 스트림을 만듭니다.
NetStream
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다.
EventDispatcher
  
소스로 전달된 Microphone 객체에서 NetStream 객체를 통해 전송될 오디오 스트림을 지정합니다.
NetStream
  
attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
카메라에서 비디오 캡처를 시작하거나, theCamera가 null로 설정된 경우 캡처를 중단합니다.
NetStream
  
스트림의 모든 데이터 재생을 중단하고, time 속성을 0으로 설정하며, 해당 스트림을 다른 용도로 사용할 수 있도록 합니다.
NetStream
 Inherited
이벤트를 이벤트 흐름으로 전달합니다.
EventDispatcher
 Inherited
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
 Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
 Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
  
피어 배급 스트림이 피어 구독 스트림과 일치할 때 호출됩니다.
NetStream
  
비디오 스트림의 재생을 정지합니다.
NetStream
  
play(... arguments):void
미디어 파일을 재생합니다.
NetStream
  
몇 가지 재생 옵션을 사용하여 미디어 파일의 재생을 시작합니다.
NetStream
  
로컬로 저장된 미디어 파일에서 DRM 메타데이터를 추출합니다.
NetStream
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
  
publish(name:String = null, type:String = null):void
클라이언트에서 Flash Media Server로 스트리밍 오디오, 비디오 및 텍스트 메시지를 보내고 전송 중 스트림을 기록하기도 합니다.
NetStream
  
입력 오디오를 스트림에서 재생할지 여부를 지정합니다.
NetStream
  
입력 비디오를 스트림에서 재생할지 여부를 지정합니다.
NetStream
  
입력 비디오의 프레임 속도를 지정합니다.
NetStream
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher 객체에서 리스너를 제거합니다.
EventDispatcher
  
[정적] 로컬로 캐시된 DRM(디지털 권한 관리) 바우처 데이터를 모두 삭제합니다.
NetStream
  
정지했던 비디오 스트림의 재생을 다시 시작합니다.
NetStream
  
seek(offset:Number):void
지정된 위치와 가장 가까운 키프레임(비디오 업계에서는 I-프레임이라고도 부름)을 찾습니다.
NetStream
  
send(handlerName:String, ... arguments):void
배급된 스트림에서 모든 구독 클라이언트에게 메시지를 보냅니다.
NetStream
  
기본 암호화된 내용을 보는 데 필요한 DRM 인증 자격 증명을 설정합니다.
NetStream
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
  
스트림의 재생을 일시 정지하거나 다시 시작합니다.
NetStream
 Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
 Inherited
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
이벤트
 이벤트 요약 다음에 의해 정의됨
 Inherited[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다.EventDispatcher
  기본 비동기 코드에서 비동기적으로 예외가 발생할 때 전달됩니다.NetStream
 Inherited[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다.EventDispatcher
  NetStream 객체가 재생 전에 인증용 사용자 자격 증명을 요구하는 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다.NetStream
  DRM(디지털 권한 관리)으로 암호화된 파일의 재생을 시도하는 NetStream 객체에 대해 DRM 관련 오류가 발생할 때 전달됩니다.NetStream
  DRM(디지털 권한 관리)으로 암호화된 내용 재생(사용자가 내용을 재생할 수 있도록 인증되고 권한이 부여된 경우)이 시작될 때 전달됩니다.NetStream
  네트워크 작업의 실패를 유발하는 입력 또는 출력 오류가 발생할 때 전달됩니다.NetStream
  NetStream 객체가 상태 또는 오류 상황을 보고할 때 전달됩니다.NetStream
  비디오 파일을 재생하는 동안 포함된 큐 포인트에 도달했을 때 응답할 리스너를 설정합니다.NetStream
  AIR이 미디어 파일에 포함된 DRM 내용 메타데이터를 추출할 때 응답할 리스너를 설정합니다.NetStream
  Flash Player가 재생 중인 미디어 파일에 포함된 이미지 데이터를 바이트 배열로 받았을 때 응답할 리스너를 설정합니다.NetStream
  Flash Player가 재생 중인 비디오에 포함된 설명 정보를 받았을 때 응답할 리스너를 설정합니다.NetStream
  NetStream 객체가 스트림 재생을 완료했을 때 응답할 리스너를 설정합니다.NetStream
  Flash Player가 재생 중인 미디어 파일에 포함된 텍스트 데이터를 받았을 때 응답할 리스너를 설정합니다.NetStream
  Flash Player에서 재생 중인 비디오에 포함된 Adobe XMP(Extensible Metadata Platform) 관련 정보를 받을 때 응답할 리스너를 설정합니다.NetStream
  응용 프로그램에서 NetStream.play() 메서드를 호출하여 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다.NetStream
Public 상수
 상수다음에 의해 정의됨
  CONNECT_TO_FMS : String = "connectToFMS"
[정적] NetStream 인스턴스의 생성자에 매개 변수로 사용되는 정적 객체입니다.
NetStream
  DIRECT_CONNECTIONS : String = "directConnections"
[정적] 피어 투 피어 배급자 연결을 만듭니다.
NetStream
속성 정보
bufferLength속성
bufferLength:Number  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

현재 버퍼에 있는 데이터의 시간(초) 수입니다. 이 속성을 bufferTime과 함께 사용하면 버퍼가 어느 정도 채워졌는지 알 수 있습니다. 따라서, 데이터가 버퍼에 로드되기를 기다리는 사용자에게 상태를 알려 줄 수 있습니다.



구현
    public function get bufferLength():Number

참고 사항

bufferTime속성 
bufferTime:Number  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

스트림을 표시하기 전에 메시지를 버퍼링할 시간을 지정합니다. 예를 들어 스트림의 처음 15초는 중단 없이 재생되도록 하려면 bufferTime을 15로 설정합니다. 응용 프로그램은 15초 분량의 데이터가 버퍼링된 후에만 스트림 재생을 시작합니다.

기본값은 0.1(10분의 1초)입니다. 현재 버퍼에 있는 초 수를 확인하려면 bufferLength 속성을 사용합니다.

참고: 실시간이 아닌 사전 기록된 내용을 스트리밍할 때 왜곡 현상을 막으려면 Netstream.bufferTime을 0으로 설정하지 않습니다. 기본적으로 응용 프로그램은 사전 기록된 내용의 경우 미디어 데이터를 대기열에 보관하고 미디어를 올바르게 재생하는 입력 버퍼를 사용합니다. 사전 기록된 내용의 경우 기본 설정을 사용하거나 버퍼 시간을 늘립니다.

Flash Player 9.0.115.0부터 Flash Player는 NetStream.pause()가 호출되어도 더 이상 버퍼를 지우지 않습니다. Flash Player 9.0.115.0 이전에서 Flash Player는 재생을 다시 시작하기 전에 버퍼가 채워지기를 기다렸기 때문에 자주 지연이 발생했습니다.

단일 일시 정지의 경우 NetStream.bufferLength 속성은 60초 또는 NetStream.bufferTime 값의 두 배 중 더 큰 값으로 제한됩니다. 예를 들어 bufferTime이 20초이면 Flash Player는 NetStream.bufferLength 값이 20*2(40) 또는 60 중 더 큰 값이 될 때까지 버퍼링합니다. 이 경우 Flash Player는 bufferLength가 60이 될 때까지 버퍼링합니다. bufferTime이 40초이면 Flash Player는 bufferLength 값이 40*2(80) 또는 60 중 더 큰 값이 될 때까지 버퍼링합니다. 이 경우 Flash Player는 bufferLength가 80이 될 때까지 버퍼링합니다.

bufferLength 속성에는 절대 제한도 있습니다. pause()를 호출하여 bufferLength가 600초 또는 bufferTime 값*2 중 더 큰 값이 되면 Flash Player는 버퍼를 플러시하고 bufferLength를 0으로 재설정합니다. 예를 들어 bufferTime이 120초인 경우 bufferLength가 600초에 도달하면 Flash Player는 버퍼를 플러시하며 bufferTime이 360초인 경우 bufferLength가 720초에 도달하면 Flash Player는 버퍼를 플러시합니다.

: 코드에 NetStream.pause()를 사용하여 사용자가 광고를 보는 등의 작업을 수행하는 동안 데이터를 버퍼링한 다음 주 비디오가 시작할 때 일시 정지를 해제할 수 있습니다.

새로운 일시 정지 비헤이비어에 대한 자세한 내용은 http://www.adobe.com/go/learn_fms_smartpause_kr을 참조하십시오.

Flash Media Server. 버퍼 비헤이비어는 버퍼 시간이 배급하는 스트림에서 설정되느냐, 구독하는 스트림에서 설정되느냐에 따라 달라집니다. 배급 스트림일 경우 bufferTime은 응용 프로그램이 프레임을 삭제하기 전까지 출력 버퍼가 얼마나 오랫동안 증가할 수 있는지를 지정합니다. 고속 연결에서는 버퍼 시간이 큰 문제가 되지 않습니다. 데이터가 응용 프로그램의 버퍼링 속도만큼이나 빠르게 전송됩니다. 그러나 저속 연결에서는 응용 프로그램의 데이터 버퍼링 속도와 데이터가 클라이언트로 전송되는 속도 사이에 상당한 차이가 있을 수 있습니다.

구독 스트림의 경우 bufferTime은 입력 데이터가 스트림을 표시하기 시작할 때까지 버퍼링에 얼마나 오래 걸리는지를 지정합니다. 예를 들어 스트림의 처음 15초 동안은 확실하게 중단 없이 재생되도록 하려면 bufferTime을 15로 설정합니다. Flash는 15초 분량의 데이터가 버퍼에 채워진 후에만 스트림 재생을 시작합니다.

기록 스트림이 재생될 때 bufferTime이 0이면 Flash는 이 값을 작게 설정합니다(약 10밀리초). 실시간 스트림이 나중에 재생될 경우(예를 들어, 재생목록에서) 이 버퍼 시간이 유지됩니다. 즉, bufferTime이 스트림 때문에 0이 아닌 값으로 유지됩니다.



구현
    public function get bufferTime():Number
    public function set bufferTime(value:Number):void

참고 사항

bytesLoaded속성 
bytesLoaded:uint  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

응용 프로그램에 로드된 데이터의 바이트 수입니다. 이 속성을 bytesTotal과 함께 사용하면 버퍼가 어느 정도 채워졌는지 알 수 있습니다. 따라서, 데이터가 버퍼에 로드되기를 기다리는 사용자에게 상태를 알려 줄 수 있습니다.



구현
    public function get bytesLoaded():uint

참고 사항

bytesTotal속성 
bytesTotal:uint  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

응용 프로그램에 로드되는 파일의 전체 바이트 크기입니다.



구현
    public function get bytesTotal():uint

참고 사항

checkPolicyFile속성 
checkPolicyFile:Boolean  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

비디오 파일의 로드를 시작하기 전에 응용 프로그램이 로드된 비디오 파일의 서버로부터 크로스 도메인 정책 파일을 다운로드해야 할지 여부를 지정합니다. 점진적 비디오 다운로드(독립 실행형 파일)를 위해 NetStream 객체를 사용 중일 때 또는 호출하는 파일 자체 도메인의 외부에 있는 파일을 로드하는 중일 때, 이 속성이 적용됩니다. NetStream 객체를 사용하여 RTMP 에셋을 가져올 때 이 속성은 무시됩니다.

이 속성을 true로 설정하는 경우는 호출하는 SWF 파일의 도메인 외부에서 비디오 파일을 로드하고 있으며 BitmapData.draw() 메서드를 사용하여 비디오에 픽셀 수준으로 액세스해야 하는 경우입니다. 로딩 시 checkPolicyFile 속성을 true로 설정하지 않고 BitmapData.draw()를 호출하는 경우, 필요한 정책 파일이 다운로드되지 않았기 때문에 SecurityError 예외가 발생할 수 있습니다.

로드 중인 비디오에 대해 픽셀 레벨의 액세스가 필요하지 않으면 checkPolicyFiletrue로 설정하지 않습니다. 정책 파일을 검사하느라 네트워크 대역폭이 소비되어 다운로드 시작이 지연될 수 있습니다.

checkPolicyFiletrue로 설정된 상태에서 NetStream.play() 메서드를 호출할 경우 Flash Player 또는 AIR 런타임은 관련 크로스 도메인 정책 파일을 다운로드하거나 그러한 정책 파일이 없음을 확인한 다음 NetStream.play() 호출에서 지정한 객체를 다운로드해야 합니다. 정책 파일이 있는지 확인하려면 Flash Player 또는 AIR 런타임에서 다음 액션을 순서대로 수행합니다.

  1. 응용 프로그램은 이미 다운로드된 정책 파일을 확인합니다.
  2. 응용 프로그램은 Security.loadPolicyFile() 메서드 호출에 지정된 대기 중인 정책 파일을 모두 다운로드합니다.
  3. 응용 프로그램은 NetStream.play()에 전달한 URL에 해당하는 기본 위치에서 정책 파일을 다운로드하며 이 위치는 해당 URL과 동일한 서버에 있는 /crossdomain.xml입니다.

모든 경우에 Flash Player 또는 AIR 런타임에는 비디오 서버의 적절한 정책 파일이 필요하며 해당 정책 파일은 해당 파일의 위치를 기준으로 play()에 전달된 URL의 객체에 대한 액세스를 제공하고, 호출하는 코드 파일의 도메인에서 하나 이상의 <allow-access-from> 태그를 통해 비디오에 액세스할 수 있도록 해야 합니다.

checkPolicyFiletrue로 설정하면 응용 프로그램은 정책 파일이 확인될 때까지 기다렸다가 비디오를 다운로드합니다. BitmapData.draw() 호출과 같이 비디오 데이터에 대한 픽셀 레벨의 작업은 NetStream 객체로부터 onMetaData 또는 NetStatus 이벤트가 수신될 때까지 기다렸다가 수행됩니다.

checkPolicyFiletrue로 설정했지만 관련 정책 파일이 발견되지 않은 경우에는 정책 파일이 필요한 작업을 수행할 때까지 오류 메시지가 표시되지 않지만 응용 프로그램에서 SecurityError 예외가 발생합니다.

서버측 HTTP 리디렉션을 사용하는 URL에서 파일을 다운로드하는 경우 checkPolicyFile 사용에 주의해야 합니다. 응용 프로그램은 NetStream.play()에 지정된 초기 URL에 해당하는 정책 파일의 검색을 시도합니다. HTTP 리디렉션으로 인해 다른 URL에서 최종 파일이 다운로드된 경우, 처음에 다운로드한 정책 파일이 파일의 최종 URL(보안 결정에서 중요한 URL)에 적용되지 않을 수 있습니다.

정책 파일에 대한 자세한 내용은 ActionScript 3.0 프로그래밍의 "Flash Player 보안"을 참조하십시오.



구현
    public function get checkPolicyFile():Boolean
    public function set checkPolicyFile(value:Boolean):void

참고 사항

client속성 
client:Object  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

스트리밍 또는 FLV 파일 데이터를 처리하기 위해 콜백 메서드를 호출할 객체를 지정합니다. 기본 객체는 만들려는 NetStream 객체인 this입니다. client 속성을 다른 객체로 설정하면 해당 객체에서 콜백 메서드가 호출됩니다. NetStream.client 객체는 onCuePoint(), onImageData(), onMetaData(), onPlayStatus(), onTextData()onXMPData() 함수를 호출하고 관련 데이터 객체를 받을 수 있습니다.

client 속성을 이벤트 핸들러에 연결하려면:

  1. 객체를 만들어 NetStream 객체의 client 속성에 할당합니다.
    var customClient:Object = new Object();
         my_netstream.client = customClient;
  2. 원하는 데이터 이벤트에 대한 핸들러 함수를 클라이언트 객체의 속성으로 지정합니다.
    customClient.onImageData = onImageDataHandler;
  3. 데이터 이벤트 객체를 받을 핸들러 함수를 작성합니다.
    public function onImageDataHandler(imageData:Object):void {
                  trace("imageData length: " + imageData.data.length);
          }

스트림을 통해 또는 재생 과정에서 데이터가 전달되면 데이터 이벤트 객체(이 경우 imageData 객체)에 데이터가 채워집니다. 자세한 내용은 onImageData 설명을 참조하십시오. 여기에는 client 속성에 객체를 할당하는 전체 예제가 포함되어 있습니다.

client 속성을 하위 클래스에 연결하려면:

  1. 데이터 이벤트 객체를 받을 핸들러 함수를 사용하여 하위 클래스를 만듭니다.
    class CustomClient {
            public function onMetaData(info:Object):void {
                trace("metadata: duration=" + info.duration + " framerate=" + info.framerate);
         }
  2. 하위 클래스의 인스턴스를 NetStream 객체의 client 속성에 할당합니다.
    my_netstream.client = new CustomClient();

스트림을 통해 또는 재생 과정에서 데이터가 전달되면 데이터 이벤트 객체(이 경우 info 객체)에 데이터가 채워집니다. 자세한 내용은 NetStream 클래스 끝 부분에서 client 속성에 하위 클래스 인스턴스를 할당하는 방법을 보여 주는 클래스 예제를 참조하십시오.



구현
    public function get client():Object
    public function set client(value:Object):void

오류
TypeError client 속성은 null이 아닌 객체로 설정해야 합니다.

참고 사항

currentFPS속성 
currentFPS:Number  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

표시되는 초당 프레임 수입니다. 비디오 파일을 내보내어 여러 시스템에서 재생되도록 하는 경우, 테스트하는 과정에서 이 값을 검사하면 파일을 내보낼 때 적용할 압축 정도를 결정하는 데 도움이 됩니다.



구현
    public function get currentFPS():Number
farID속성 
farID:String  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

NetStream 인스턴스에 연결되는 먼 끝의 ID입니다. 이 속성은 RTMFP 연결에만 정의됩니다.



구현
    public function get farID():String
farNonce속성 
farNonce:String  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

이 스트림의 다른 끝에서 충분히 선택된 값으로, 이 연결에 고유합니다. 이 값은 스트림의 다른 끝에서 해당 nearNonce 값으로 나타납니다. 이 속성은 RTMFP 연결에만 정의됩니다.



구현
    public function get farNonce():String
info속성 
info:NetStreamInfo  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

해당 속성에 서비스 품질에 대한 통계가 포함될 수 있는 NetStreamInfo 객체를 반환합니다. 이 객체는 현재 상태의 스냅샷입니다.



구현
    public function get info():NetStreamInfo

참고 사항

liveDelay속성 
liveDelay:Number  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

버퍼링이 없는 라이브 모드에서 구독 스트림의 버퍼에 들어 있는 데이터의 초 수입니다. 이 속성은 현재의 네트워크 전송 지연(래그타임)을 지정합니다.

이 속성은 주로 Flash Media Server와 같은 서버에 사용하도록 만들어졌습니다. 자세한 내용은 클래스 설명을 참조하십시오.

이 속성의 값을 확인하여 스트림의 전송 품질을 대략적으로 측정하고 이를 사용자에게 전달할 수 있습니다.



구현
    public function get liveDelay():Number
maxPauseBufferTime속성 
maxPauseBufferTime:Number  [읽기/쓰기]

정지 모드에서 메시지를 얼마나 오랫동안 버퍼링할지 초 단위로 지정합니다. 이 속성은 정지 모드에서 버퍼링되는 시간을 제한하는 데 사용할 수 있습니다. NetStream.bufferLength 값이 이 제한 값에 도달하면 버퍼링이 중지됩니다. 이 값을 설정하지 않으면 최대 제한 값이 60초 또는 각 정지에 대해 NetStream.bufferTime 값의 두 배 중 큰 값으로 기본 설정됩니다.



구현
    public function get maxPauseBufferTime():Number
    public function set maxPauseBufferTime(value:Number):void

참고 사항

nearNonce속성 
nearNonce:String  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

스트림의 이 끝에서 충분히 선택된 값으로, 이 연결에 고유합니다. 이 값은 스트림의 다른 끝에서 해당 farNonce 값으로 나타납니다. 이 속성은 RTMFP 연결에만 정의됩니다.



구현
    public function get nearNonce():String
objectEncoding속성 
objectEncoding:uint  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

이 NetStream 객체에 대한 객체 인코딩(AMF 버전)입니다. NetStream 객체는 연관된 NetConnection 객체로부터 objectEncoding 값을 상속합니다. ActionScript 3.0 SWF 파일이 Flash Player 9 이전에 릴리스된 서버와 통신해야 한다면 이 속성을 잘 이해해야 합니다. 자세한 내용은 NetConnection 클래스의 objectEncoding 속성 설명을 참조하십시오.

이 속성 값은 스트림이 로컬 또는 원격인지에 따라 달라집니다. nullNetConnection.connect() 메서드로 전달되는 로컬 스트림은 NetConnection.defaultObjectEncoding 값을 반환합니다. 서버와 연결하는 원격 스트림은 서버 연결에 대한 객체 인코딩을 반환합니다.

연결되지 않은 상태에서 이 속성을 읽거나 변경하려고 하면 응용 프로그램에서 예외가 발생합니다.



구현
    public function get objectEncoding():uint

참고 사항

peerStreams속성 
peerStreams:Array  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

이 배급 NetStream 인스턴스를 수신하는 모든 구독 NetStream 인스턴스를 보유하는 객체입니다.



구현
    public function get peerStreams():Array
soundTransform속성 
soundTransform:SoundTransform  [읽기/쓰기]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

이 NetStream 객체의 사운드를 제어합니다. 자세한 내용은 SoundTransform 클래스를 참조하십시오.



구현
    public function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void

참고 사항

time속성 
time:Number  [읽기 전용]

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

재생 헤드의 위치(초)입니다.

Flash Media Server 구독 스트림의 경우, 스트림이 초 수 단위로 재생되고 있습니다. 배급 스트림의 경우, 스트림이 초 수 단위로 배급되고 있습니다. 이 수는 소수점 셋째 자리까지 정확합니다. 스트림의 재생 시간을 밀리초 단위로 확인하려면 여기에 1,000을 곱합니다.

구독 스트림의 경우 서버가 데이터 전송을 중단했지만 스트림이 열려 있다면 time 속성 값은 더 이상 증가하지 않습니다. 서버가 데이터 전송을 다시 시작하면 이 값은 데이터 전송을 멈춘 시점부터 증가하기 시작합니다.

스트림이 한 재생 목록 요소에서 다른 요소로 전환될 때 time 값은 계속 증가합니다. NetStream.play()이 호출되고 reset1 또는 true이거나 NetStream.close()가 호출될 때 이 속성은 0으로 설정됩니다.



구현
    public function get time():Number

참고 사항

생성자 정보
NetStream()생성자
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

지정된 NetConnection 객체를 통해 비디오 파일 재생에 사용할 수 있는 스트림을 만듭니다.

지원하는 코덱과 파일 형식에 대한 자세한 내용은 http://www.adobe.com/go/hardware_scaling_krFlash Media Server 설명서를 참조하십시오.

매개 변수
connection:NetConnection — NetConnection 객체입니다.
 
peerID:String (default = "connectToFMS") — 이 매개 변수는 선택적입니다. FMS에 연결하려면 값을 NetStream.CONNECT_TO_FMS로 설정합니다. 피어로 직접 제작하려면 NetStream.DIRECT_CONNECTIONS를 지정합니다. 특정 피어에서 직접 재생하려면 해당 피어의 ID를 지정합니다(NetConnection.nearIDNetConnection.farID 참조). NetConnection.protocol 속성 값은 "rtmfp"(peerID 매개 변수가 피어로 설정된 경우)여야 합니다. RTMFP가 아닌 연결에 대해서는 peerID 매개 변수가 무시됩니다. 프로그래밍 방식으로 NetStream() 메서드에 null 값을 매개 변수로 전달하면 ActionScript에서 기본값인 "connectToFMS"peerID 매개 변수에 사용합니다.

그러나 peerID 매개 변수는 선택적이므로 클라이언트-서버 연결을 통해 점진적으로 재생할 때 다음 방법을 계속 사용할 수 있습니다.

new NetStream(nc:NetConnection);

오류
ArgumentError — NetConnection 인스턴스가 연결되지 않았습니다.

참고 사항


예제

다음 코드에서는 videoURL 변수에 할당된 비디오를 점진적으로 다운로드 및 표시하는 연결을 보여 줍니다.
var my_nc:NetConnection = new NetConnection();
            my_nc.connect(null);
            var my_ns:NetStream = new NetStream(my_nc);
            my_ns.play(videoURL);
            var my_video:Video = new Video();
            my_video.attachNetStream(my_ns);
            addChild(my_video);

다음 코드에서는 videoURL 변수에 할당된 비디오를 스트림하고 표시하는 연결을 보여 줍니다. 이 비디오는 connect() 명령에 지정된 원격 Flash Media Server 인스턴스에 있습니다.
var my_nc:NetConnection = new NetConnection();
            my_nc.connect("rtmp://www.yourfmsserver.com/someappname");
            var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS);
            my_ns.play(videoURL);
            var my_video:Video = new Video();
            my_video.attachNetStream(my_ns);
            addChild(my_video);
메서드 정보
attachAudio()메서드
public function attachAudio(microphone:Microphone):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

소스로 전달된 Microphone 객체에서 NetStream 객체를 통해 전송될 오디오 스트림을 지정합니다. 이 메서드는 지정된 스트림의 배급자만 사용할 수 있습니다.

attachAudio 메서드는 Flash Media Server와 함께 사용하기 위한 것입니다. 이 메서드는 클라이언트 컴퓨터에서 서버로 실시간 오디오(또는 오디오와 함께 실시간 비디오)를 보내는 사용자가 종종 호출합니다.

publish() 메서드 호출 이전 또는 이후에 이 메서드를 호출하고 실제로 전송을 시작할 수 있습니다. 오디오를 듣고 싶은 구독자는 NetStream.play() 메서드를 호출해야 합니다. 사운드 캡처 장치에 맞는 마이크 rate를 설정하고 setSilenceLevel() 메서드를 통해 묵음 레벨 임계값을 설정합니다. 마이크 객체의 soundTransform 속성을 통해 이 오디오 스트림의 사운드 속성(볼륨 및 패닝)을 제어할 수 있습니다.

var conn:NetConnection = new NetConnection();
     conn.connect("rtmp://server.domain.com/path");
     var stream:NetStream = new NetStream(conn);
     var live_mic:Microphone = Microphone.get();
     live_mic.rate = 8;
     live_mic.setSilenceLevel(20,200);
     var soundTrans:SoundTransform = new SoundTransform();
     soundTrans.volume = 6;
     live_mic.soundTransform = soundTrans;
     stream.attachAudio(live_mic);
     stream.publish("mic_stream","live")

매개 변수

microphone:Microphone — 전송할 오디오 스트림의 소스입니다.

참고 사항

attachCamera()메서드 
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

카메라에서 비디오 캡처를 시작하거나 theCameranull로 설정된 경우 캡처를 중단합니다. 이 메서드는 지정된 스트림의 배급자만 사용할 수 있습니다.

이 메서드는 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오.

비디오 소스를 첨부한 후 전송을 시작하려면 NetStream.publish()를 호출해야 합니다. 비디오를 표시하려는 구독자는 NetStream.play()Video.attachCamera() 메서드를 호출하여 스테이지에 비디오를 표시해야 합니다.

snapshotMilliseconds를 사용하여 하나의 스냅샷(값 0 지정)을 전송하거나, 이 값을 양수로 지정하여 지정된 밀리초 수만큼의 트레일러를 비디오 피드에 추가하여 일련의 스냅샷(저속 촬영 장면)을 전송할 수 있습니다. 트레일러는 비디오 메시지의 표시 시간을 연장합니다. attachCamera()를 반복 호출(snapshotMilliseconds에 양수 값 지정)하면 스냅샷과 트레일러가 교대로 반복되어 저속 촬영 장면이 만들어집니다. 예를 들어, 매일 프레임 하나를 캡처하여 이를 비디오 파일에 추가할 수 있습니다. 구독자가 파일을 재생하면 각 프레임이 지정된 밀리초 동안 화면에 표시되었다가 다음 프레임이 표시됩니다.

snapshotMilliseconds 매개 변수의 목적은 Camera.setMode()로 설정할 수 있는 fps 매개 변수와 다릅니다. snapshotMilliseconds를 설정하면서 기록된 프레임 간에 경과되는 시간을 제어합니다. Camera.setMode()를 사용하여 fps를 지정할 경우에는 기록과 재생 간에 경과되는 시간을 제어합니다.

예를 들어, 5분마다 하나씩, 총 100개의 스냅샷을 취하고자 합니다. 다음과 같은 두 가지 방법을 사용할 수 있습니다.

두 방법 모두 동일하게 500개의 프레임을 캡처하며 모두 유용한 방법입니다. 어떤 방법을 사용할지는 주로 재생 요구 사항에 따라 달라집니다. 예를 들어, 두 번째 경우에는 전체 시간의 오디오를 기록할 수 있습니다. 또한 두 파일 모두 크기가 거의 동일합니다.

매개 변수

theCamera:Camera — 비디오 전송의 소스입니다. 유효한 값은 Camera 객체(비디오 캡처 시작)와 null입니다. null을 전달할 경우 응용 프로그램은 비디오 캡처를 중단하고 전송되는 추가 매개 변수는 무시됩니다.
 
snapshotMilliseconds:int (default = -1) — 비디오 스트림이 연속인지, 단일 프레임인지 아니면 저속 촬영 사진에 사용되는 일련의 단일 프레임인지 지정합니다.
  • 이 매개 변수를 생략하면 응용 프로그램은 사용자가 attachCameranull 값을 전달할 때까지 모든 비디오를 캡처합니다.
  • 0을 전달하면 응용 프로그램은 단일 비디오 프레임만 캡처합니다. 기존의 스트림 내에서 "스냅샷"을 전송할 때 이 값을 사용합니다. Flash Player 또는 AIR는 잘못된 인수, 음수 인수 또는 숫자가 아닌 인수를 0으로 해석합니다.
  • 양수를 전달할 경우 응용 프로그램은 단일 비디오 프레임을 캡처한 다음 지정된 길이의 일시 정지 시간을 스냅샷에 트레일러로 추가합니다. 이 값을 사용하여 저속 촬영 사진 효과를 만듭니다.

close()메서드 
public function close():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

스트림의 모든 데이터 재생을 중단하고, time 속성을 0으로 설정하며, 해당 스트림을 다른 용도로 사용할 수 있도록 합니다. 또한 이 메서드는 HTTP를 통해 다운로드된 비디오 파일의 로컬 복사본을 삭제합니다. 응용 프로그램은 작성한 파일의 로컬 복사본을 삭제하지만 복사본은 캐시 디렉토리에서 유지될 수 있습니다. 비디오 파일이 캐시나 로컬에 저장되는 것을 완전히 차단하려면 Flash Media Server를 사용합니다.

Flash Media Server를 사용할 경우, 이 메서드는 NetStream.play()를 배급하는 스트림에서 또는 NetStream.publish()를 구독하는 스트림에서 호출할 때 암시적으로 호출됩니다. 다음에 유념하십시오.

참고 사항

onPeerConnect()메서드 
public function onPeerConnect(subscriber:NetStream):Boolean

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

피어 배급 스트림이 피어 구독 스트림과 일치할 때 호출됩니다. 구독자가 배급자에 연결되기 전에 ActionScript 코드에서 피어 투 피어 배급에 대한 액세스를 자세히 제어할 수 있도록 이 메서드를 호출합니다. 다음 코드에서는 이 메서드에 대한 콜백 함수를 만드는 방법을 보여 줍니다.

var c:Object = new Object;
  c.onPeerConnect = function(subscriber:NetStream):Boolean {
  if (accept)
   return true;
   else
       return false;
   };
   m_netStream.client = c;

피어 배급자가 이 메서드를 구현하지 않으면 모든 피어에서 배급된 모든 내용을 재생할 수 있습니다.

매개 변수

subscriber:NetStream

반환값
Boolean
pause()메서드 
public function pause():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

비디오 스트림의 재생을 정지합니다. 비디오가 이미 정지한 경우 이 메서드를 호출하면 아무 것도 수행되지 않습니다. 비디오를 일시 정지 후 재생을 계속하려면 resume()를 호출합니다. 일시 정지와 재생 사이를 전환하려면(먼저 비디오를 일시 정지한 다음 다시 재생) togglePause()를 호출합니다.

Flash Player 9.0.115.0부터 Flash Player는 NetStream.pause()가 호출되어도 더 이상 버퍼를 지우지 않습니다. Flash Player 9.0.115.0 이전에서 Flash Player는 재생을 다시 시작하기 전에 버퍼가 채워지기를 기다렸기 때문에 자주 지연이 발생했습니다.

단일 일시 정지의 경우 NetStream.bufferLength 속성은 60초 또는 NetStream.bufferTime 값의 두 배 중 더 큰 값으로 제한됩니다. 예를 들어 bufferTime이 20초이면 Flash Player는 NetStream.bufferLength 값이 20*2(40) 또는 60 중 더 큰 값이 될 때까지 버퍼링합니다. 이 경우 Flash Player는 bufferLength가 60이 될 때까지 버퍼링합니다. bufferTime이 40초이면 Flash Player는 bufferLength 값이 40*2(80) 또는 60 중 더 큰 값이 될 때까지 버퍼링합니다. 이 경우 Flash Player는 bufferLength가 80이 될 때까지 버퍼링합니다.

bufferLength 속성에는 절대 제한도 있습니다. pause()를 호출하여 bufferLength가 600초 또는 bufferTime 값*2 중 더 큰 값이 되면 Flash Player는 버퍼를 플러시하고 bufferLength를 0으로 재설정합니다. 예를 들어 bufferTime이 120초인 경우 bufferLength가 600초에 도달하면 Flash Player는 버퍼를 플러시하며 bufferTime이 360초인 경우 bufferLength가 720초에 도달하면 Flash Player는 버퍼를 플러시합니다.

: 코드에 NetStream.pause()를 사용하여 사용자가 광고를 보는 등의 작업을 수행하는 동안 데이터를 버퍼링한 다음 주 비디오가 시작할 때 일시 정지를 해제할 수 있습니다.

참고 사항

play()메서드 
public function play(... arguments):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

미디어 파일을 재생합니다.

지원하는 코덱과 파일 형식에 대한 자세한 내용은 http://www.adobe.com/go/hardware_scaling_krFlash Media Server 설명서를 참조하십시오.

비디오 데이터를 보려면 Video 객체를 만들고 Video.attachNetStream() 메서드를 호출합니다. 마이크에서 오디오를 스트리밍하려면 NetStream.attachAudio() 메서드를 사용합니다. Microphone 객체를 사용하여 일부 오디오 속성을 제어할 수 있습니다.

DisplayObjectContainer.addChild() 메서드를 호출하여 오디오를 표시 목록의 객체로 라우팅합니다. 그런 다음 Sound 객체를 만들어 일부 오디오 속성을 제어할 수 있습니다. 자세한 내용은 DisplayObjectContainer.addChild() 메서드를 참조하십시오.

비디오 파일을 찾을 수 없는 경우 netStatus 이벤트가 전달됩니다. 현재 재생 중인 스트림을 중지하려면 close() 메서드를 사용합니다.

Flash Media Server 없이 이 메서드를 사용하는 경우에는 보안 고려 사항이 있습니다. local-trusted 또는 local-with-networking 샌드박스에 있는 파일은 원격 샌드박스에서 비디오 파일을 로드하고 재생할 수 있지만 URL 정책 파일을 통한 명시적인 허용이 없으면 해당 원격 파일의 데이터에 액세스할 수 없습니다. 또한 SWF 내용을 포함하는 HTML 페이지에서 objectembed 태그의 allowNetworking 매개 변수를 설정하여 Flash Player에서 실행 중인 SWF 파일에서 이 메서드를 사용하지 못하도록 할 수 있습니다.

일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 보안 장(ActionScript 3.0 프로그래밍 설명서)에서 "네트워킹 API 제한"을 참조하십시오.

일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 보안 장(ActionScript 3.0 프로그래밍 설명서)에서 "네트워킹 API 제한"을 참조하십시오.

보안과 관련된 자세한 내용은 다음을 참조하십시오.

매개 변수

... arguments — 재생할 미디어 파일의 위치를 나타내는 문자열, URLRequest.url 속성 또는 둘 중 하나를 참조하는 변수입니다. 응용 프로그램 보안 샌드박스의 외부에 있는 Flash Player 및 AIR 내용의 경우에는 SWF 파일과 동일한 디렉토리 또는 하위 디렉토리에 저장된 로컬 비디오 파일을 재생할 수 있습니다. 그러나 상위 수준의 디렉토리로 이동할 수는 없습니다.

Flash Media Server를 사용할 경우, play()는 다음과 같은 인수를 가집니다.

이름필수설명
name:Object 필수 기록 파일의 이름, NetStream.publish()에 의해 제작된 실시간 데이터의 식별자 또는 false입니다. false의 경우, 스트림은 재생을 멈추고 추가적인 매개 변수는 무시됩니다. 파일 이름 구문에 대한 자세한 내용은 이 표 다음에 나오는 파일 형식 표를 참조하십시오.
start:Number 선택 사항 초 단위로 나타낸 시작 시간입니다. 허용되는 값은 -2, -1, 0 또는 양수입니다. 기본값은 -2로, 실시간 스트림과 기록 스트림 순으로 찾고 둘 다 없을 경우 실시간 스트림을 엽니다. -1인 경우 실시간 스트림만 재생합니다. 0 또는 양수인 경우, start 초를 시작으로 기록 스트림을 재생합니다.
len:Number start가 지정된 경우 선택적입니다. 재생 시간(초)입니다. 허용되는 값은 -1, 0 또는 양수입니다. 기본값은 -1이며, 실시간 스트림이나 기록 스트림이 종료할 때까지 재생합니다. 0인 경우 기록 스트림의 시작에서부터 start 초에 있는 단일 프레임을 재생합니다. 양수인 경우, len 초 동안 실시간 또는 기록 스트림을 재생합니다.
reset:Object len이 지정된 경우 선택적입니다. 재생 목록 제거 여부를 확인합니다. 기본값은 1 또는 true이며, 이 경우 이전의 play 호출을 제거하고 즉시 name을 재생합니다. 0 또는 false인 경우 스트림을 재생 목록에 추가합니다. 2인 경우 재생 목록을 유지하고 모든 스트림 메시지를 즉시 반환합니다. 3인 경우 재생 목록을 제거하고 모든 스트림 메시지를 즉시 반환합니다.

다음 표에 설명된 파일 형식을 재생할 수 있습니다. 구문은 파일 형식에 따라 다릅니다.

파일 형식구문예제
FLV파일 이름 확장명 없이 문자열로 스트림 이름을 지정합니다. ns.play("myFLVStream");
MP3 또는 ID3 파일 이름 확장명 없이 각각 접두어 mp3: 또는 id3:를 붙여 문자열로 스트림 이름을 지정합니다. ns.play("mp3:myMP3Stream"); ns.play("id3:myID3data");
MPEG-4 기반 파일(예: F4V, MP4) 파일 이름 확장명과 함께 또는 파일 이름 확장명 없이 접두어 mp4:를 사용하여 문자열로 스트림 이름을 지정합니다. 이 접두어는 파일에 MPEG-4 Part 14 컨테이너 형식 내 H.264로 인코딩된 비디오 및 AAC로 인코딩된 오디오가 포함된 것을 Flash Media Server에 알려줍니다. ns.play("mp4:myVideo.f4v") ns.play("mp4:myVideo.mp4") ns.play("mp4:myVideo")


이벤트
status:StatusEvent — DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다. code 속성의 값은 "DRM.encryptedFLV"입니다.

오류
SecurityError — 신뢰할 수 없는 로컬 SWF 파일은 인터넷 통신이 불가능합니다. 이 SWF 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는 신뢰할 수 있는 파일로 다시 규정하면 이 오류를 해결할 수 있습니다.
 
ArgumentError — 하나 이상의 매개 변수를 지정해야 합니다.
 
Error — NetStream Object가 유효하지 않습니다. NetConnection의 실패가 원인일 수 있습니다.

참고 사항


예제
Flash Media Server 이 예제는 기록 F4V 파일을 재생하며 시작부터 최대 100초까지 재생합니다.
ns.play("mp4:record1.f4v", 0, 100, true);
Flash Media Server 이 예제는 클라이언트가 배급한 실시간 FLV 스트림을 처음부터 끝까지 즉시 재생하기 시작하며 이전 스트림을 모두 제거합니다.
ns.play("stephen");
play2()메서드 
public function play2(param:NetStreamPlayOptions):void

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

몇 가지 재생 옵션을 사용하여 미디어 파일의 재생을 시작합니다.

이 메서드는 NetStream.play()의 향상된 버전입니다. play() 메서드와 마찬가지로 play2() 메서드는 미디어 파일의 재생을 시작하거나 미디어 파일을 대기열에 추가하여 재생 목록을 만듭니다. Flash Media Server와 함께 사용하는 경우 서버에서 다른 미디어 파일로 전환하도록 요청하기도 합니다. 이러한 전환은 클라이언트 응용 프로그램에서 매끄럽게 수행됩니다.

play2() 메서드를 사용하면 다른 비트율로 인코딩된 같은 내용의 스트림으로 전환하거나 재생 목록에서 스트림을 교환할 수 있습니다. NetStreamInfo 클래스를 사용하여 네트워크 조건을 모니터링하고 데이터를 기반으로 스트림을 전환합니다. 다른 기능의 클라이언트에서 사용할 수 있도록 스트림을 전환할 수도 있습니다. ActionScript를 사용하여 스트림을 전환하는 것을 동적 스트리밍이라고 합니다. 자세한 내용은 www.adobe.com/go/learn_fms_devguide_kr의 "Adobe Flash Media Server 개발자 안내서"에서 "동적 스트리밍"을 검색하십시오. Adobe는 NetStream 클래스를 확장하는 DynamicStream이라는 사용자 정의 ActionScript 클래스를 작성했습니다. DynamicStream 클래스를 사용하면 네트워크 조건을 검색하는 코드를 직접 작성하지 않고 응용 프로그램에서 동적 스트리밍을 구현할 수 있습니다. 동적 스트리밍 코드를 직접 작성하는 경우에도 DynamicStream 클래스를 참조하여 구현 작업을 할 수 있습니다. www.adobe.com/go/fms_dynamicstreaming_kr에서 클래스와 클래스 설명서를 다운로드합니다.

매개 변수

param:NetStreamPlayOptions

참고 사항

AIR-only preloadEmbeddedData()메서드 
public function preloadEmbeddedData(param:NetStreamPlayOptions):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.5

로컬로 저장된 미디어 파일에서 DRM 메타데이터를 추출합니다.

preloadEmbeddedMetaData()를 오프라인 재생에 필요한 DRM 바우처를 다운로드 및 호출하는 첫 번째 단계로 사용합니다. 미디어 파일에 DRM 메타데이터가 포함되어 있으면DRMContentData 객체가 NetStream 클라이언트 onDRMContentData 함수로 전달됩니다. 이 DRMContentData 객체에는 내용을 재생하는 데 필요한 바우처를 얻기 위한 정보가 포함되어 있습니다. DRMContentData 객체를 DRMManager loadVoucher() 메서드로 전달하여 바우처를 다운로드합니다.

DRM 바우처를 미리 로드하는 단계는 다음과 같습니다.

참고: 메타데이터를 미리 로드하고 내용을 재생하는 두 경우에 동일한 NetStream 객체를 사용하는 경우 재생을 시작하기 전에 미리 로드하는 작업에서 생성되는 onPlayStatus 호출을 기다려야 합니다.

다운로드한 바우처는 로컬 캐시에 저장됩니다. 내용을 온라인으로 재생할 때도 바우처가 다운로드되어 캐시에 저장됩니다. DRM으로 보호되는 내용 파일이 표시되면 로컬 저장소에서 캐시된 바우처가 검색됩니다. DRMManager를 사용하여 바우처 캐시를 관리합니다.

참고: HTTP, HTTPS 또는 RTMP 연결을 통해 DRM 메타데이터를 미리 로드할 수는 없습니다. 파일 시스템에 저장된 파일에서만 메타데이터를 미리 로드할 수 있습니다.

매개 변수

param:NetStreamPlayOptions — 내용 파일 처리 중 사용할 옵션을 설명하는 NetStreamPlayOptions입니다.

참고 사항

publish()메서드 
public function publish(name:String = null, type:String = null):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

클라이언트에서 Flash Media Server로 스트리밍 오디오, 비디오 및 텍스트 메시지를 보내고 전송 중 스트림을 기록하기도 합니다. 이 메서드는 지정된 스트림의 배급자만 사용할 수 있습니다.

FLV 또는 MPEG-4 형식으로 파일을 기록할 수 있습니다. 파일을 MPEG-4 형식으로 기록하는 경우에는 병합 도구를 사용하여 다른 응용 프로그램에서 파일을 편집 또는 재생해야 합니다. 이러한 도구를 다운로드하려면 www.adobe.com/go/learn_fms_flattener_kr을 참조하십시오.

이미 배급되어 기록된 스트림을 재생할 때는 이 메서드를 사용하지 마십시오. 스트림을 재생하려면 NetStream.play() 메서드를 호출합니다.

var subscribeNS:NetStream = new NetStream(myNetConnection);
  subscribeNS.play("streamToPlay");

Flash Media Server에서 스트림을 기록할 때는 파일을 만들어 서버에 있는 응용 프로그램 디렉토리의 하위 디렉토리에 저장합니다. 각 스트림은 그 이름이 NetConnection.connect()에 전달된 응용 프로그램 인스턴스 이름과 일치하는 디렉토리에 저장됩니다. 서버가 이 디렉토리를 자동으로 만들기 때문에 사용자가 각 응용 프로그램 인스턴스마다 하나씩 만들 필요가 없습니다. 예를 들어 다음 코드에서는 응용 프로그램 디렉토리에서 lectureSeries라는 이름의 디렉토리에 저장된 응용 프로그램의 특정 인스턴스에 연결하는 방법을 보여 줍니다. /yourAppsFolder/lectureSeries/streams/Monday라는 하위 디렉토리에 lecture.flv라는 이름의 파일이 저장됩니다.

var myNC:NetConnection = new NetConnection();
  myNC.connect("rtmp://server.domain.com/lectureSeries/Monday");
  var myNS:NetStream = new NetStream(myNC);
  myNS.publish("lecture", "record");

다음 예제에서는 동일한 응용 프로그램의 다른 인스턴스에 연결하지만 동일한 배급 명령을 실행하는 방법을 보여 줍니다. lecture.flv라는 파일이 /yourAppsFolder/lectureSeries/streams/Tuesday라는 하위 디렉토리에 저장됩니다.

var myNC:NetConnection = new NetConnection();
  myNC.connect("rtmp://server.domain.com/lectureSeries/Tuesday");
  var myNS:NetStream = new NetStream(myNC);
  myNS.publish("lecture", "record");

name 속성에 전달한 값과 일치하는 인스턴스 이름 값을 전달하지 않으면 /yourAppsFolder/appName/streams/_definst_라는 하위 디렉토리에 저장됩니다. 인스턴스 이름 사용에 대한 자세한 내용은 NetConnection.connect() 메서드를 참조하십시오. 비디오 파일 재생에 대한 자세한 내용은 NetStream.play() 메서드를 참조하십시오.

Flash Media Server 응용 프로그램 클라이언트가 publish()를 호출하면 응용 프로그램은 onPublish 이벤트를 수신합니다. 응용 프로그램은 이 이벤트를 서버측 스크립트에서 처리해야 합니다. 배급을 중지하려면 NetStream.close()를 호출합니다. 클라이언트가 배급을 중단하면 응용 프로그램은 onUnpublish 이벤트를 수신하게 됩니다. 자세한 내용은 Flash Media Server 서버측 ActionScript 언어 참조 설명서를 참조하십시오.

이 메서드는 서로 다른 여러 정보 객체로 netStatus 이벤트를 전달할 수 있습니다. 예를 들어, 누군가가 이미 지정된 이름의 스트림에서 배급 중인 경우 NetStream.Publish.BadName이라는 코드 속성으로 netStatus 이벤트가 전달됩니다. 자세한 내용은 netStatus 이벤트를 참조하십시오.

매개 변수

name:String (default = null) — 스트림을 식별하는 문자열입니다. 이 스트림을 구독하는 클라이언트는 NetStream.play() 호출 시 이 동일한 이름을 전달해야 합니다. 스트림 이름에 "/"를 붙이지 마십시오. 예를 들어 스트림 이름을 "bolero/"와 같이 사용하지 마십시오.

다음 표에 설명된 형식으로 파일을 제작할 수 있습니다. 구문은 파일 형식에 따라 다릅니다.

파일 형식구문예제
FLV파일 이름 확장명 없이 문자열로 스트림 이름을 지정합니다. ns.publish("myFLVStream");
MP3 또는 ID3 파일 이름 확장명 없이 각각 접두어 mp3: 또는 id3:를 붙여 문자열로 스트림 이름을 지정합니다. ns.publish("mp3:myMP3Stream"); ns.publish("id3:myID3data");
MPEG-4 기반 파일(예: F4V, MP4) 파일 이름 확장명과 함께 또는 파일 이름 확장명 없이 접두어 mp4:를 사용하여 문자열로 스트림 이름을 지정합니다. 이 접두어는 파일에 MPEG-4 Part 14 컨테이너 형식 내 H.264로 인코딩된 비디오 및 AAC로 인코딩된 오디오가 포함된 것을 Flash Media Server에 알려줍니다. ns.publish("mp4:myVideo.f4v") ns.publish("mp4:myVideo.mp4"); ns.publish("mp4:myVideo");

 
type:String (default = null) — 스트림 배급 방법을 지정하는 문자열입니다. 유효한 값은 "record", "append" 및 "live"입니다. 기본값은 "live"입니다.
  • "record"를 전달하면 Flash Media Server는 실시간 데이터를 제작하여 기록하고, name 매개 변수에 전달된 값과 일치하는 이름의 새 파일에 기록된 데이터를 저장합니다. 파일이 이미 존재하는 경우 덮어씁니다.
  • "append"를 전달하면 Flash Media Server가 실시간 데이터를 제작하여 기록하고 name 매개 변수에 전달된 값과 일치하는 이름의 새 파일에 기록된 데이터를 추가합니다. name 매개 변수와 일치하는 파일이 없으면 해당 파일이 만들어집니다.
  • 이 매개 변수를 생략하거나 "live"를 전달하면 Flash Media Server는 기록하지 않고 실시간 데이터를 제작합니다. name 매개 변수에 전달된 값과 일치하는 이름의 파일이 존재하면 이는 삭제됩니다.

참고 사항

receiveAudio()메서드 
public function receiveAudio(flag:Boolean):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

입력 오디오를 스트림에서 재생할지 여부를 지정합니다. 이 메서드는 지정된 스트림의 배급자가 아니라 해당 스트림을 구독한 클라이언트만 사용할 수 있습니다.

이 메서드는 주로 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오.

NetStream.play() 메서드를 호출하기 이전 또는 이후에 이 메서드를 호출하고 스트림 수신을 실제로 시작할 수 있습니다. 예를 들어 사용자가 입력 오디오 스트림의 음소거 또는 음소거 취소를 위해 클릭하는 버튼에 이 메서드를 연결할 수 있습니다.

지정된 스트림에 오디오 데이터만 포함된 경우, 이 메서드에 false 값을 전달하면 NetStream.time이 더 이상 증가하지 않습니다.

매개 변수

flag:Boolean — 입력 오디오가 스트림에서 재생되는지(true) 그렇지 않은지(false)를 지정합니다. 기본값은 true입니다.

receiveVideo()메서드 
public function receiveVideo(flag:Boolean):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

입력 비디오를 스트림에서 재생할지 여부를 지정합니다. 이 메서드는 지정된 스트림의 배급자가 아니라 해당 스트림을 구독한 클라이언트만 사용할 수 있습니다.

이 메서드는 주로 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오.

NetStream.play() 메서드를 호출하기 이전 또는 이후에 이 메서드를 호출하고 스트림 수신을 실제로 시작할 수 있습니다. 예를 들어, 입력 비디오 스트림을 표시하거나 숨기기 위해 사용자가 누르는 버튼에 이 메서드를 연결할 수 있습니다.

지정된 스트림에 비디오 데이터만 포함된 경우, 이 메서드에 false 값을 전달하면 NetStream.time은 더 이상 증가하지 않습니다.

매개 변수

flag:Boolean — 입력 비디오가 이 스트림에서 재생되는지 (true) 그렇지 않은지 (false)를 지정합니다. 기본값은 true입니다.

receiveVideoFPS()메서드 
public function receiveVideoFPS(FPS:Number):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

입력 비디오의 프레임 속도를 지정합니다. 이 메서드는 지정된 스트림의 배급자가 아니라 해당 스트림을 구독한 클라이언트만 사용할 수 있습니다.

이 메서드는 주로 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오.

NetStream.play() 메서드를 호출하기 이전 또는 이후에 이 메서드를 호출하고 스트림 수신을 실제로 시작할 수 있습니다. 예를 들어, 사용자가 입력 비디오 프레임 속도를 설정할 수 있는 텍스트 필드에 이러한 메서드를 연결할 수 있습니다.

비디오 수신을 중지하려면 FPS에 0을 전달합니다. 현재 프레임 속도를 확인하려면 NetStream.currentFPS를 사용합니다.

비디오의 프레임 속도를 제한하기 위해 FPS 매개 변수에 값을 전달하면 Flash Media Server는 비디오의 무결성을 유지하면서 프레임 속도를 줄이려고 합니다. 서버는 모든 두 키프레임 간에 필요한 속도를 만족시키기 위해 필요한 최소 프레임 수를 전송합니다. 그러나 I-프레임 또는 중간 프레임은 연속적으로 전송되어야 합니다. 그렇지 않으면 비디오가 손상됩니다. 따라서 필요한 프레임 수가 키프레임 뒤에 즉시 연속적으로 전송됩니다. 프레임이 일정하게 분배되지 않더라도 모션은 지연으로 인해 세그먼트에서 자연스럽게 보입니다.

매개 변수

FPS:Number — 입력 비디오의 초당 프레임 재생 속도를 지정합니다.

AIR-only resetDRMVouchers()메서드 
public static function resetDRMVouchers():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0

로컬로 캐시된 DRM(디지털 권한 관리) 바우처 데이터를 모두 삭제합니다.

사용자가 보호된 내용에 액세스할 수 있으려면 응용 프로그램에 필요한 바우처를 미디어 권한 서버에서 다시 다운로드해야 합니다. 이 함수를 호출하는 것은 DRMManager 객체의 resetDRMVouchers() 함수를 호출하는 것과 동일합니다.


오류
IOError — 바우처 데이터는 삭제할 수 없습니다.

참고 사항


예제

다음 예제에서는 모든 DRM 바우처를 재설정합니다.
NetStream.resetDRMVouchers();
resume()메서드 
public function resume():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

정지했던 비디오 스트림의 재생을 다시 시작합니다. 비디오가 이미 재생 중인 경우 이 메서드를 호출하면 아무 것도 수행되지 않습니다.

참고 사항

seek()메서드 
public function seek(offset:Number):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

지정된 위치와 가장 가까운 키프레임(비디오 업계에서는 I-프레임이라고도 부름)을 찾습니다. 키프레임은 스트림 시작으로부터 초 단위로 오프셋만큼 떨어진 곳에 위치합니다.

비디오 스트림은 보통 두 가지 유형의 프레임, 즉 키프레임(또는 I-프레임)과 P-프레임으로 인코딩됩니다. 키프레임은 전체 이미지를 포함하고 있는 반면 P-프레임은 키프레임 사이의 추가 비디오 정보를 제공하는 중간 프레임입니다. 비디오 스트림은 보통 매 10에서 50프레임마다 하나의 키프레임을 가집니다.

Flash Media Server에서 seek() 비헤이비어는 EnhancedSeek 요소의 값에 의해 제어되며 이 요소는 Application.xml 구성 파일에 있습니다.

EnhancedSeekfalse일 경우, 서버는 정상적인 검색 모드를 사용합니다. 정상적인 검색 모드에서 서버는 가장 가까운 키프레임에서 스트리밍을 시작합니다. 예를 들어 비디오의 키프레임이 0초와 10초에 있는 경우 4초를 검색하면 0초의 키프레임을 사용하여 4초부터 재생됩니다. 다음 키프레임이 있는 10초에 도달할 때까지 비디오는 고정 상태를 유지합니다. 좀 더 나은 검색 결과를 얻으려면 키프레임 간격을 줄일 필요가 있습니다. 정상적인 검색 모드에서는 키 프레임 사이에 있는 지점에서 비디오를 시작할 수 없습니다.

EnhancedSeek가 기본값인 true일 경우, 서버는 이전의 키프레임과 중간의 P-프레임을 기초로 offset에서 새로운 키프레임을 생성합니다. 그러나, 이 경우 서버에 대한 처리 부하가 높아지기 때문에 생성된 키프레임에 왜곡이 발생할 수 있습니다. 비디오 코덱이 On2일 경우, 검색 지점 앞에 있는 키프레임과 이 키프레임과 검색 지점 사이의 P-프레임이 클라이언트로 전송됩니다.

매개 변수

offset:Number — 비디오 파일에서 이동할 근사적인 시간(초) 값입니다. Flash Media Server가 있을 경우 <EnhancedSeek>이 Application.xml 구성 파일(기본값)에서 true로 설정되어 있다면 서버는 offset에서 키프레임을 생성합니다.
  • 스트림의 시작으로 돌아가려면 offset으로 0을 전달합니다.
  • 스트림의 시작에서 순방향으로 검색하려면 앞으로 진행할 초 수를 전달합니다. 예를 들어 재생 헤드를 시작 위치로부터 15초 지난 위치로(또는 키프레임을 15초 전으로) 이동하려면 myStream.seek(15)를 사용합니다.
  • 현재 위치를 기준으로 찾으려면 NetStream.time + n 또는 NetStream.time - n을 전달하여 현재 위치를 기준으로 각각 n초 앞 또는 뒤로 찾습니다. 예를 들어 현재 위치에서 20초 되감으려면 NetStream.seek(NetStream.time - 20)을 사용합니다.

참고 사항

send()메서드 
public function send(handlerName:String, ... arguments):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

배급된 스트림에서 모든 구독 클라이언트에게 메시지를 보냅니다. 이 메서드는 오직 지정된 스트림의 배급자만 사용할 수 있으며 Flash Media Server와 함께 사용하기 위한 것입니다. 이 메시지를 처리하고 응답하려면 NetStream 객체에 ns.HandlerName과 같은 핸들러를 만듭니다.

Flash Player 또는 AIR에서는 메서드나 그 데이터, 객체 프로토타입 변수 또는 비열거형 변수를 직렬화하지 않습니다. 표시 객체의 경우 Flash Player 또는 AIR는 경로를 직렬화하지만 데이터는 직렬화하지 않습니다.

send() 메서드를 호출해서 Flash Media Server로 보내는 실시간 스트림에 데이터 키프레임을 추가할 수 있습니다. 데이터 키프레임은 배급자가 실시간 스트림에 추가하는 메시지입니다. 데이터 키프레임은 보통 카메라 및 마이크에서 스트림용 데이터를 캡처하기 전에 메타데이터를 실시간 스트림에 추가하는 용도로 사용됩니다. 배급자는 실시간 스트림 배급 중에 언제든지 데이터 키프레임을 추가할 수 있습니다. 배급자가 서버에 연결되어 있는 동안에는 데이터 키프레임이 서버 메모리에 저장됩니다.

데이터 키프레임이 추가되기 전에 실시간 스트림에 등록된 클라이언트는 추가되는 즉시 키프레임을 수신합니다. 데이터 키프레임이 추가된 후에 실시간 스트림에 등록된 클라이언트는 등록될 때 키프레임을 수신합니다.

메타데이터의 키프레임을 Flash Media Server로 보내는 실시간 스트림에 추가하려면 @setDataFrame을 핸들러 이름으로 사용하고 뒤에 다음과 같은 두 개의 추가 인수를 사용합니다.

var ns:NetStream = new NetStream(nc);
  ns.send("@setDataFrame", "onMetaData", metaData);

@setDataFrame 인수는 Flash Media Server에 내장되는 특수한 핸들러를 나타냅니다. 다음 onMetaData 인수는 클라이언트 응용 프로그램에 있는 콜백 함수의 이름으로 onMetaData 이벤트를 확인하고 메타데이터를 검색합니다. 세 번째 항목인 metaDataObject 또는 Array의 인스턴스로 메타데이터 값을 정의하는 속성을 가집니다. 배급자는 구독자가 쉽게 이해할 수 있는 속성 이름을 설정해야 합니다. 제안된 속성 이름 목록은 Flash Media Server 설명서를 참조하십시오.

@clearDataFrame을 사용해서 이미 스트림에 설정된 메타데이터의 키프레임을 지웁니다.

ns.send("@clearDataFrame", "onMetaData");

매개 변수

handlerName:String — 전송할 메시지입니다. 또한 메시지를 수신할 ActionScript 핸들러 이름입니다. 핸들러 이름은 단일 레벨만 가능하며(즉 부모/자식 형식이 될 수 없음), 스트림 객체에 상대적입니다. 예약어를 핸들러 이름으로 사용하지 마십시오. 예를 들어 "close"를 핸들러 이름으로 사용하면 메서드가 실패합니다. Flash Media Server가 있을 경우 @setDataFrame을 사용해 메타데이터 키프레임을 실시간 스트림에 추가하거나 @clearDataFrame을 사용해서 키프레임을 제거합니다.
 
... arguments — 어떤 유형도 가능한 선택적 인수입니다. 이들은 직렬화된 후 연결을 통해 전송되며 수신 측 핸들러는 이와 동일한 순서로 수신합니다. 매개 변수가 순환 객체(예: 순환 연결 목록)일 경우, 직렬기가 참조를 올바르게 처리합니다. Flash Media Server가 있을 경우 @setDataFrame이 첫 번째 인수라면 onMetaData를 두 번째 인수로 사용합니다. 세 번째 인수의 경우 속성으로 설정된 메타데이터를 가진 Object 또는 Array 인스턴스를 전달합니다. 제안된 속성 이름 목록은 Flash Media Server 설명서를 참조하십시오. 첫 번째 인수가 @clearDataFrame인 경우 onMetaData를 두 번째 인수로 사용하며 세 번째 인수는 없습니다.

참고 사항


예제

다음 예제는 두 개의 NetStream 객체를 만듭니다. 하나는 실시간 스트림을 서버로 배급하기 위해 사용되는 동안 다른 하나는 스트림에 등록을 합니다.
package {
   import flash.display.Sprite;
   import flash.net.NetConnection;
   import flash.net.NetStream;
   import flash.events.NetStatusEvent;
   import flash.media.Video;
   import flash.utils.setTimeout;

 
   public class TestExample extends Sprite
   {
     var nc:NetConnection = new NetConnection();
     var ns1:NetStream;
     var ns2:NetStream;
     var vid:Video = new Video(300,300);
     var obj:Object = new Object();
 
     public function TestExample() {
        nc.objectEncoding = 0;
        nc.addEventListener("netStatus", onNCStatus);
        nc.connect("rtmp://localhost/FlashVideoApp");
        addChild(vid); 
     }
  
     function onNCStatus(event:NetStatusEvent):void {
       switch (event.info.code) {
           case "NetConnection.Connect.Success":
               trace("You've connected successfully");
               ns1 = new NetStream(nc);
               ns2 = new NetStream(nc);
               
               ns1.client = new CustomClient();
               ns1.publish("dummy", "live");
    
               ns2.play("dummy");
               ns2.client = new CustomClient();
               vid.attachNetStream(ns2);
               setTimeout(sendHello, 3000);
               break;
              
           case "NetStream.Publish.BadName":
               trace("Please check the name of the publishing stream" );
               break;
        }   
     }

     function sendHello():void {
         ns1.send("myFunction", "hello");
     }       
   }
 }
 
 class CustomClient {
    public function myFunction(event:String):void {
       trace(event);
    }
 }

다음 예제는 메타데이터를 만들어서 실시간 스트림에 추가합니다.
private function netStatusHandler(event:NetStatusEvent):void {
     switch (event.info.code) {  
        case "NetStream.Publish.Start":
            var metaData:Object = new Object();
            metaData.title = "myStream";
            metaData.width = 400;
            metaData.height = 200;
            ns.send("@setDataFrame", "onMetaData", metaData);
            ns.attachCamera( Camera.getCamera() );
            ns.attachAudio( Microphone.getMicrophone() );        
    }
}

비디오에 추가된 데이터 키프레임에 응답하려면 클라이언트는 onMetaData 이벤트 핸들러를 정의해야 합니다. onMetaData 이벤트 핸들러는 addEventListener()로 등록된 것은 아니지만, 대신 onMetaData 이름을 가진 콜백 함수입니다.
public function onMetaData(info:Object):void {
    trace("width: " + info.width);
    trace("height: " + info.height);
 }

이 예제는 서버에서 재생 목록을 만드는 방법을 보여 줍니다.
// Create a NetStream for playing
 var my_ns:NetStream = new NetStream(my_nc);
 my_video.attachNetStream(my_ns);
 
 // Play the stream record1
 my_ns.play("record1", 0, -1, true);
 
 // Switch to the stream live1 and play for 5 seconds.  
 // Since reset is false, live1 will start to play after record1 is done.
 my_ns.play("live1", -1 , 5, false);

기록된 비디오 파일이 데이터 메시지만 포함하고 있을 경우 원래 기록된 속도로 비디오를 재생하거나 데이터 메시지를 한꺼번에 가져올 수 있습니다.
//To play at normal speed
 var my_ns:NetStream = new NetStream(my_nc);
 my_ns.play("log", 0, -1);
 
 //To get the data messages all at once
 my_ns.play("log", 0, -1, 3);
AIR-only setDRMAuthenticationCredentials()메서드 
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0

기본 암호화된 내용을 보는 데 필요한 DRM 인증 자격 증명을 설정합니다.

setDRMAuthenticationCredentials() 메서드는 내용 공급자 또는 프록시 서버에서 인식 및 허용되는 것과 동일한 자격 증명을 제공해야 합니다. 이는 사용자가 내용을 볼 수 있는 권한을 얻기 위해 사용하는 것과 동일한 자격 증명입니다.

매개 변수

userName:String — 유효한 사용자 이름 자격 증명입니다.
 
password:String — 제공된 사용자 이름에 해당하는 암호 자격 증명입니다.
 
type:String — 제공할 인증 자격 증명 유형을 지정하는 문자열입니다. 유효한 값은 "drm""proxy"입니다. 기본값은 "drm"입니다.
  • "drm" 인증 유형을 사용하면 제공된 자격 증명이 FMRMS(Flash Media Rights Management Server)에 대해 인증됩니다.
  • "proxy" 인증 유형을 사용하면 제공된 자격 증명이 프록시 서버에 대해 인증되며 프록시 서버에서 요구하는 자격 증명과 일치해야 합니다. 예를 들어 기업에서 사용자가 인터넷에 액세스하기 전에 이러한 단계를 요구하는 경우 "proxy" 옵션을 사용하면 응용 프로그램에서 프록시 서버에 대해 인증을 수행합니다. 익명 인증을 사용하는 경우가 아니라면 프록시 인증 후에도 사용자가 바우처를 확보하여 내용을 재생하기 위해서는 FMRMS에 대해 인증해야 합니다. "drm" 옵션과 함께 setDRMAuthenticationcredentials()를 두 번 사용하여 FMRMS에 대해 인증할 수 있습니다.

참고 사항

togglePause()메서드 
public function togglePause():void

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

스트림의 재생을 일시 정지하거나 다시 시작합니다. 이 메서드를 처음 호출하면 재생을 일시 정지합니다. 그 다음 호출 시에는 재생을 다시 시작합니다. 이 메서드를 사용하면 사용자가 하나의 버튼을 눌러 재생을 일시 정지하거나 다시 시작하게 할 수 있습니다.

참고 사항

이벤트 정보
asyncError 이벤트
이벤트 객체 유형: flash.events.AsyncErrorEvent
속성 AsyncErrorEvent.type = flash.events.AsyncErrorEvent.ASYNC_ERROR

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

기본 비동기 코드에서 비동기적으로 예외가 발생할 때 전달됩니다. 서버가 정의되지 않은 클라이언트에 대한 메서드를 호출할 때 이 이벤트가 전달됩니다.

AsyncErrorEvent.ASYNC_ERROR 상수는 asyncError 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
currentTarget 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target 이벤트를 전달하는 객체입니다.
error 이벤트를 트리거한 오류입니다.

참고 사항

AIR-only drmAuthenticate 이벤트  
이벤트 객체 유형: flash.events.DRMAuthenticateEvent
속성 DRMAuthenticateEvent.type = flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0

NetStream 객체가 재생 전에 인증용 사용자 자격 증명을 요구하는 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다.

NetStream 객체의 setDRMAuthenticationCredentials() 메서드를 사용하여 사용자를 인증합니다. 사용자 인증에 실패한 경우 응용 프로그램이 인증을 재시도하고 NetStream 객체의 새 DRMAuthenticateEvent 이벤트를 전달합니다.

DRMAuthenticateEvent.DRM_AUTHENTICATE 상수는 DRMAuthenticateEvent 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
authenticationType 제공된 자격 증명을 FMRMS(Flash Media Rights Management Server) 또는 프록시 서버에 대한 인증에 사용할 수 있는지 여부를 나타냅니다.
bubbles false
cancelable false: 취소할 기본 비헤이비어가 없습니다.
header 서버에서 제공한 암호화된 내용 파일 헤더입니다.
netstream 이 이벤트를 시작한 NetStream 객체입니다.
passwordPrompt 서버에서 제공한 암호 자격 증명에 대한 프롬프트입니다.
target NetStream 객체입니다.
urlPrompt 서버에서 제공한 표시할 URL에 대한 프롬프트입니다.
usernamePrompt 서버에서 제공한 사용자 이름 자격 증명에 대한 프롬프트입니다.

참고 사항

AIR-only drmError 이벤트  
이벤트 객체 유형: flash.events.DRMErrorEvent
속성 DRMErrorEvent.type = flash.events.DRMErrorEvent.DRM_ERROR

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0

DRM(디지털 권한 관리)으로 암호화된 파일의 재생을 시도하는 NetStream 객체에 대해 DRM 관련 오류가 발생할 때 전달됩니다. 예를 들어 DRMErrorEvent 객체는 사용자 권한 부여에 실패할 때 전달됩니다. 이는 사용자가 내용을 볼 수 있는 권한을 구입하지 않았거나 내용 공급자가 보기 응용 프로그램을 지원하지 않기 때문일 수 있습니다.

DRMErrorEvent.DRM_ERROR 상수는 drmError 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
errorID 문제에 할당된 숫자 오류 코드입니다.
subErrorID 기본 문제에 대한 자세한 정보를 나타내는 오류 코드입니다.
target NetStream 객체입니다.

참고 사항

AIR-only drmStatus 이벤트  
이벤트 객체 유형: flash.events.DRMStatusEvent
속성 DRMStatusEvent.type = flash.events.DRMStatusEvent.DRM_STATUS

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0

DRM(디지털 권한 관리)으로 암호화된 내용 재생(사용자가 내용을 재생할 수 있도록 인증되고 권한이 부여된 경우)이 시작될 때 전달됩니다.

DRMStatusEvent 객체에는 오프라인에서 내용을 사용할 수 있도록 할 수 있는지 여부 또는 바우처가 만료되어 내용을 더 이상 볼 수 없게되는 시기와 같은 바우처 관련 정보가 포함됩니다.

DRMStatusEvent.DRM_STATUS 상수는 drmStatus 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
detail 상태 이벤트의 컨텍스트를 설명하는 문자열입니다.
isAnonymous 사용자가 인증 자격 증명을 제공하지 않고도 DRM 암호화로 보호된 내용을 사용할 수 있는지 여부를 나타냅니다.
isAvailableOffline DRM 암호화로 보호된 내용을 오프라인으로 사용할 수 있는지 여부를 나타냅니다.
offlineLeasePeriod 내용을 오프라인으로 볼 수 있는 나머지 일 수입니다.
policies DRM 상태 이벤트의 사용자 정의 객체입니다.
target NetStream 객체입니다.
voucherEndDate 바우처가 만료되어 사용자가 더 이상 내용을 볼 수 없는 절대 날짜입니다.
contentData 내용에 대한 DRMContentData입니다.
voucher 내용에 대한 DRMVoucher 객체입니다.
isLocal 내용이 로컬 파일 시스템에 저장되어 있는지 여부를 나타냅니다.

참고 사항

ioError 이벤트  
이벤트 객체 유형: flash.events.IOErrorEvent
속성 IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

네트워크 작업의 실패를 유발하는 입력 또는 출력 오류가 발생할 때 전달됩니다.

ioError 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
currentTarget 현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
errorID 특정 오류와 연결된 참조 번호입니다(AIR만 해당).
target 입력/출력 오류가 발생한 네트워크 객체입니다.
text 오류 메시지로 표시될 텍스트입니다.
netStatus 이벤트  
이벤트 객체 유형: flash.events.NetStatusEvent
속성 NetStatusEvent.type = flash.events.NetStatusEvent.NET_STATUS

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

NetStream 객체가 상태 또는 오류 상황을 보고할 때 전달됩니다. netStatus 이벤트에는 연결 시도 성공 또는 실패 등 이벤트에 대한 특정 정보가 포함된 정보 객체인 info 속성이 포함되어 있습니다.

netStatus 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
currentTarget 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
info 객체의 상태 또는 오류 상황을 설명하는 속성이 있는 객체입니다.
target 상태를 보고하는 NetConnection 또는 NetStream 객체입니다.

참고 사항

onCuePoint 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

비디오 파일을 재생하는 동안 포함된 큐 포인트에 도달했을 때 응답할 리스너를 설정합니다. 비디오가 특정 큐 포인트에 도달했을 때 이 리스너를 사용하여 코드에서 액션을 트리거할 수 있습니다. 이렇게 하면 응용 프로그램의 다른 액션을 비디오 재생 이벤트와 동기화할 수 있습니다. Flash Media Server가 지원하는 비디오 파일 형식에 대한 자세한 내용은 Flash Media Server 설명서를 참조하십시오.

onCuePoint는 사실상 NetStream.client 객체의 속성입니다. 이는 이벤트가 아니지만 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 이벤트 섹션의 목록에 포함되어 있습니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onCuePoint를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

관련 이벤트 리스너는 NetStream.play() 메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.

다음 유형의 큐 포인트를 비디오 파일에 포함시킬 수 있습니다.

onCuePoint 이벤트 객체는 다음과 같은 속성을 갖습니다.

속성설명
name 비디오 파일에 포함되었을 때 큐 포인트에 부여된 이름입니다.
parameters 이 큐 포인트에 대해 지정된 이름/값 쌍 문자열의 연관 배열입니다. 유효한 문자열이라면 매개 변수 이름 또는 값으로 사용할 수 있습니다.
time 재생 중에 비디오 파일에서 큐 포인트가 발생한 시간(초)입니다.
type 도달한 큐 포인트 유형으로, 내비게이션 또는 이벤트입니다.

파일을 처음 인코딩할 때 또는 Flash 제작 도구에서 비디오 가져오기 마법사를 사용하여 비디오 클립을 가져올 때 비디오 파일에서 큐 포인트를 정의할 수 있습니다.

또한 onMetaData 이벤트는 비디오 파일에서 큐 포인트에 대한 정보를 검색합니다. 그러나 onMetaData 이벤트는 비디오 재생이 시작되기 전에 모든 큐 포인트에 대한 정보를 가져옵니다. onCuePoint 이벤트는 재생 중 한 큐 포인트에 대해 지정된 시간에 그 큐 포인트에 대한 정보를 수신합니다.

일반적으로 특정 큐 포인트가 발생한 시간에 코드가 큐 포인트에 응답하게 하려면 onCuePoint 이벤트를 사용하여 코드에서 일부 액션을 트리거합니다.

onMetaData 이벤트에 제공된 큐 포인트 목록을 사용하여 사용자가 비디오 스트림의 미리 정의된 포인트에서 비디오 재생을 시작하게 할 수 있습니다. 큐 포인트의 time 속성 값을 NetStream.seek() 메서드에 전달하여 해당 큐 포인트에서 비디오를 재생합니다.

참고 사항

AIR-only onDRMContentData 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.5

AIR이 미디어 파일에 포함된 DRM 내용 메타데이터를 추출할 때 응답할 리스너를 설정합니다.

DRMContentData 객체에는 DRM으로 보호된 미디어 파일을 재생하는 데 필요한 바우처를 얻기 위한 정보가 포함되어 있습니다. 이 정보를 통해 DRMManager 클래스를 사용하여 바우처를 다운로드합니다.

onDRMContentData는 사실상 NetStream.client 객체의 속성입니다. 이벤트는 아니지만 로컬 미디어 파일에서 포함된 데이터를 미리 로드할 때 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onDRMContentData를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

참고 사항

onImageData 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.115.0

Flash Player가 재생 중인 미디어 파일에 포함된 이미지 데이터를 바이트 배열로 받았을 때 응답할 리스너를 설정합니다. 이미지 데이터에서는 JPEG, PNG 또는 GIF 내용을 생성할 수 있습니다. flash.display.Loader.loadBytes() 메서드를 사용하여 바이트 배열을 표시 객체로 로드합니다.

onImageData는 사실상 NetStream.client 객체의 속성입니다. 이는 이벤트가 아니지만 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 이벤트 섹션의 목록에 포함되어 있습니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onImageData를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

관련 이벤트 리스너는 NetStream.play() 메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.

onImageData 이벤트 객체에는 AMF0 데이터 채널을 통해 송신한 이미지 데이터가 바이트 배열로 포함되어 있습니다.


예제

이 예제의 코드에서는 Netstream.client 속성을 사용하여 onTextDataonImageData에 대한 콜백 함수를 처리합니다. onImageDataHandler() 함수에서 onImageData 이벤트 객체 imageData를 사용하여 바이트 배열을 저장합니다. 또한 onTextDataHandler() 함수에서 onTextData 이벤트 객체 textData를 사용하여 텍스트 데이터의 각 부분을 저장합니다. 데이터의 각 부분은 textData 객체의 속성입니다.

미디어 파일의 실제 위치를 코드에서의 "yourURL" 위치에 대한 텍스트 또는 이미지 메타데이터로 대체해야 합니다.

또한 사용자 정의 클래스를 사용하여 이미지 및 텍스트 데이터를 처리할 수 있습니다. 자세한 내용 및 예제는 Handling metadata and cue points in Flash video 기사를 참조하십시오.

package {
    import flash.display.*;
    import flash.net.*;
    import flash.media.*;
    import flash.system.*;
    import flash.events.*;

        public class OnTextDataExample extends Sprite {
                                              
            public function OnTextDataExample():void {

                var customClient:Object = new Object();
                customClient.onImageData = onImageDataHandler;           
                customClient.onTextData = onTextDataHandler;               

                var my_nc:NetConnection = new NetConnection();
                my_nc.connect(null);
                var my_ns:NetStream = new NetStream(my_nc);
                my_ns.play("yourURL");
                my_ns.client = customClient;

                var my_video:Video = new Video();
                my_video.attachNetStream(my_ns);
                addChild(my_video);

            }

            public function onImageDataHandler(imageData:Object):void {

                trace("imageData length: " + imageData.data.length);
                var imageloader:Loader = new Loader();           
                imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object.
                addChild(imageloader);
            }

    
            public function onTextDataHandler(textData:Object):void {

                trace("--- textData properties ----");
                var key:String;

                for (key in textData) {
                    trace(key + ": " + textData[key]);
                }
            }

        }

}

참고 사항

onMetaData 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

Flash Player가 재생 중인 비디오에 포함된 설명 정보를 받았을 때 응답할 리스너를 설정합니다. Flash Media Server가 지원하는 비디오 파일 형식에 대한 자세한 내용은 Flash Media Server 설명서를 참조하십시오.

onMetaData는 사실상 NetStream.client 객체의 속성입니다. 이는 이벤트가 아니지만 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 이벤트 섹션의 목록에 포함되어 있습니다. 자세한 내용은 NetStream 클래스 설명과 NetStream.client 속성을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onMetaData를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

Flash Video Exporter 유틸리티(버전 1.1 이상)는 비디오 재생 시간, 만든 날짜, 데이터 속도 및 기타 정보를 비디오 파일 자체에 포함시킵니다. 다른 비디오 인코더는 다른 메타데이터 집합을 포함시킵니다.

관련 이벤트 리스너는 NetStream.play() 메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.

스트림 메타데이터에 포함된 재생 시간 값은 실제 재생 시간과 비슷하지만 정확하게 일치하지 않는 경우가 많습니다. 즉 재생 헤드가 비디오 스트림의 끝에 있을 때 실제 재생 시간과 NetStream.time 속성 값이 항상 일치하는 것은 아닙니다.

onMetaData 이벤트 핸들러에 전달된 이벤트 객체는 데이터의 각 부분에 대한 속성을 하나씩 포함합니다.

참고 사항

onPlayStatus 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9

NetStream 객체가 스트림 재생을 완료했을 때 응답할 리스너를 설정합니다. 관련 이벤트 객체에서는 netStatus 이벤트를 통해 반환되는 내용 이외에 추가로 정보를 제공합니다. NetStream 객체가 재생 목록 중 한 스트림에서 다른 스트림으로 전환했을 때(정보 객체 NetStream.Play.Switch에 의해 표시됨) 또는 NetStream 객체가 재생을 끝까지 마쳤을 때(정보 객체 NetStream.Play.Complete에 의해 표시됨) 이 속성을 사용하여 코드에서 액션을 트리거할 수 있습니다.

onPlayStaus는 사실상 NetStream.client 객체의 속성입니다. 이는 이벤트가 아니지만 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 이벤트 섹션의 목록에 포함되어 있습니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onPlayStatus를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

이 이벤트는 다음 속성을 갖는 정보 객체를 반환할 수 있습니다.

Code 속성Level 속성의미
NetStream.Play.Switch "status" 구독자가 재생 목록 중 한 스트림에서 다른 스트림으로 전환하는 중입니다.
NetStream.Play.Complete "status" 재생이 완료되었습니다.
NetStream.Play.TransitionComplete "status" 스트림 비트율이 전환되어 구독자가 새 스트림으로 전환하는 중입니다.

참고 사항

onTextData 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0 Flash Player 9.0.115.0

Flash Player가 재생 중인 미디어 파일에 포함된 텍스트 데이터를 받았을 때 응답할 리스너를 설정합니다. 텍스트 데이터는 UTF-8 형식이며 3GP Timed Text 사양을 기반으로 하는 형식에 대한 정보를 포함할 수 있습니다.

onTextData는 사실상 NetStream.client 객체의 속성입니다. 이는 이벤트가 아니지만 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 이벤트 섹션의 목록에 포함되어 있습니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onTextData를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

관련 이벤트 리스너는 NetStream.play() 메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.

onTextData 이벤트 객체에는 텍스트 데이터의 각 부분에 대한 하나의 속성이 포함되어 있습니다.


예제

이 예제의 코드에서는 Netstream.client 속성을 사용하여 onTextDataonImageData에 대한 콜백 함수를 처리합니다. onImageDataHandler() 함수에서 onImageData 이벤트 객체 imageData를 사용하여 바이트 배열을 저장합니다. 또한 onTextDataHandler() 함수에서 onTextData 이벤트 객체 textData를 사용하여 텍스트 데이터의 각 부분을 저장합니다. 데이터의 각 부분은 textData 객체의 속성입니다.

미디어 파일의 실제 위치를 코드에서의 "yourURL" 위치에 대한 텍스트 또는 이미지 메타데이터로 대체해야 합니다.

또한 사용자 정의 클래스를 사용하여 이미지 및 텍스트 데이터를 처리할 수 있습니다. 자세한 내용 및 예제는 Handling metadata and cue points in Flash video 기사를 참조하십시오.

package {
    import flash.display.*;
    import flash.net.*;
    import flash.media.*;
    import flash.system.*;
    import flash.events.*;

        public class OnTextDataExample extends Sprite {
                                              
            public function OnTextDataExample():void {

                var customClient:Object = new Object();
                customClient.onImageData = onImageDataHandler;           
                customClient.onTextData = onTextDataHandler;               

                var my_nc:NetConnection = new NetConnection();
                my_nc.connect(null);
                var my_ns:NetStream = new NetStream(my_nc);
                my_ns.play("yourURL");
                my_ns.client = customClient;

                var my_video:Video = new Video();
                my_video.attachNetStream(my_ns);
                addChild(my_video);

            }

            public function onImageDataHandler(imageData:Object):void {

                trace("imageData length: " + imageData.data.length);
                var imageloader:Loader = new Loader();           
                imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object.
                addChild(imageloader);
            }

    
            public function onTextDataHandler(textData:Object):void {

                trace("--- textData properties ----");
                var key:String;

                for (key in textData) {
                    trace(key + ": " + textData[key]);
                }
            }

        }

}

참고 사항

onXMPData 이벤트  

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

Flash Player에서 재생 중인 비디오에 포함된 Adobe XMP(Extensible Metadata Platform) 관련 정보를 받을 때 응답할 리스너를 설정합니다. Flash Media Server가 지원하는 비디오 파일 형식에 대한 자세한 내용은 Flash Media Server 설명서를 참조하십시오.

onXMPData는 사실상 NetStream.client 객체의 속성입니다. 이는 이벤트가 아니지만 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 이벤트 섹션의 목록에 포함되어 있습니다. 자세한 내용은 NetStream 클래스 설명과 NetStream.client 속성을 참조하십시오. addEventListener() 메서드 또는 다른 어떠한 EventDispatcher 메서드도 onMetaData를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

관련 이벤트 리스너는 NetStream.play() 메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.

onXMPData() 이벤트 처리 함수에 전달되는 객체에는 문자열인 data 속성이 하나 있습니다. 이 문자열은 최상위 UUID 상자에서 생성됩니다. 최상위 상자의 128비트 UUID는 BE7ACFCB-97A9-42E8-9C71-999491E3AFAC입니다. 이 최상위 UUID 상자에는 null 종료 UTF-8 문자열로 표현된 XML 문서가 하나만 들어 있습니다.

참고 사항

AIR-only status 이벤트  
이벤트 객체 유형: flash.events.StatusEvent
속성 StatusEvent.type = flash.events.StatusEvent.STATUS

언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0

응용 프로그램에서 NetStream.play() 메서드를 호출하여 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다. 상태 코드 속성의 값은 "DRM.encryptedFLV"입니다.

status 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubbles false
cancelable false; 취소할 기본 비헤이비어가 없습니다.
code 객체의 상태에 대한 설명입니다.
currentTarget 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
level "status", "warning" 또는 "error" 등과 같은 메시지 범주입니다.
target 상태를 보고하는 객체입니다.

참고 사항

상수 정보
CONNECT_TO_FMS상수
public static const CONNECT_TO_FMS:String = "connectToFMS"

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

NetStream 인스턴스의 생성자에 매개 변수로 사용되는 정적 객체입니다. 이는 NetStream 생성자의 두 번째 매개 변수에 대한 기본값이며, 응용 프로그램에서 점진적 미디어 재생을 위해 사용되지 않습니다. 이 매개 변수를 사용하면 생성자에서 Flash Media Server 인스턴스에 연결합니다.

DIRECT_CONNECTIONS상수 
public static const DIRECT_CONNECTIONS:String = "directConnections"

언어 버전: ActionScript 3.0
런타임 버전: Flash Player 10, AIR 1.5

피어 투 피어 배급자 연결을 만듭니다. 이 문자열을 NetStream 인스턴스의 생성자에 두 번째(선택적) 매개 변수로 전달합니다. 응용 프로그램에서는 이 문자열을 사용하여 오디오 및 비디오를 클라이언트에 배급하기 위한 NetStream 연결을 만들 수 있습니다.

예제 예제 사용 방법
NetConnectionExample.as

다음 예제에서는 NetConnection 및 NetStream 클래스와 함께 Video 객체를 사용하여 FLV 파일을 로드 및 재생합니다. 이 예제를 실행하려면 videoURL에 전달된 변수와 이름 및 위치가 동일한 FLV 파일이 필요합니다. 이 경우에는 SWF 파일과 같은 디렉토리에 있는 Video.flv라는 이름의 FLV 파일이 필요합니다.

이 예제에서는 Video 및 NetStream 객체를 만들고 Video.attachNetStream()NetStream.play() 메서드를 호출하는 코드가 핸들러 함수에 배치됩니다. 핸들러는 NetConnection 객체에 대한 연결에 성공할 경우, 즉 netStatus 이벤트가 성공을 나타내는 code 속성이 있는 info 객체를 반환할 경우에만 호출됩니다. 연결에 성공할 때까지 기다렸다가 NetStream.play()를 호출하는 것이 좋습니다.

package {
    import flash.display.Sprite;
    import flash.events.NetStatusEvent;
    import flash.events.SecurityErrorEvent;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.Event;

    public class NetConnectionExample extends Sprite {
        private var videoURL:String = "Video.flv";
        private var connection:NetConnection;
        private var stream:NetStream;

        public function NetConnectionExample() {
            connection = new NetConnection();
            connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            connection.connect(null);
        }

        private function netStatusHandler(event:NetStatusEvent):void {
            switch (event.info.code) {
                case "NetConnection.Connect.Success":
                    connectStream();
                    break;
                case "NetStream.Play.StreamNotFound":
                    trace("Stream not found: " + videoURL);
                    break;
            }
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }

        private function connectStream():void {
            var stream:NetStream = new NetStream(connection);
            stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            stream.client = new CustomClient();
            var video:Video = new Video();
            video.attachNetStream(stream);
            stream.play(videoURL);
            addChild(video);
        }
    }
}

class CustomClient {
    public function onMetaData(info:Object):void {
        trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
    }
    public function onCuePoint(info:Object):void {
        trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
    }
}