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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

외부 비디오 파일을 재생하는 것은 Flash 문서에 비디오를 포함시키는 것에 비해, 성능, 메모리 관리, 비디오와 Flash 프레임 비율의 독립성과 같은 여러 가지 장점을 제공합니다.

지원하는 코덱과 파일 포맷에 관한 자세한 내용은 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() 메서드를 사용하여 이 스트림에 고유한 이름을 부여한 후 스트림을 통해 데이터를 서버로 전송하여 다른 사용자가 이를 수신할 수 있게 합니다. 또한 데이터를 배급하면서 사용자가 나중에 이를 재생할 수 있도록 기록하는 것도 가능합니다.

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

Flash Media Server와 함께 데이터 키프레임 사용 NetConnection 및 NetStream 객체를 만든 다음 NetStream.send()를 사용해서 실시간 오디오나 비디오를 서버로 스트림하는 것과 같은 메타데이터를 추가할 수 있습니다. 메타데이터는 비디오의 높이나 너비, 지속 시간, 작성자 이름 등과 같은 정보가 될 수 있습니다. 메타데이터를 정의하려면 특수한 핸들러 이름 @setDataFrameNetStream.send()의 첫 번째 인수로 사용합니다. 실시간 스트림을 수신하는 클라이언트 역시 onMetaData 이벤트 핸들러를 정의해서 스트림으로부터 메타데이터를 검색할 필요가 있습니다. 자세한 내용은 NetStream.send() 메서드를 참조하십시오.

예제를 통해 확인하십시오.

참고 사항

flash.media.Video
flash.net.NetConnection
send()
onMetaData
비디오의 기초


Public 속성
 속성다음에 의해 정의됨
  bufferLength : Number
[read-only] 현재 버퍼에 있는 데이터의 시간(초) 수입니다.
NetStream
  bufferTime : Number
스트림을 표시하기 전에 메시지를 버퍼링할 시간을 지정합니다.
NetStream
  bytesLoaded : uint
[read-only] Flash Player에 로드된 데이터의 바이트 수입니다.
NetStream
  bytesTotal : uint
[read-only] Flash Player에 로드되는 파일의 전체 바이트 크기입니다.
NetStream
  checkPolicyFile : Boolean
비디오 파일의 로드를 시작하기 전에, Flash Player에서 로드된 비디오 파일의 서버로부터 크로스 도메인 정책 파일을 다운로드해야 할지 여부를 지정합니다.
NetStream
  client : Object
콜백 메서드가 호출되는 객체를 지정합니다.
NetStream
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
  currentFPS : Number
[read-only] 표시되는 초당 프레임 수입니다.
NetStream
  liveDelay : Number
[read-only] 버퍼링이 없는 라이브 모드에서 구독 스트림의 버퍼에 들어 있는 데이터의 초 수입니다.
NetStream
  objectEncoding : uint
[read-only] 이 NetStream 객체에 대한 객체 인코딩(AMF 버전)입니다.
NetStream
 Inheritedprototype : Object
[static] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
  soundTransform : SoundTransform
이 NetStream 객체의 사운드를 제어합니다.
NetStream
  time : Number
[read-only] 재생 헤드의 위치(초)입니다.
NetStream
Public 메서드
 메서드다음에 의해 정의됨
  
지정된 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
  
play(... arguments):void
비디오 파일 재생을 시작합니다.
NetStream
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
  
publish(name:String = null, type:String = null):void
클라이언트에서 Flash Media Server로 스트리밍 오디오, 비디오 및 텍스트 메시지를 보내고 전송 중 스트림을 기록하기도 합니다.
NetStream
  
입력 오디오를 스트림에서 재생할지 여부를 지정합니다.
NetStream
  
receiveVideo(flagOrFPS:*):void
입력 비디오를 스트림에서 재생할지 여부를 지정합니다.
NetStream
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher 객체에서 리스너를 제거합니다.
EventDispatcher
  
정지했던 비디오 스트림의 재생을 다시 시작합니다.
NetStream
  
seek(offset:Number):void
지정된 위치와 가장 가까운 키프레임(비디오 업계에서는 I-프레임이라고도 부름)을 찾습니다.
NetStream
  
send(handlerName:String, ... arguments):void
배급된 스트림에서 모든 구독 클라이언트에게 메시지를 보냅니다.
NetStream
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
  
스트림의 재생을 일시 정지하거나 다시 시작합니다.
NetStream
 Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
 Inherited
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
이벤트
 이벤트 요약 다음에 의해 정의됨
 Inherited Flash Player가 운영 체제에서 포커스를 얻어 활성화될 때 전달됩니다.EventDispatcher
   기본 비동기 코드에서 비동기적으로 예외가 발생할 때 전달됩니다.NetStream
 Inherited Flash Player가 운영 체제에서 포커스를 잃고 비활성화될 때 전달됩니다.EventDispatcher
   네트워크 작업의 실패를 유발하는 입력 또는 출력 오류가 발생할 때 전달됩니다.NetStream
   NetStream 객체가 상태 또는 오류 상황을 보고할 때 전달됩니다.NetStream
   비디오 파일 재생 중 포함된 큐 포인트에 도달하면 호출됩니다.NetStream
   Flash Player에서 재생 중인 비디오 파일에 포함된 설명 정보를 수신할 때 전달됩니다.NetStream
   NetStream 객체가 스트림 재생을 완료했을 때 전달됩니다.NetStream
속성 정보
bufferLength속성
bufferLength:Number  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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


구현
    public function get bufferLength():Number

참고 사항

bufferTime속성 
bufferTime:Number  [read-write]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

스트림을 표시하기 전에 메시지를 버퍼링할 시간을 지정합니다. 예를 들어, 스트림의 처음 15초간 중단 없이 재생되게 하려면 bufferTime을 15로 설정합니다. Flash Player는 15초의 데이터가 버퍼링된 후에야 스트림 재생을 시작합니다.

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

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

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

구독 스트림의 경우 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  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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


구현
    public function get bytesLoaded():uint

참고 사항

bytesTotal속성 
bytesTotal:uint  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

Flash Player에 로드되는 파일의 전체 바이트 크기입니다.


구현
    public function get bytesTotal():uint

참고 사항

checkPolicyFile속성 
checkPolicyFile:Boolean  [read-write]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

checkPolicyFiletrue로 설정된 상태에서 NetStream.play() 메서드를 호출할 경우, Flash Player는 관련 크로스 도메인 정책 파일을 성공적으로 다운로드하거나 NetStream.play() 호출에서 지정한 객체의 다운로드를 시작하기에 앞서 그러한 정책 파일이 없음을 확인해야 합니다. 정책 파일의 존재를 확인하기 위해 Flash Player는 이 순서대로 다음 액션을 수행합니다.

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

어떤 경우에든 비디오의 서버에 적절한 정책 파일이 있고, 그 정책 파일의 위치를 기준으로 play()에 전달된 URL의 객체에 액세스할 수 있으며, 호출하는 SWF의 도메인에서 하나 이상의 <allow-access-from> 태그를 통해 해당 비디오에 액세스할 수 있도록 허용해야 Flash Player가 작동합니다.

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

checkPolicyFiletrue로 설정했지만 관련 정책 파일이 발견되지 않은 경우, 정책 파일이 필요한 작업을 수행하면 오류 메시지가 표시되고 Flash Player에서 SecurityError 예외가 발생합니다.

서버측 HTTP 리디렉션을 사용하는 URL에서 파일을 다운로드하는 경우 checkPolicyFile 사용에 주의해야 합니다. Flash Player는 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  [read-write]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

콜백 메서드가 호출되는 객체를 지정합니다. 기본 객체는 생성 중인 NetStream 객체인 this입니다. client 속성을 다른 객체로 설정하면 이 객체에서 콜백 메서드가 호출됩니다.


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

오류
TypeError client 속성은 null이 아닌 객체로 설정되어야 합니다.
currentFPS속성 
currentFPS:Number  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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


구현
    public function get currentFPS():Number
liveDelay속성 
liveDelay:Number  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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


구현
    public function get liveDelay():Number
objectEncoding속성 
objectEncoding:uint  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

연결되지 않았을 때 이 속성을 읽거나 변경하려고 시도할 경우 Flash Player에서는 예외가 발생합니다.


구현
    public function get objectEncoding():uint

참고 사항

soundTransform속성 
soundTransform:SoundTransform  [read-write]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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


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

참고 사항

time속성 
time:Number  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : 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)

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

매개 변수
connection:NetConnection — NetConnection 객체입니다.

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

참고 사항

메서드 정보
attachAudio()메서드
public function attachAudio(microphone:Microphone):void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

publish() 메서드 호출 이전 또는 이후에 이 메서드를 호출하고 실제로 전송을 시작할 수 있습니다. 오디오를 듣고 싶은 구독자는 NetStream.play() 메서드를 호출해야 합니다. 지정된 Microphone 객체의 soundTransform 속성을 통해 이 오디오 스트림의 사운드 속성을 제어할 수 있습니다.

매개 변수

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

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

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

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

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

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

매개 변수

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

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

비디오 파일 재생을 시작합니다.

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

비디오 데이터를 보려면 비디오 객체를 만들고 Video.attachNetStream() 메서드를 호출해야 합니다. 그러면 오디오가 비디오와 함께 스트리밍되거나 오디오만 포함된 파일이 자동으로 재생됩니다. 마이크에서 오디오를 스트리밍하려면 NetStream.attachAudio() 메서드를 사용하고 Microphone 객체를 통해 오디오의 특징 몇 가지를 제어합니다.

비디오 파일과 연관된 오디오를 제어하려면 DisplayObjectContainer.addChild() 메서드를 사용하여 오디오를 표시 목록상의 객체로 라우팅합니다. 그런 다음 Sound 객체를 만들어 해당 오디오의 특징 몇 가지를 제어할 수 있습니다. 자세한 내용은 DisplayObjectContainer.addChild() 메서드를 참조하십시오.

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

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

자세한 내용은 다음을 참조하십시오.

매개 변수

... arguments — 재생할 비디오 파일의 위치로서, URLRequest 객체 또는 문자열입니다. SWF 파일과 동일한 디렉토리 또는 하위 디렉토리에 저장된 로컬 비디오 파일을 재생할 수 있습니다. 그러나 상위 디렉토리로 이동할 수 없습니다.

Flash Media Server Flash Media Server에서 비디오 파일을 재생하려면 파일 확장 없이 스트림 이름을 지정해야 합니다(예: bolero). MP3 파일을 재생하려면 스트림 이름 앞에 mp3:을 사용해야 합니다. MP3 파일의 ID3 태그를 재생하려면 스트림 이름 앞에 id3:을 사용해야 합니다.

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

이름필수설명
name:Object필수 파일 확장자 없는 기록 파일의 이름, NetStream.publish(), 또는 false가 배급한 실시간 데이터의 식별자입니다. MP3 파일을 재생하려면 이름 앞에 mp3를 사용합니다. MP3 파일의 ID3 태그를 재생하려면 이름 앞에 id3:을 사용합니다. 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인 경우 재생 목록을 제거하고 모든 스트림 메시지를 즉시 반환합니다.


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

참고 사항


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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

이미 배급되어 기록된 스트림을 클라이언트에서 재생하는 데 이 메서드를 사용하지 마십시오. 대신 해당 클라이언트의 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(my_nc);
  myNS.publish("lecture", "record");
  

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

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

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

매개 변수

name:String (default = null) — 스트림을 식별하는 문자열입니다. false를 전달하면 배급 작업이 중단됩니다. 이 스트림을 구독하는 클라이언트는 NetStream.play() 호출 시 이 동일한 이름을 전달해야 합니다. 스트림 이름에 파일 확장명을 포함할 필요는 없습니다. 스트림 이름에 "/"를 붙이지 마십시오. 예를 들어 스트림 이름을 "bolero/"와 같이 사용하지 마십시오.
 
type:String (default = null) — 스트림 배급 방법을 지정하는 문자열입니다. 유효 값은 "record", "append" 및 "live"입니다. 기본값은 "live"입니다.
  • "record"를 전달하면 Flash Player가 실시간 데이터를 배급하여 기록하고 name 매개 변수에 전달된 값과 일치하는 이름의 새 파일에 기록된 데이터를 저장합니다. 서버에서 서버 응용 프로그램이 있는 디렉토리의 하위 디렉토리에 파일이 저장됩니다. 파일이 이미 존재하는 경우 덮어씁니다.
  • "append"를 전달하면 Flash Player가 실시간 데이터를 배급하여 기록하고 name 매개 변수에 전달된 값과 일치하는 이름의 파일에 기록된 데이터를 추가합니다. 이 파일은 서버 응용 프로그램이 있는 디렉토리의 하위 디렉토리에 저장됩니다. name 매개 변수와 일치하는 이름의 파일이 없으면 만들어집니다.
  • 이 매개 변수를 생략하거나 "live"를 전달하면 Flash Player는 기록하지 않고 실시간 데이터를 배급합니다. name 매개 변수에 전달된 값과 일치하는 이름의 파일이 존재하면 이는 삭제됩니다.

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

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

매개 변수

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

receiveVideo()메서드 
public function receiveVideo(flagOrFPS:*):void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

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

매개 변수

flagOrFPS:* — 입력 비디오가 이 스트림에서 재생되는지 (true) 그렇지 않은지 (false)를 지정합니다. 기본값은 true입니다. 또한 정수를 사용해서 입력 비디오의 초당 프레임 속도를 지정할 수 있습니다. 프레임 속도를 지정하지 않을 경우 프레임 속도 기본값은 재생 중인 기록 또는 실시간 비디오의 프레임 속도로 됩니다.

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

EnhancedSeekfalse일 경우, 서버는 정상적인 검색 모드를 사용합니다. 정상적인 검색 모드에서 서버는 가장 가까운 키프레임에서 스트리밍을 시작합니다. 예를 들어 어떤 비디오가 0초와 10초에 키프레임이 있을 경우, 4초를 검색하면 4초에서 시작하기 위해 0초에 있는 키프레임을 사용해 재생합니다. 다음 키프레임이 있는 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
Player 버전 : Flash Player 9

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

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

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를 두 번째 인수로 사용하며 세 번째 인수는 없습니다.

참고 사항


예제
Flash Media Server 다음 예제는 두 개의 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);
        }
     }
  
Flash Media Server 다음 예제는 메타데이터를 만들어서 실시간 스트림에 추가합니다.
  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() );  
            }
         }
  
Flash Media Server 비디오에 추가된 데이터 키프레임에 응답하려면 클라이언트는 onMetaData 이벤트 핸들러를 정의해야 합니다. onMetaData 이벤트 핸들러는 addEventListener()로 등록된 것은 아니지만, 대신 onMetaData 이름을 가진 콜백 함수입니다.
  public function onMetaData(info:Object):void {
     trace("width: " + info.width);
     trace("height: " + info.height);
  }
  
Flash Media Server 이 예제는 서버에서 재생 목록을 만드는 방법을 보여 줍니다.
  // 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);
  
Flash Media Server 기록된 비디오 파일이 데이터 메시지만 포함하고 있을 경우 원래 기록된 속도로 비디오를 재생하거나 데이터 메시지를 한꺼번에 가져올 수 있습니다.
  //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);
  
togglePause()메서드 
public function togglePause():void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target네트워크 작업에 실패한 객체입니다.
error이벤트를 트리거한 오류입니다.

참고 사항

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

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target입력/출력 오류가 발생한 네트워크 객체입니다.
text오류 메시지로 표시될 텍스트입니다.
netStatus 이벤트  
이벤트 객체 유형: flash.events.NetStatusEvent
NetStatusEvent.type property = flash.events.NetStatusEvent.NET_STATUS

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

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

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

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

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

참고 사항

onCuePoint 이벤트  

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

비디오 파일 재생 중 포함된 큐 포인트에 도달하면 호출됩니다. 이 핸들러를 사용하여 비디오가 특정 큐 포인트에 도달하면 코드 중의 액션이 트리거되도록 할 수 있는데, 이렇게 하여 응용 프로그램의 다른 액션을 비디오 재생 이벤트와 동기화할 수 있습니다. Flash Media Server가 지원하는 비디오 파일 포맷에 관한 자세한 내용은 Flash Media Server 설명서를 참조하십시오.

이 이벤트는 Flash Media Server와 함께 사용하기 위한 것입니다. Flash Player API에 포함되지 않지만, 사용자의 편의를 위해 이 언어 참조에 포함되었습니다. addEventListener() 메서드 또는 다른 어떤 EventDispatcher 메서드도 이 이벤트를 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

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

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

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

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

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

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

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

참고 사항

onMetaData 이벤트  

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

Flash Player에서 재생 중인 비디오 파일에 포함된 설명 정보를 수신할 때 전달됩니다. Flash Media Server가 지원하는 비디오 파일 포맷에 관한 자세한 내용은 Flash Media Server 설명서를 참조하십시오.

이 특수한 이벤트는 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오. 기술적으로는 Flash Player API에 포함되지 않지만, 사용자의 편의를 위해 이 언어 참조에 포함되었습니다. addEventListener() 메서드 또는 다른 어떤 EventDispatcher 메서드도 이 이벤트를 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

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

NetStream.play() 메서드 호출 후 그러나 비디오 재생 헤드가 진행되기 전에 이 이벤트가 트리거됩니다.

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

참고 사항

onPlayStatus 이벤트  

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

NetStream 객체가 스트림 재생을 완료했을 때 전달됩니다. 이 핸들러는 netStatus 이벤트가 반환하는 결과 이외의 정보를 제공하는 정보 객체를 반환합니다. NetStream 객체가 재생 목록 중 어떤 스트림에서 다른 스트림으로 전환했을 때(정보 객체 NetStream.Play.Switch에 의해 표시됨) 또는 NetStream 객체가 끝까지 재생되었을 때(정보 객체 NetStream.Play.Complete에 의해 표시됨) 이 핸들러를 사용하여 코드에서 액션을 트리거할 수 있습니다. 이 이벤트에 응답하려면 서버가 보낸 정보 객체를 처리할 함수를 만들어야 합니다.

이 이벤트는 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오. Flash Player API에 포함되지 않지만, 사용자의 편의를 위해 이 언어 참조에 포함되었습니다. addEventListener() 메서드 또는 다른 어떤 EventDispatcher 메서드도 이 이벤트를 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.

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

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

참고 사항

예제 예제 사용 방법
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 {
            stream = 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);
    }
}




 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/net/NetStream.html