패키지 | flash.net |
클래스 | public class NetStream |
상속 | NetStream EventDispatcher Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetStream 클래스는 다음 작업에 사용됩니다.
-
NetStream.play()
를 호출하여 로컬 디스크, 웹 서버 또는 Flash Media Server에서 미디어 파일을 재생합니다. -
NetStream.publish()
를 호출하여 비디오, 오디오 및 데이터 스트림을 Flash Media Server로 제작합니다. -
NetStream.send()
를 호출하여 데이터 메시지를 등록된 모든 클라이언트에 전송합니다. -
NetStream.send()
를 호출하여 라이브 스트림에 메타데이터를 추가합니다. -
NetStream.appendBytes()
를 호출하여 NetStream에 ByteArray 데이터를 전달합니다.
참고: 동일한 NetStream 객체를 통해서는 스트림을 재생하고 제작할 수 없습니다.
Adobe AIR 및 Flash Player 9.0.115.0 이상 버전에서는 표준 MPEG-4 컨테이너 형식에서 파생된 파일을 지원합니다. 이러한 파일에는 F4V, MP4, M4A, MOV, MP4V, 3GP 및 3G2가 포함됩니다(H.264 비디오, HEAAC v2 인코딩 오디오 또는 둘 모두가 포함된 경우). H.264는 Sorenson 또는 On2의 동일한 인코딩 프로파일에 비해 더 느린 비트율로 더 좋은 품질의 비디오를 제공합니다. AAC는 MPEG-4 비디오 표준에 정의된 표준 오디오 형식입니다. HE-AAC v2는 SBR(Spectral Band Replication) 및 PS(Parametric Stereo) 기술을 사용하여 낮은 비트율로 코딩 효율성을 향상시키는 AAC의 확장입니다.
지원되는 코덱 및 파일 형식에 대한 자세한 내용은 다음을 참조하십시오.
Flash Media Server 스트림, 점진적 F4V 파일 또는 점진적 FLV 파일에서 데이터 받기
Flash Media Server, F4V 파일 및 FLV 파일은 스트리밍이나 재생 중 특정 데이터 포인트의 데이터를 포함하는 이벤트 객체를 전송할 수 있습니다. 재생 중에 두 가지 방식으로 스트림이나 FLV 파일의 데이터를 처리할 수 있습니다.
-
client 속성을 이벤트 핸들러와 연결하여 데이터 객체를 받습니다.
NetStream.client
속성을 사용하여 특정 데이터 처리 함수를 호출하기 위한 객체를 지정합니다.NetStream.client
속성에 할당된 객체는onCuePoint()
,onImageData()
,onMetaData()
,onPlayStatus()
,onSeekPoint()
,onTextData()
및onXMPData()
데이터 포인트를 수신할 수 있습니다. 해당 함수 내에 프로시저를 작성하여 재생 중에 스트림으로부터 반환되는 데이터 객체를 처리할 수 있습니다. 자세한 내용은NetStream.client
속성을 참조하십시오. - client 속성을 NetStream 클래스의 하위 클래스와 연결한 다음 데이터 객체를 받는 이벤트 핸들러를 작성합니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. 그러나 NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의할 수 있습니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러를 하위 클래스 인스턴스에 추가할 수도 있습니다.
객체 복제, 직접 라우팅 또는 API 게시를 사용하기 전에 NetGroup.Neighbor.Connect
이벤트를 받을 때까지 기다립니다.
참고: MP3 파일과 같은 오디오 파일을 통해 데이터를 보내려면 Sound 클래스를 사용하여 오디오 파일을 Sound 객체에 연결합니다. 그런 다음 Sound.id3
속성을 사용하여 사운드 파일에서 메타데이터를 읽습니다.
AIR for iOS에서의 H.264로 인코딩된 비디오 지원
H.264 비디오의 경우 AIR 3.0 for iOS 이상에서는 전체 NetStream API 중 일부를 지원합니다. 다음 표에는 AIR for iOS에서 재생이 지원되지 않는 NetStream 멤버가 나와 있습니다.
지원되지 않는 속성 | 지원되지 않는 메서드 | 지원되지 않는 이벤트 |
---|---|---|
bufferTime | appendBytes() | onCuePoint(FLV 파일에서만 작동) |
bufferLength | appendBytesAction() | onImageData |
backBufferTime | step() | onSeekPoint |
backBufferLength | onTextData | |
bufferTimeMax | onXMPData | |
bytesLoaded | drmError | |
currentFPS | drmStatus | |
inBufferSeek | onDRMContentData | |
info | drmAuthenticate | |
liveDelay | DRM.encryptedFLV 상태 이벤트 코드 | |
maxPauseBufferTime | ||
soundTransform | ||
RTMFP 연결을 설명하는 모든 속성 |
AIR for iOS 사용에 대한 추가 정보는 NetStream.play()
메서드를 참조하십시오.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
audioReliable : Boolean
RTMFP 연결의 경우 오디오를 완전히 신뢰할 수 있는 상태로 전송할지 여부를 지정합니다. | NetStream | ||
audioSampleAccess : Boolean
RTMFP 연결의 경우 이 NetStream의 피어 투 피어 구독자가 오디오 스트림 캡처를 수행할 수 있도록 허용할지 여부를 지정합니다. | NetStream | ||
backBufferLength : Number [읽기 전용]
되감기 및 재생용으로 현재 캐시된 이전에 표시된 데이터의 시간(초)입니다. | NetStream | ||
backBufferTime : Number
Flash Player에서 되감기 및 재생을 위해 캐시를 시도하는 이전에 표시된 데이터의 시간(초)입니다. | NetStream | ||
bufferLength : Number [읽기 전용]
현재 버퍼에 있는 데이터의 시간(초) 수입니다. | NetStream | ||
bufferTime : Number
스트림을 표시하기 전에 메시지를 버퍼링할 시간을 지정합니다. | NetStream | ||
bufferTimeMax : Number
라이브 스트리밍 내용에 대한 최대 버퍼 길이(초)를 지정합니다. | NetStream | ||
bytesLoaded : uint [읽기 전용]
응용 프로그램에 로드된 데이터의 바이트 수입니다. | NetStream | ||
bytesTotal : uint [읽기 전용]
응용 프로그램에 로드되는 파일의 전체 바이트 크기입니다. | NetStream | ||
checkPolicyFile : Boolean
비디오 파일의 로드를 시작하기 전에 로드된 비디오 파일의 서버로부터 크로스 도메인 정책 파일을 다운로드할지 여부를 지정합니다. | NetStream | ||
client : Object
스트리밍 또는 F4VFLV 파일 데이터를 처리하기 위해 콜백 메서드를 호출할 객체를 지정합니다. | NetStream | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
currentFPS : Number [읽기 전용]
표시되는 초당 프레임 수입니다. | NetStream | ||
dataReliable : Boolean
RTMFP 연결의 경우 NetStream.send() 호출을 완전히 신뢰할 수 있는 상태로 전송할지 여부를 지정합니다. | NetStream | ||
farID : String [읽기 전용]
RTMFP 연결의 경우 이 NetStream 인스턴스에 연결되는 맨 끝의 식별자입니다. | NetStream | ||
farNonce : String [읽기 전용]
RTMFP 및 RTMPE 연결의 경우 이 스트림의 다른 끝에서 실제 선택된 값이며 이 연결에 고유합니다. | NetStream | ||
inBufferSeek : Boolean
스마트 검색에 대해 표시되는 데이터의 캐시 여부(TRUE 또는 FALSE)를 지정합니다. | NetStream | ||
info : NetStreamInfo [읽기 전용]
해당 속성에 서비스 품질에 대한 통계가 포함될 수 있는 NetStreamInfo 객체를 반환합니다. | NetStream | ||
liveDelay : Number [읽기 전용]
버퍼링이 없는 라이브 모드에서 구독 스트림의 버퍼에 들어 있는 데이터의 초 수입니다. | NetStream | ||
maxPauseBufferTime : Number
정지 모드에서 메시지를 얼마나 오랫동안 버퍼링할지 초 단위로 지정합니다. | NetStream | ||
multicastAvailabilitySendToAll : Boolean
RTMFP 연결의 경우 피어 투 피어 멀티캐스트 조각이 있다는 메시지를 모든 피어에 보낼지 또는 단 하나의 피어에만 보낼지를 지정합니다. | NetStream | ||
multicastAvailabilityUpdatePeriod : Number
RTMFP 연결의 경우 로컬 노드에 사용 가능한 새로운 피어 투 피어 멀티캐스트 미디어 조각이 있음을 피어에 알리는 피어로 전송된 메시지 간의 간격(초)을 지정합니다. | NetStream | ||
multicastFetchPeriod : Number
RTMFP 연결의 경우 로컬 노드가 피어 투 피어 멀티캐스트 미디어 조각이 있음을 인지한 후 피어로부터 이를 페치하려고 시도하기 까지의 간격(초)을 지정합니다. | NetStream | ||
multicastInfo : NetStreamMulticastInfo [읽기 전용]
RTMFP 연결의 경우 속성에 서비스 품질에 대한 통계가 포함되어 있는 NetStreamMulticastInfo 객체를 반환합니다. | NetStream | ||
multicastPushNeighborLimit : Number
RTMFP 연결의 경우 멀티캐스트 미디어를 사전에 푸시할 피어의 최대 수를 지정합니다. | NetStream | ||
multicastRelayMarginDuration : Number
RTMFP 연결의 경우 피어 투 피어 멀티캐스트 데이터가 지정된 기간을 지나서도 이를 요청하는 피어에 전송할 수 있도록 유지되는 기간(초)을 지정합니다. | NetStream | ||
multicastWindowDuration : Number
RTMFP 연결의 경우 피어 투 피어 멀티캐스트 재조합 창의 기간(초)을 지정합니다. | NetStream | ||
nearNonce : String [읽기 전용]
RTMFP 및 RTMPE 연결의 경우 스트림의 이 끝에서 실제로 선택한 값이며 이 연결에 고유합니다. | NetStream | ||
objectEncoding : uint [읽기 전용]
이 NetStream 객체에 대한 객체 인코딩(AMF 버전)입니다. | NetStream | ||
peerStreams : Array [읽기 전용]
이 배급 NetStream 인스턴스를 수신하는 모든 구독 NetStream 인스턴스를 보유하는 객체입니다. | NetStream | ||
soundTransform : flash.media:SoundTransform
이 NetStream 객체의 사운드를 제어합니다. | NetStream | ||
time : Number [읽기 전용]
재생 헤드의 위치(초)입니다. | NetStream | ||
useHardwareDecoder : Boolean
스트림에서 하드웨어 가속 디코딩을 사용할지 여부를 지정합니다. | NetStream | ||
useJitterBuffer : Boolean
버퍼링되지 않은 라이브 스트리밍의 대기 시간을 최소화합니다(bufferTime=0). | NetStream | ||
videoReliable : Boolean
RTMFP 연결의 경우 비디오를 완전히 신뢰할 수 있는 상태로 전송할지 여부를 지정합니다. | NetStream | ||
videoSampleAccess : Boolean
RTMFP 연결의 경우 이 NetStream에 대한 피어 투 피어 구독자가 비디오 스트림을 캡처할 수 있도록 허용할지 여부를 지정합니다. | NetStream | ||
videoStreamSettings : VideoStreamSettings
스트림 압축 속성을 지정합니다. | NetStream |
메서드 | 정의 주체 | ||
---|---|---|---|
NetConnection 객체를 통해 미디어 파일을 재생하고 데이터를 전송하는 데 사용할 수 있는 스트림을 만듭니다. | NetStream | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
재생을 위해 NetStream에 ByteArray를 전달합니다. | NetStream | ||
불연속적인 시간 간격을 나타내고, FIFO를 플러시하며, 파일 헤더 또는 FLV 태그의 시작 부분이 있어야 함을 바이트 파서에 알려 줍니다. | NetStream | ||
새 NetConnection 객체에 스트림을 첨부합니다. | NetStream | ||
소스로 전달된 Microphone 객체에서 NetStream 객체까지 오디오 스트림을 연결합니다. | NetStream | ||
카메라에서 비디오 캡처를 시작하거나, theCamera가 null로 설정된 경우 캡처를 중단합니다. | NetStream | ||
스트림의 모든 데이터 재생을 중단하고, time 속성을 0으로 설정하며, 해당 스트림을 다른 용도로 사용할 수 있도록 합니다. | NetStream | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
NetStream 객체가 보유한 모든 리소스를 해제합니다. | NetStream | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
피어 배급 스트림이 피어 구독 스트림과 일치할 때 호출됩니다. | NetStream | ||
비디오 스트림의 재생을 정지합니다. | NetStream | ||
로컬 디렉토리 또는 웹 서버에서 미디어 파일을 재생하고 Flash Media Server에서 미디어 파일 또는 라이브 스트림을 재생합니다. | NetStream | ||
비트율이 다른 파일 사이를 부드럽게 전환하고, 연결이 끊겼다가 다시 연결되면 NetStream이 다시 시작되도록 합니다. | NetStream | ||
로컬로 저장된 미디어 파일에서 DRM 메타데이터를 추출합니다. | NetStream | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
클라이언트의 스트리밍 오디오, 비디오 및 데이터 메시지를 Flash Media Server로 전송합니다. 전송하는 동안 스트림을 선택적으로 기록할 수 있습니다. | NetStream | ||
입력 오디오를 스트림에서 재생할지 여부를 지정합니다. | NetStream | ||
입력 비디오를 스트림에서 재생할지 여부를 지정합니다. | NetStream | ||
입력 비디오의 프레임 속도를 지정합니다. | NetStream | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
[정적]
AIR 응용 프로그램에서는 로컬에서 캐시된 모든 DRM(디지털 권한 관리) 바우처 데이터가 삭제됩니다. | NetStream | ||
정지했던 비디오 스트림의 재생을 다시 시작합니다. | NetStream | ||
지정된 위치와 가장 가까운 키프레임(비디오 업계에서는 I-프레임이라고도 부름)을 찾습니다. | NetStream | ||
배급된 스트림에서 모든 구독 클라이언트에게 메시지를 보냅니다. | NetStream | ||
기본 암호화된 내용을 보는 데 필요한 DRM 인증 자격 증명을 설정합니다. | NetStream | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
현재 표시된 프레임을 기준으로 지정한 프레임 수를 앞 또는 뒤로 이동합니다. | NetStream | ||
스트림의 재생을 일시 정지하거나 다시 시작합니다. | NetStream | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
이벤트 | 요약 | 정의 주체 | ||
---|---|---|---|---|
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. | EventDispatcher | |||
기본 비동기 코드에서 비동기적으로 예외가 발생할 때 전달됩니다. | NetStream | |||
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. | EventDispatcher | |||
NetStream 객체가 재생 전에 인증용 사용자 자격 증명을 요구하는 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다. | NetStream | |||
DRM(디지털 권한 관리)으로 암호화된 파일의 재생을 시도하는 NetStream 객체에 대해 DRM 관련 오류가 발생할 때 전달됩니다. | NetStream | |||
DRM(디지털 권한 관리)으로 암호화된 내용 재생(사용자가 내용을 재생할 수 있도록 인증되고 권한이 부여된 경우)이 시작될 때 전달됩니다. | NetStream | |||
네트워크 작업의 실패를 유발하는 입력 또는 출력 오류가 발생할 때 전달됩니다. | NetStream | |||
비디오 내용을 재생하고 특정 유형의 메시지를 처리할 때 전달됩니다. | NetStream | |||
NetStream 객체가 상태 또는 오류 상황을 보고할 때 전달됩니다. | NetStream | |||
비디오 파일을 재생하는 동안 포함된 큐 포인트에 도달했을 때 응답할 리스너를 설정합니다. | NetStream | |||
AIR가 미디어 파일에 포함된 DRM 내용 메타데이터를 추출할 때 응답할 리스너를 설정합니다. | NetStream | |||
Flash Player가 재생 중인 미디어 파일에 포함된 이미지 데이터를 바이트 배열로 받았을 때 응답할 리스너를 설정합니다. | NetStream | |||
Flash Player가 재생 중인 비디오에 포함된 설명 정보를 받았을 때 응답할 리스너를 설정합니다. | NetStream | |||
NetStream 객체가 스트림 재생을 완료했을 때 응답할 리스너를 설정합니다. | NetStream | |||
추가 바이트 파서가 검색 가능한 지점(예: 비디오 키 프레임)이라고 판단되는 지점을 만날 경우 appendBytes()로부터 동기적으로 호출됩니다. | NetStream | |||
Flash Player가 재생 중인 미디어 파일에 포함된 텍스트 데이터를 받았을 때 응답할 리스너를 설정합니다. | NetStream | |||
Flash Player에서 재생 중인 비디오에 포함된 Adobe XMP(Extensible Metadata Platform) 관련 정보를 받을 때 응답할 리스너를 설정합니다. | NetStream | |||
응용 프로그램에서 NetStream.play() 메서드를 호출하여 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다. | NetStream |
상수 | 정의 주체 | ||
---|---|---|---|
CONNECT_TO_FMS : String = "connectToFMS" [정적]
NetStream 인스턴스의 생성자에 매개 변수로 사용되는 정적 객체입니다. | NetStream | ||
DIRECT_CONNECTIONS : String = "directConnections" [정적]
피어 투 피어 제작자 연결을 만듭니다. | NetStream |
audioReliable | 속성 |
audioReliable:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 오디오를 완전히 신뢰할 수 있는 상태로 전송할지 여부를 지정합니다. TRUE인 경우 이 NetStream을 통해 전송된 모든 오디오는 완전히 신뢰할 수 있습니다. FALSE인 경우 전송된 오디오를 완전히 신뢰할 수 없지만 제한된 시간 동안 다시 전송되고 삭제됩니다. FALSE 값을 사용하여 오디오 품질을 낮추는 대신 지연 시간을 줄일 수 있습니다.
부분 신뢰를 지원하지 않는 네트워크 프로토콜에서 이 속성을 FALSE로 설정하려는 경우 이 시도는 무시되고 속성이 TRUE로 설정됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get audioReliable():Boolean
public function set audioReliable(value:Boolean):void
관련 API 요소
audioSampleAccess | 속성 |
audioSampleAccess:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 이 NetStream의 피어 투 피어 구독자가 오디오 스트림 캡처를 수행할 수 있도록 허용할지 여부를 지정합니다. FALSE인 경우 구독자가 오디오 스트림을 캡처하려고 하면 권한 오류가 발생합니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get audioSampleAccess():Boolean
public function set audioSampleAccess(value:Boolean):void
관련 API 요소
backBufferLength | 속성 |
backBufferLength:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
되감기 및 재생용으로 현재 캐시된 이전에 표시된 데이터의 시간(초)입니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
이 속성은 데이터가 Flash Media Server 3.5.3 이상에서 스트리밍되는 경우에만 사용할 수 있습니다. Flash Media Server에 대한 자세한 내용은 해당 클래스 설명을 참조하십시오.
이전에 표시된 데이터가 캐시되는 시간을 지정하려면 Netstream.backBufferTime
속성을 사용합니다.
데이터가 캐시되지 않도록 하려면 Netstream.inBufferSeek
속성을 FALSE로 설정합니다.
구현
public function get backBufferLength():Number
관련 API 요소
backBufferTime | 속성 |
backBufferTime:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
Flash Player에서 되감기 및 재생을 위해 캐시를 시도하는 이전에 표시된 데이터의 시간(초)입니다. 기본값은 데스크톱 응용 프로그램의 경우 30초이며 휴대 장치 응용 프로그램의 경우 3초입니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
이 속성은 데이터가 Flash Media Server 버전 3.5.3 이상에서 스트리밍되는 경우에만 사용할 수 있습니다. Flash Media Server에 대한 자세한 내용은 해당 클래스 설명을 참조하십시오.
이 속성을 사용하면 이미 표시된 데이터가 서버에서 다시 검색되지 않기 때문에 되감기 작업의 성능이 향상됩니다. 대신 스트림은 버퍼에서 다시 재생됩니다. 재생 중 데이터는 버퍼가 가득 찰 때까지 서버로부터 스트리밍을 계속합니다.
되감기 위치가 캐시에 있는 데이터보다 뒤에 있는 경우 버퍼가 플러시됩니다. 그 후 데이터는 요청된 위치에서 서버로부터 스트리밍을 시작합니다.
이 속성을 사용하려면 Netstream.inBufferSeek
속성을 TRUE로 설정합니다.
구현
public function get backBufferTime():Number
public function set backBufferTime(value:Number):void
관련 API 요소
bufferLength | 속성 |
bufferLength:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
현재 버퍼에 있는 데이터의 시간(초) 수입니다. 이 속성을 bufferTime
과 함께 사용하면 버퍼가 어느 정도 채워졌는지 알 수 있습니다. 따라서, 데이터가 버퍼에 로드되기를 기다리는 사용자에게 상태를 알려 줄 수 있습니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get bufferLength():Number
관련 API 요소
bufferTime | 속성 |
bufferTime:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
스트림을 표시하기 전에 메시지를 버퍼링할 시간을 지정합니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
기본값은 0.1(10분의 1초)입니다. 현재 버퍼에 있는 초 수를 확인하려면 bufferLength
속성을 사용합니다.
서버측 재생 목록을 재생하려면 bufferTime
을 최소한 1초로 설정합니다. 재생 문제가 발생한 경우 bufferTime
길이를 늘립니다.
기록된 내용 실시간이 아닌 사전 기록된 내용을 스트리밍할 때 왜곡 현상을 막으려면 Netstream.bufferTime
의 값을 0으로 설정하지 않아야 합니다. 기본적으로 응용 프로그램은 사전 기록된 내용의 경우 미디어 데이터를 대기열에 보관하고 미디어를 올바르게 재생하는 입력 버퍼를 사용합니다. 미리 기록된 내용의 경우 기본 설정을 사용하거나 버퍼 시간을 늘립니다.
실시간 내용 내용을 실시간으로 스트리밍하는 경우 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
은 입력 데이터가 스트림을 표시하기 시작할 때까지 버퍼링에 얼마나 오래 걸리는지를 지정합니다.
기록 스트림이 재생될 때 bufferTime
이 0이면 Flash는 이 값을 작은 값(약 10밀리초)으로 설정합니다. 실시간 스트림이 재생 목록 등을 통해 나중에 재생될 경우 이 버퍼 시간이 유지됩니다. 즉, bufferTime
이 스트림 때문에 0이 아닌 값으로 유지됩니다.
구현
public function get bufferTime():Number
public function set bufferTime(value:Number):void
관련 API 요소
bufferTimeMax | 속성 |
bufferTimeMax:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
라이브 스트리밍 내용에 대한 최대 버퍼 길이(초)를 지정합니다. 기본값은 0입니다. 버퍼 길이는 네트워크 및 장치 문제(예: 송신자와 수신자 간 시계 속도 차)로 인해 시간이 경과함에 따라 늘어날 수 있습니다. 이 속성을 설정하면 미팅 및 감시 같은 라이브 응용 프로그램에 대한 버퍼 길이를 제한할 수 있습니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
bufferTimeMax > 0
및 bufferLength >= bufferTimeMax
인 경우 bufferLength
가 bufferTime
과 같아질 때까지 오디오가 더 빠르게 재생됩니다. 라이브 스트림이 비디오 전용인 경우에는 bufferLength
가 bufferTime
과 같아질 때까지 비디오가 더 빠르게 재생됩니다.
재생이 늦어지는 정도(bufferLength
와 bufferTime
간 차이)에 따라 Flash Player에서 이를 만회하는 비율을 1.5%와 6.25% 사이에서 조절합니다. 스트림에 오디오가 포함되어 있으면 오디오 왜곡을 최소화하는 주파수 도메인 다운샘플링에 의해 재생이 더 빨라집니다.
bufferTimeMax
속성을 설정하여 다음과 같은 경우에 라이브 버퍼링 스트림을 만회할 수 있습니다.
- Flash Media Server에서 라이브 미디어를 스트리밍하는 경우
- 데이터 생성 모드(
NetStream.appendBytes()
)에서 라이브 미디어를 스트리밍하는 경우
구현
public function get bufferTimeMax():Number
public function set bufferTimeMax(value:Number):void
관련 API 요소
bytesLoaded | 속성 |
bytesLoaded:uint
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
응용 프로그램에 로드된 데이터의 바이트 수입니다. 이 속성을 bytesTotal
과 함께 사용하면 버퍼가 어느 정도 채워졌는지 알 수 있습니다. 따라서, 데이터가 버퍼에 로드되기를 기다리는 사용자에게 상태를 알려 줄 수 있습니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get bytesLoaded():uint
관련 API 요소
bytesTotal | 속성 |
checkPolicyFile | 속성 |
checkPolicyFile:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
비디오 파일의 로드를 시작하기 전에 로드된 비디오 파일의 서버로부터 크로스 도메인 정책 파일을 다운로드할지 여부를 지정합니다. 점진적 비디오를 다운로드하려는 경우와 호출하는 SWF 파일의 자체 도메인 외부에 있는 파일을 로드하려는 경우 이 속성을 사용합니다. RTMP를 사용하는 경우 이 속성이 무시됩니다.
이 속성을 true
로 설정하여, 호출하는 SWF 도메인 외부의 도메인에서 로드한 비디오 파일에서 BitmapData.draw()
를 호출합니다. BitmapData.draw()
메서드를 사용하면 픽셀 수준까지 비디오에 액세스할 수 있습니다. 로딩 시 checkPolicyFile
속성을 true
로 설정하지 않고 BitmapData.draw()
를 호출하는 경우, 필요한 정책 파일이 다운로드되지 않았기 때문에 SecurityError
예외가 발생할 수 있습니다.
로딩하는 비디오를 픽셀 수준까지 액세스하려는 경우가 아니라면 이 속성을 true로 설정하지 마십시오. 정책 파일을 검사하느라 네트워크 대역폭이 소비되어 다운로드 시작이 지연될 수 있습니다.
checkPolicyFile
이 true
로 설정된 상태에서 NetStream.play()
메서드를 호출할 경우 Flash Player 또는 AIR 런타임은 관련 크로스 도메인 정책 파일을 다운로드하거나 그러한 정책 파일이 없음을 확인한 다음 다운로드를 시작해야 합니다. 정책 파일이 있는지 확인하려면 Flash Player 또는 AIR 런타임에서 다음 액션을 순서대로 수행합니다.
- 응용 프로그램은 이미 다운로드된 정책 파일을 확인합니다.
- 응용 프로그램은
Security.loadPolicyFile()
메서드 호출에 지정된 대기 중인 정책 파일을 모두 다운로드합니다. - 응용 프로그램은
NetStream.play()
에 전달한 URL에 해당하는 기본 위치에서 정책 파일을 다운로드하며 이 위치는 해당 URL과 동일한 서버에 있는/crossdomain.xml
입니다.
모든 경우에 Flash Player 또는 Adobe AIR에는 비디오 서버의 적절한 정책 파일이 필요하며 해당 정책 파일은 해당 파일의 위치를 기준으로 play()
에 전달된 URL의 객체에 대한 액세스를 제공하고, 호출하는 코드 파일의 도메인에서 하나 이상의 <allow-access-from>
태그를 통해 비디오에 액세스할 수 있도록 해야 합니다.
checkPolicyFile
을 true
로 설정하면 응용 프로그램은 정책 파일이 확인될 때까지 기다렸다가 비디오를 다운로드합니다. BitmapData.draw()
호출과 같이 비디오 데이터에 대한 픽셀 레벨의 작업은 NetStream 객체로부터 onMetaData
또는 NetStatus
이벤트가 수신될 때까지 기다렸다가 수행됩니다.
checkPolicyFile
을 true
로 설정했지만 관련 정책 파일이 발견되지 않은 경우에는 정책 파일이 필요한 작업을 수행할 때까지 오류 메시지가 표시되지 않지만 응용 프로그램에서 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
관련 API 요소
client | 속성 |
client:Object
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
스트리밍 또는 F4VFLV 파일 데이터를 처리하기 위해 콜백 메서드를 호출할 객체를 지정합니다. 기본 객체는 만들려는 NetStream 객체인 this
입니다. client
속성을 다른 객체로 설정하면 해당 객체에서 콜백 메서드가 호출됩니다. NetStream.client
객체는 onCuePoint()
, onImageData()
, onMetaData()
, onPlayStatus()
, onSeekPoint
, onTextData()
및 onXMPData()
함수를 호출하고 관련 데이터 객체를 받을 수 있습니다.
client
속성을 이벤트 핸들러에 연결하려면
- 객체를 만들어 NetStream 객체의
client
속성에 할당합니다.var customClient:Object = new Object(); my_netstream.client = customClient;
- 원하는 데이터 이벤트에 대한 핸들러 함수를 클라이언트 객체의 속성으로 지정합니다.
customClient.onImageData = onImageDataHandler;
- 데이터 이벤트 객체를 받을 핸들러 함수를 작성합니다.
public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }
스트림을 통해 또는 재생 과정에서 데이터가 전달되면 데이터 이벤트 객체(이 경우 imageData
객체)에 데이터가 채워집니다. 자세한 내용은 onImageData
설명을 참조하십시오. 여기에는 client
속성에 객체를 할당하는 전체 예제가 포함되어 있습니다.
client
속성을 하위 클래스에 연결하려면
- 데이터 이벤트 객체를 받을 핸들러 함수를 사용하여 하위 클래스를 만듭니다.
class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
- 하위 클래스의 인스턴스를 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이 아닌 객체로 설정해야 합니다.
|
관련 API 요소
currentFPS | 속성 |
currentFPS:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시되는 초당 프레임 수입니다. 비디오 파일을 내보내어 여러 시스템에서 재생되도록 하는 경우, 테스트하는 과정에서 이 값을 검사하면 파일을 내보낼 때 적용할 압축 정도를 결정하는 데 도움이 됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get currentFPS():Number
dataReliable | 속성 |
dataReliable:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 NetStream.send()
호출을 완전히 신뢰할 수 있는 상태로 전송할지 여부를 지정합니다. TRUE인 경우 이 NetStream을 통해 전송되는 NetStream.send()
호출은 완전히 신뢰할 수 있습니다. FALSE인 경우 NetStream.send()
호출이 완전히 신뢰할 수 있는 상태로 전송되지 않지만 제한된 시간 동안 다시 전송되고 삭제됩니다. 이 값을 FALSE로 설정하여 데이터 품질을 낮추는 대신 지연 시간을 줄이도록 할 수 있습니다.
부분 신뢰를 지원하지 않는 네트워크 프로토콜에서 이 속성을 FALSE로 설정하려는 경우 이 시도는 무시되고 속성이 TRUE로 설정됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get dataReliable():Boolean
public function set dataReliable(value:Boolean):void
관련 API 요소
farID | 속성 |
farNonce | 속성 |
inBufferSeek | 속성 |
inBufferSeek:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
스마트 검색에 대해 표시되는 데이터의 캐시 여부(TRUE
또는 FALSE
)를 지정합니다. 기본값은 FALSE입니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
Flash Media Server 3.5.3 및 Flash Player 10.1은 함께 작동하여 스마트 검색을 지원합니다. 스마트 검색에서는 뒤로 및 앞으로 버퍼를 사용하여 서버로부터 데이터를 요청하지 않고 검색을 수행합니다. 표준 검색에서는 버퍼된 데이터를 플러시하고 서버에 검색 시간을 기준으로 새로운 데이터를 전송하도록 요구합니다.
NetStream.step()
을 호출하여 지정된 프레임 수만큼 앞/뒤로 이동합니다. NetStream.seek()
을 호출하여 지정된 시간(초)만큼 앞/뒤로 검색합니다.
스마트 검색을 사용하면 서버 부하를 줄이고 검색 성능을 향상시킬 수 있습니다. inBufferSeek=true
로 설정하고 step()
및 seek()
를 호출하여 다음을 만듭니다.
- 클라이언트측 DVR 기능. 새 비디오 전달을 위해 서버로 이동하지 않고 클라이언트측 버퍼 내에서 검색합니다.
- 트릭 모드. 프레임 간 이동, 빠르게 감기, 빠르게 되감기 및 슬로우 모션 재생 등이 포함된 플레이어를 만듭니다.
inBufferSeek=true
이고 NetStream.seek()
를 성공적으로 호출하면 NetStatusEvent info.description
속성에 문자열 "client-inBufferSeek"
가 포함됩니다.
NetStream.step()
을 성공적으로 호출하면 NetStatusEvent info.code
속성에 문자열 "NetStream.Step.Notify"
가 포함됩니다.
구현
public function get inBufferSeek():Boolean
public function set inBufferSeek(value:Boolean):void
관련 API 요소
info | 속성 |
info:NetStreamInfo
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
해당 속성에 서비스 품질에 대한 통계가 포함될 수 있는 NetStreamInfo 객체를 반환합니다. 이 객체는 현재 상태의 스냅샷입니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get info():NetStreamInfo
관련 API 요소
liveDelay | 속성 |
liveDelay:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
버퍼링이 없는 라이브 모드에서 구독 스트림의 버퍼에 들어 있는 데이터의 초 수입니다. 이 속성은 현재의 네트워크 전송 지연(래그타임)을 지정합니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
이 속성은 주로 Flash Media Server와 같은 서버에 사용하도록 만들어졌습니다. 자세한 내용은 클래스 설명을 참조하십시오.
이 속성의 값을 확인하여 스트림의 전송 품질을 대략적으로 측정하고 이를 사용자에게 전달할 수 있습니다.
구현
public function get liveDelay():Number
maxPauseBufferTime | 속성 |
maxPauseBufferTime:Number
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
정지 모드에서 메시지를 얼마나 오랫동안 버퍼링할지 초 단위로 지정합니다. 이 속성은 정지 모드에서 버퍼링되는 시간을 제한하는 데 사용할 수 있습니다. NetStream.bufferLength
값이 이 제한 값에 도달하면 버퍼링이 중지됩니다.
이 값을 설정하지 않으면 최대 제한 값이 60초 또는 각 정지에 대해 NetStream.bufferTime
값의 두 배 중 큰 값으로 기본 설정됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get maxPauseBufferTime():Number
public function set maxPauseBufferTime(value:Number):void
관련 API 요소
multicastAvailabilitySendToAll | 속성 |
multicastAvailabilitySendToAll:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 피어 투 피어 멀티캐스트 조각이 있다는 메시지를 모든 피어에 보낼지 또는 단 하나의 피어에만 보낼지를 지정합니다. TRUE 값은 지정된 간격마다 한 번씩 모든 피어에 메시지를 전송하도록 지정합니다. FALSE 값은 지정된 간격마다 하나의 피어에 메시지를 전송하도록 지정합니다. 이 간격은 multicastAvailabilityUpdatePeriod
속성에서 결정됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastAvailabilitySendToAll():Boolean
public function set multicastAvailabilitySendToAll(value:Boolean):void
관련 API 요소
multicastAvailabilityUpdatePeriod | 속성 |
multicastAvailabilityUpdatePeriod:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 로컬 노드에 사용 가능한 새로운 피어 투 피어 멀티캐스트 미디어 조각이 있음을 피어에 알리는 피어로 전송된 메시지 간의 간격(초)을 지정합니다. 큰 값을 설정하면 일괄 처리 효율성이 증가되고 제어 오버헤드가 감소하지만 윈도우를 벗어나기 전에 조각을 검색할 수 있는 시간을 감소시키므로 수신 측의 품질을 저하시킬 수 있습니다. 작은 값을 설정하면 지연 시간이 감소되고 품질이 향상되지만 제어 오버헤드가 증가됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastAvailabilityUpdatePeriod():Number
public function set multicastAvailabilityUpdatePeriod(value:Number):void
관련 API 요소
multicastFetchPeriod | 속성 |
multicastFetchPeriod:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 로컬 노드가 피어 투 피어 멀티캐스트 미디어 조각이 있음을 인지한 후 피어로부터 이를 페치하려고 시도하기 까지의 간격(초)을 지정합니다. 이 값은 피어에서 가져오기가 시도되기 전에 로컬 노드로 조각을 미리 밀어낼 수 있는 기회를 제공합니다. 또한 둘 이상의 피어에 조각 가용성을 알리도록 하여 가져오기 로드를 여러 피어에 확산할 수 있습니다.
큰 값을 설정하면 피어 투 피어 메시의 로드 균형 조정 및 고르기를 향상할 수 있지만 사용 가능한 multicastWindowDuration
이 감소되고 지연 시간이 늘어납니다. 작은 값을 설정하면 가져오기가 필요한 경우 지연 시간을 줄일 수 있지만 중복 데이터 수신이 증가하고 피어 투 피어 메시 로드 균형 조정이 감소될 수 있습니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastFetchPeriod():Number
public function set multicastFetchPeriod(value:Number):void
관련 API 요소
multicastInfo | 속성 |
multicastInfo:NetStreamMulticastInfo
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 속성에 서비스 품질에 대한 통계가 포함되어 있는 NetStreamMulticastInfo 객체를 반환합니다. 이 객체는 현재 상태의 스냅샷입니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastInfo():NetStreamMulticastInfo
관련 API 요소
multicastPushNeighborLimit | 속성 |
multicastPushNeighborLimit:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 멀티캐스트 미디어를 사전에 푸시할 피어의 최대 수를 지정합니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastPushNeighborLimit():Number
public function set multicastPushNeighborLimit(value:Number):void
multicastRelayMarginDuration | 속성 |
multicastRelayMarginDuration:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 피어 투 피어 멀티캐스트 데이터가 지정된 기간을 지나서도 이를 요청하는 피어에 전송할 수 있도록 유지되는 기간(초)을 지정합니다. 이 기간은 multicastWindowDuration
속성에서 지정됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastRelayMarginDuration():Number
public function set multicastRelayMarginDuration(value:Number):void
관련 API 요소
multicastWindowDuration | 속성 |
multicastWindowDuration:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 피어 투 피어 멀티캐스트 재조합 창의 기간(초)을 지정합니다. 작은 값을 지정하면 지연 시간이 줄어들지만 조각을 모두 가져올 수 있는 충분한 시간을 허용하지 않기 때문에 품질이 저하될 수 있습니다. 이와 반대로 큰 값을 지정하면 조각을 모두 가져올 수 있는 더 많은 시간을 제공하여 품질이 향상되며 이에 따라 지연 시간도 늘어납니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get multicastWindowDuration():Number
public function set multicastWindowDuration(value:Number):void
관련 API 요소
nearNonce | 속성 |
objectEncoding | 속성 |
objectEncoding:uint
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이 NetStream 객체에 대한 객체 인코딩(AMF 버전)입니다. NetStream 객체는 연관된 NetConnection 객체로부터 objectEncoding
값을 상속합니다. ActionScript 3.0 SWF 파일이 Flash Player 9 이전에 릴리스된 서버와 통신해야 한다면 이 속성을 잘 이해해야 합니다. 자세한 내용은 NetConnection 클래스의 objectEncoding
속성 설명을 참조하십시오.
이 속성 값은 스트림이 로컬 또는 원격인지에 따라 달라집니다. null
이 NetConnection.connect()
메서드로 전달되는 로컬 스트림은 NetConnection.defaultObjectEncoding
값을 반환합니다. 서버와 연결하는 원격 스트림은 서버 연결에 대한 객체 인코딩을 반환합니다.
연결되지 않은 상태에서 이 속성을 읽거나 변경하려고 하면 응용 프로그램에서 예외가 발생합니다.
구현
public function get objectEncoding():uint
관련 API 요소
peerStreams | 속성 |
soundTransform | 속성 |
soundTransform:flash.media:SoundTransform
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
이 NetStream 객체의 사운드를 제어합니다. 자세한 내용은 SoundTransform 클래스를 참조하십시오.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
관련 API 요소
time | 속성 |
time:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
재생 헤드의 위치(초)입니다.
Flash Media Server 구독 스트림의 경우, 스트림이 초 수 단위로 재생되고 있습니다. 배급 스트림의 경우, 스트림이 초 수 단위로 배급되고 있습니다. 이 수는 소수점 셋째 자리까지 정확합니다. 스트림의 재생 시간을 밀리초 단위로 확인하려면 여기에 1,000을 곱합니다.
구독 스트림의 경우 서버가 데이터 전송을 중단했지만 스트림이 열려 있다면 time
속성 값은 더 이상 증가하지 않습니다. 서버에서 데이터를 다시 전송하기 시작하면 해당 값은 중지한 지점(서버에서 데이터 전송을 중지한 경우)에서 진행을 시작합니다.
스트림이 한 재생 목록 요소에서 다른 요소로 전환될 때 time
값은 계속 증가합니다. NetStream.play()
이 호출되고 reset
이 1
또는 true
이거나 NetStream.close()
가 호출될 때 이 속성은 0으로 설정됩니다.
구현
public function get time():Number
관련 API 요소
useHardwareDecoder | 속성 |
useHardwareDecoder:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3 |
스트림에서 하드웨어 가속 디코딩을 사용할지 여부를 지정합니다.
참고: 비디오 재생 도중 이 속성을 설정할 수는 없으며, NetStream.play()
를 호출하기 전에 설정해야 합니다.
기본값: true.
구현
public function get useHardwareDecoder():Boolean
public function set useHardwareDecoder(value:Boolean):void
관련 API 요소
useJitterBuffer | 속성 |
useJitterBuffer:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.3, AIR 3.3 |
버퍼링되지 않은 라이브 스트리밍의 대기 시간을 최소화합니다(bufferTime=0). 일반 푸시 기반 캐치업 메커니즘 대신, 오디오 메시지는 적응형 지터 버퍼에 배치됩니다. 연사 장치에 오디오가 필요한 경우 메시지가 지터 버퍼에서 실행되고 디코딩되며 재생됩니다. Speex 및 G.711에서는 이 설정에 상관없이 항상 이 풀 기반 접근 방식을 사용합니다. useJitterBuffer는 Speex/G.711에 대해 true를 반환합니다. 버퍼링 해제 모드에서 활성화된 경우 모든 코덱은 Speex, G.711, Nellymoser, MP3 및 AAC 등의 지터 버퍼를 사용합니다. 이 속성은 버퍼링 모드(bufferTime > 0)에서는 적용되지 않으므로 useJitterBuffer는 false를 반환합니다.
구현
public function get useJitterBuffer():Boolean
public function set useJitterBuffer(value:Boolean):void
videoReliable | 속성 |
videoReliable:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 비디오를 완전히 신뢰할 수 있는 상태로 전송할지 여부를 지정합니다. TRUE인 경우 이 NetStream을 통해 전송된 모든 비디오는 완전히 신뢰할 수 있습니다. FALSE인 경우 전송된 비디오는 완전히 신뢰할 수 없지만 제한된 시간 동안 다시 전송되고 삭제됩니다. FALSE 값을 사용하여 비디오 품질을 낮추는 대신 지연 시간을 줄이도록 할 수 있습니다.
부분 신뢰를 지원하지 않는 네트워크 프로토콜에서 이 속성을 FALSE로 설정하려는 경우 이 시도는 무시되고 속성이 TRUE로 설정됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get videoReliable():Boolean
public function set videoReliable(value:Boolean):void
관련 API 요소
videoSampleAccess | 속성 |
videoSampleAccess:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
RTMFP 연결의 경우 이 NetStream에 대한 피어 투 피어 구독자가 비디오 스트림을 캡처할 수 있도록 허용할지 여부를 지정합니다. FALSE인 경우 구독자가 해당 비디오 스트림을 캡처하려고 하면 사용 권한 오류가 표시됩니다.
참고: 이 속성은 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
구현
public function get videoSampleAccess():Boolean
public function set videoSampleAccess(value:Boolean):void
관련 API 요소
videoStreamSettings | 속성 |
videoStreamSettings:VideoStreamSettings
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11/ConnectAddin, AIR 3 |
스트림 압축 속성을 지정합니다. 자세한 내용은 VideoStreamSettings
를 참조하십시오. 시스템에 연결된 카메라가 없는 경우 null이 반환됩니다.
구현
public function get videoStreamSettings():VideoStreamSettings
public function set videoStreamSettings(value:VideoStreamSettings):void
관련 API 요소
NetStream | () | 생성자 |
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetConnection 객체를 통해 미디어 파일을 재생하고 데이터를 전송하는 데 사용할 수 있는 스트림을 만듭니다.
NetStream 객체의 netStatus
이벤트를 처리하지 않는 것은 유효하지 않은 것으로 간주됩니다. 오류를 방지하려면 NetStream 객체를 생성한 후, 그리고 해당 play()
메서드를 호출하기 전에 netStatus
에 대해 리스너를 등록합니다.
connection:NetConnection — NetConnection 객체입니다.
| |
peerID:String (default = "connectToFMS ") — 이 선택적 매개 변수는 Flash Player 10 이상에서 RTMFP 연결과 함께 사용하는 데 사용 가능합니다. NetConnection.protocol 속성의 값이 "rtmfp" 가 아닌 경우 이 매개 변수는 무시됩니다. 다음 값 중 하나를 사용합니다.
대부분의 경우 이 매개 변수를 생성자 문에 포함하지만 |
오류
ArgumentError — NetConnection 인스턴스가 연결되지 않았습니다.
|
관련 API 요소
DIRECT_CONNECTIONS
farID
flash.media.Video.attachCamera()
flash.net.GroupSpecifier
flash.net.GroupSpecifier.groupspecWithAuthorizations()
flash.net.GroupSpecifier.groupspecWithoutAuthorizations()
flash.net.GroupSpecifier.multicastEnabled
flash.net.NetConnection
flash.net.NetConnection.nearID
flash.net.NetConnection.protocol
flash.net.NetGroup
flash.events.NetStatusEvent.info.code="NetStream.Connect.Rejected"
flash.events.NetStatusEvent.info.code="NetStream.Connect.Success"
예제 ( 예제 사용 방법 )
videoURL
변수에 할당된 비디오를 점진적으로 다운로드 및 표시하는 연결을 보여 줍니다.
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
videoURL
변수에 할당된 비디오를 스트림하고 표시하는 연결을 보여 줍니다. 이 비디오는 connect()
명령에 지정된 원격 Flash Media Server 인스턴스에 있습니다.
var my_video:Video = new Video(); addChild(my_video); 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_video.attachNetStream(my_ns); my_ns.play(videoURL);
appendBytes | () | 메서드 |
public function appendBytes(bytes:ByteArray):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
재생을 위해 NetStream에 ByteArray를 전달합니다. NetStream에서 "데이터 생성 모드"로 이 메서드를 호출합니다. NetStream을 데이터 생성 모드로 설정하려면 null
에 연결된 NetConnection에서 만들어진 NetStream에서 NetStream.play(null)
를 호출합니다. 데이터 생성 모드가 아닌 NetStream에서 appendBytes()
메서드를 호출하는 것은 오류이며 예외가 발생합니다.
참고: 이 메서드는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
바이트 파서는 헤더를 사용하여 FLV 파일을 인식합니다. 헤더가 파싱되면 appendBytes()
는 이후 발생하는 모든 호출을 동일한 실제 또는 가상 파일의 연속으로 봅니다. appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
을 호출하지 않는 한 다른 헤더는 없습니다.
NetStream 객체는 두 개의 버퍼, 즉 appendBytes()
에서 NetStream까지의 FIFO와 재생 버퍼를 갖습니다. FIFO는 부분 FLV 태그 리어셈블리 버퍼이며 완료되지 않은 FLV 태그 하나를 포함합니다. NetStream.seek()
를 호출하여 두 버퍼를 모두 플러시합니다. seek()
를 호출한 후 appendBytesAction()
을 호출하여 추가된 다음 메시지의 타임스탬프에서 시작하도록 시간 간격을 다시 설정합니다.
appendBytes()
를 호출할 때마다 FLV 태그가 완료될 때까지 FIFO에 바이트가 추가됩니다. FLV 태그가 완료되면 재생 버퍼로 이동합니다. appendBytes()
에 대한 호출은 여러 FLV 태그를 쓸 수 있습니다. 첫 번째 바이트는 기존 FLV 태그를 완료하며, 완료되고 나면 재생 버퍼로 이동합니다. 완료된 FLV 태그는 재생 버퍼로 이동하고 완료된 FLV 태그를 구성하지 않는 나머지 바이트는 FIFO로 이동합니다. FIFO 내의 바이트는 appendBytes()
에 대한 호출에 의해 완료되거나 RESET_SEEK
또는 RESET_BEGIN
인수를 사용한 appendBytesAction()
호출에 의해 플러시됩니다.
참고: 바이트 파서는 appendBytes()
에 대한 다음 호출이 발생할 때까지는 appendBytes()
에 대한 호출을 완전히 디코딩하지 못할 수 있습니다.
매개 변수
bytes:ByteArray |
관련 API 요소
appendBytesAction | () | 메서드 |
public function appendBytesAction(netStreamAppendBytesAction:String):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
불연속적인 시간 간격을 나타내고, FIFO를 플러시하며, 파일 헤더 또는 FLV 태그의 시작 부분이 있어야 함을 바이트 파서에 알려 줍니다.
참고: 이 메서드는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
NetStream.seek()
를 호출하여 NetStream 버퍼를 플러시합니다. 바이트 파서는 appendBytesAction()
을 호출하고 RESET_BEGIN
또는 RESET_SEEK
인수를 전달할 때까지 플러시 모드로 유지됩니다. 검색 후 appendBytesAction()
을 호출하려면 "NetStream.Seek.Notify"
이벤트를 캡처합니다. 새 파일 헤더는 NetStream.seek()
를 호출하지 않고도 재생 목록 및 검색을 지원할 수 있습니다.
또한 이 메서드를 호출하여 onSeekPoint()
콜백에 대한 바이트 카운터를 다시 설정할 수 있습니다.
매개 변수
netStreamAppendBytesAction:String |
관련 API 요소
attach | () | 메서드 |
public function attach(connection:NetConnection):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
새 NetConnection 객체에 스트림을 첨부합니다. 이 메서드를 호출하면 연결이 끊겼다가 다시 연결된 후 새 NetConnection에 NetStream을 연결할 수 있습니다. Flash Player 및 AIR에서는 연결이 끊기면 재생 시점에서 스트리밍을 다시 시작합니다. 이 메서드를 사용하여 로드 균형 조정을 구현할 수도 있습니다.
이 메서드를 사용하려면 Flash Media Server 버전 3.5.3 이상이 필요합니다.
이 메서드를 사용하여 스트림 다시 연결을 구현하려면 Flash Media Server 3.5.3 설명서를 참조하십시오.
이 메서드를 사용하여 로드 균형 조정을 구현하려면 다음을 수행합니다.
- 다른 서버의 NetConnection 객체에 연결된 스트림을 첨부합니다.
- 스트림이 새 연결에 성공적으로 첨부되면 데이터 손실을 방지하기 위해 이전 연결에 대해
NetConnection.close()
를 호출합니다. NetStream.play2()
를 호출하고NetStreamPlayOptions.transition
값을 RESUME으로 설정합니다. NetStreamPlayOptions의 나머지 속성에 스트림을 시작하기 위해 원래NetStream.play()
또는NetStream.play2()
를 호출할 때 사용한 값과 동일한 값을 설정합니다.
매개 변수
connection:NetConnection |
관련 API 요소
attachAudio | () | 메서드 |
public function attachAudio(microphone:Microphone):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
소스로 전달된 Microphone 객체에서 NetStream 객체까지 오디오 스트림을 연결합니다. 이 메서드는 지정된 스트림의 제작자만 사용할 수 있습니다.
Flash Media Server에서 이 메서드를 사용하여 라이브 오디오를 서버에 전송합니다. publish()
메서드를 호출하기 전 또는 후에 이 메서드를 호출합니다.
사운드 캡처 장치의 속도를 일치시키려면 Microphone.rate
속성을 설정합니다. setSilenceLevel()
을 호출하여 묵음 레벨 임계값을 설정합니다. 오디오 스트림의 사운드 속성(볼륨 및 패닝)을 제어하려면 Microphone.soundTransform
속성을 사용합니다.
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://server.domain.com/app"); var ns:NetStream = new NetStream(nc); 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; ns.attachAudio(live_mic); ns.publish("mic_stream","live")
오디오를 들으려면 NetStream.play()
메서드를 호출하고 DisplayObjectContainer.addChild()
를 호출하여 표시 목록의 객체로 오디오를 라우팅합니다.
매개 변수
microphone:Microphone — 전송할 오디오 스트림의 소스입니다.
|
관련 API 요소
attachCamera | () | 메서드 |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라에서 비디오 캡처를 시작하거나 theCamera
가 null
로 설정된 경우 캡처를 중단합니다. 이 메서드는 지정된 스트림의 제작자만 사용할 수 있습니다.
이 메서드는 Flash Media Server와 함께 사용하기 위한 것입니다. 자세한 내용은 클래스 설명을 참조하십시오.
비디오 소스를 첨부한 후 전송을 시작하려면 NetStream.publish()
를 호출해야 합니다. 비디오를 표시하려는 구독자는 NetStream.play()
및 Video.attachCamera()
메서드를 호출하여 스테이지에 비디오를 표시해야 합니다.
snapshotMilliseconds
를 사용하여 하나의 스냅샷(값 0 지정)을 전송하거나, 이 값을 양수로 지정하여 지정된 밀리초 수만큼의 트레일러를 비디오 피드에 추가하여 일련의 스냅샷(저속 촬영 장면)을 전송할 수 있습니다. 트레일러는 비디오 메시지의 표시 시간을 연장합니다. attachCamera()
를 반복 호출(snapshotMilliseconds
에 양수 값 지정)하면 스냅샷과 트레일러가 교대로 반복되어 저속 촬영 장면이 만들어집니다. 예를 들어 매일 프레임 하나를 캡처하여 이를 비디오 파일에 추가할 수 있습니다. 구독자가 파일을 재생하면 각 프레임이 지정된 밀리초 동안 화면에 표시되었다가 다음 프레임이 표시됩니다.
snapshotMilliseconds
매개 변수의 목적은 Camera.setMode()
로 설정할 수 있는 fps
매개 변수와 다릅니다. snapshotMilliseconds
를 설정하면서 기록된 프레임 간에 경과되는 시간을 제어합니다. Camera.setMode()
를 사용하여 fps
를 지정할 경우에는 기록과 재생 간에 경과되는 시간을 제어합니다.
예를 들어 5분마다 하나씩, 총 100개의 스냅샷을 만들려고 합니다. 다음과 같은 두 가지 방법을 사용할 수 있습니다.
- 5분 간격으로
NetStream.attachCamera(myCamera, 500)
명령을 100회 실행할 수 있습니다. 기록하는 데 500분이 걸리지만, 결과 파일의 재생 시간은 50초입니다(프레임 간격이 500밀리초인 100개 프레임). fps
값을 1/300로 하여(300초, 즉 5분마다 1회)Camera.setMode()
명령을 실행한 다음NetStream.attachCamera(source)
명령을 실행하여 카메라가 500분 동안 연속 캡처하게 합니다. 기록하는 데 걸린 시간과 동일한 500분간 결과 파일이 재생되며, 각 프레임이 5분간 표시됩니다.
두 방법 모두 동일하게 500개의 프레임을 캡처하며 모두 유용한 방법입니다. 어떤 방법을 사용할지는 주로 재생 요구 사항에 따라 달라집니다. 예를 들어 두 번째 경우에는 전체 시간의 오디오를 기록할 수 있습니다. 또한 두 파일 모두 크기가 거의 동일합니다.
매개 변수
theCamera:Camera — 비디오 전송의 소스입니다. 유효 값은 Camera 객체(비디오 캡처 시작)와 null 입니다. null 을 전달할 경우 응용 프로그램은 비디오 캡처를 중단하고 전송되는 추가 매개 변수는 무시됩니다.
| |
snapshotMilliseconds:int (default = -1 ) — 비디오 스트림이 연속인지, 단일 프레임인지 아니면 저속 촬영 사진에 사용되는 일련의 단일 프레임인지 지정합니다.
|
close | () | 메서드 |
public function close():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
스트림의 모든 데이터 재생을 중단하고, time
속성을 0으로 설정하며, 해당 스트림을 다른 용도로 사용할 수 있도록 합니다. 또한 이 메서드는 HTTP를 통해 다운로드된 비디오 파일의 로컬 복사본을 삭제합니다. 응용 프로그램은 작성한 파일의 로컬 복사본을 삭제하지만 복사본은 캐시 디렉토리에서 유지될 수 있습니다. 비디오 파일이 캐시나 로컬에 저장되는 것을 완전히 차단하려면 Flash Media Server를 사용합니다.
Flash Media Server를 사용할 경우, 이 메서드는 NetStream.play()
를 배급하는 스트림에서 또는 NetStream.publish()
를 구독하는 스트림에서 호출할 때 암시적으로 호출됩니다. 다음에 유념하십시오.
-
배급 스트림에서
close()
를 불러올 경우 스트림은 배급을 멈추고 제작자는 다른 목적으로 이 스트림을 사용할 수 있습니다. 스트림이 배급을 중단했기 때문에 구독자는 더이상 스트림으로 배급 중이던 내용을 수신할 수 없습니다. -
구독 스트림에서
close()
를 불러올 경우 스트림은 구독자를 위해 재생을 멈추고 구독자는 다른 목적으로 이 스트림을 사용할 수 있습니다. 다른 구독자들은 영향을 받지 않습니다. -
flash.net.NetStream.play(false)
을 사용함으로써 스트림을 종료하거나 스트림 유형을 변경하지 않고서도 구독 스트림의 재생을 중단할 수 있습니다.
관련 API 요소
dispose | () | 메서드 |
public function dispose():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3.0 |
NetStream 객체가 보유한 모든 리소스를 해제합니다.
dispose()
메서드는 close
메서드와 비슷합니다. 두 메서드 간의 주된 차이는 dispose()
의 경우 현재 비디오 프레임을 표시하는 데 사용되는 메모리를 해제한다는 점입니다. 이 프레임이 현재 화면에 표시되어 있는 경우에는 디스플레이에 아무것도 표시되지 않습니다. close()
메서드는 이 메모리를 해제하지 않으므로 디스플레이의 표시 내용을 그대로 유지합니다.
onPeerConnect | () | 메서드 |
public function onPeerConnect(subscriber:NetStream):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
피어 배급 스트림이 피어 구독 스트림과 일치할 때 호출됩니다. 구독자가 제작자에 연결되기 전에 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, Flash Lite 4 |
비디오 스트림의 재생을 정지합니다. 비디오가 이미 정지한 경우 이 메서드를 호출하면 아무 것도 수행되지 않습니다. 비디오를 일시 정지 후 재생을 계속하려면 resume()
를 호출합니다. 일시 정지와 재생 사이를 전환하려면(먼저 비디오를 일시 정지한 다음 다시 재생) togglePause()
를 호출합니다.
Flash Player 9.0.115.0부터 Flash Player는 NetStream.pause()
가 호출되어도 더 이상 버퍼를 지우지 않습니다. 이 비헤이비어를 "스마트 일시 정지"라고 합니다. Flash Player 9.0.115.0 이전에서 Flash Player는 재생을 다시 시작하기 전에 버퍼가 채워지기를 기다렸기 때문에 자주 지연이 발생했습니다.
참고: 역호환성을 위해 "NetStream.Buffer.Flush"
이벤트(NetStatusEvent.info
속성 참조)는 여전히 발생합니다. 하지만 서버에서 버퍼를 플러시하지는 않습니다.
단일 일시 정지의 경우 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()
를 사용하여 사용자가 광고를 보는 등의 작업을 수행하는 동안 데이터를 버퍼링한 다음 주 비디오가 시작할 때 일시 정지를 해제할 수 있습니다.
관련 API 요소
play | () | 메서드 |
public function play(... arguments):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
로컬 디렉토리 또는 웹 서버에서 미디어 파일을 재생하고 Flash Media Server에서 미디어 파일 또는 라이브 스트림을 재생합니다. 상태 및 오류 메시지를 보고하려면 NetStatusEvent
객체를 전달합니다.
지원되는 코덱 및 파일 형식에 대한 자세한 내용은 다음을 참조하십시오.
파일 및 라이브 스트림 재생 작업 과정
- 비디오를 표시하는 Video 객체를 만들고
addChild()
를 호출하여 비디오를 스테이지에 추가합니다. NetConnection 객체를 만들고
NetConnection.connect()
를 호출합니다.로컬 디렉토리 또는 웹 서버에서 파일을 재생하려면 null을 전달합니다.
Flash Media Server에서 기록된 파일 또는 라이브 스트림을 재생하려면 Flash Media Server 응용 프로그램의 URI를 전달합니다.
- NetConnection 객체의
addEventListener()
메서드를 호출하여netStatus
(NetStatusEvent.NET_STATUS
) 이벤트를 수신합니다. "NetConnection.Connect.Success"
에서 NetStream 객체를 만들고 해당 생성자에 NetConnection 객체를 전달합니다.- Video 객체의
attachNetStream()
메서드를 호출하고 NetStream 객체를 전달합니다. NetStream 객체의
play()
메서드를 호출합니다.라이브 스트림을 재생하려면
NetStream.publish()
메서드에 전달된 스트림 이름을 전달합니다.기록된 파일을 재생하려면 해당 파일 이름을 전달합니다.
참고: 항상 Video 객체를 스테이지에 추가한 다음 NetStream을 연결한 후에 NetStream 객체의 play()
메서드를 호출하는 것이 가장 좋은 방식입니다.
데이터 생성 모드 사용
"데이터 생성 모드"를 사용하려면 play(null)
을 호출합니다. 이 모드에서 appendBytes()
메서드를 호출하여 NetStream에 데이터를 전달합니다. 데이터 생성 모드를 사용하여 HTTP를 통해 Apache HTTP Server에 있는 Adobe HTTP Dynamic Streaming Origin Module로부터 내용을 스트리밍합니다. HTTP 동적 스트리밍을 사용하면 클라이언트가 파일의 모든 지점을 빠르게 검색할 수 있습니다. OSMF(Open Source Media Framework)는 VOD 및 라이브 스트림을 위한 HTTP 동적 스트리밍을 지원합니다. NetStream 데이터 생성 모드 활용 사례는 OSMF 소스를 다운로드하여 참고하십시오. HTTP 동적 스트리밍에 대한 자세한 내용은 HTTP 동적 스트리밍을 참조하십시오.
Flash Media Server 없이 이 메서드를 사용하는 경우에는 보안 고려 사항이 있습니다. local-trusted 또는 local-with-networking 샌드박스에 있는 파일은 원격 샌드박스에서 비디오 파일을 로드하고 재생할 수 있지만 URL 정책 파일을 통한 명시적인 허용이 없으면 해당 원격 파일의 데이터에 액세스할 수 없습니다. 또한 SWF 내용을 포함하는 HTML 페이지에서 object
및 embed
태그의 allowNetworking
매개 변수를 설정하여 Flash Player에서 실행 중인 SWF 파일에서 이 메서드를 사용하지 못하도록 할 수 있습니다. 보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목 보안을 참조하십시오.
매개 변수
... arguments — 로컬 파일 재생
미디어 파일의 위치입니다. 인수는 String, Flash Media Server에서 파일 재생
다음 표에 설명된 파일 형식을 재생할 수 있습니다. 구문은 파일 형식에 따라 다릅니다.
데이터 생성 모드 사용
"데이터 생성 모드"를 사용하려면 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대한 특별 고려 사항 H.264 비디오의 경우 비디오 재생을 위한 iOS API에서는 파일 또는 스트림에 대한 URL만 허용됩니다. 디코딩할 H.264 비디오 데이터의 버퍼를 전달할 수는 없습니다. 비디오 소스에 따라 다음과 같이 적절한 인수를
|
이벤트
status: — DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다. code 속성의 값은 "DRM.encryptedFLV" 입니다.
|
오류
SecurityError — 신뢰할 수 없는 로컬 SWF 파일은 인터넷 통신이 불가능합니다. 이 SWF 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는 신뢰할 수 있는 파일로 다시 규정하면 이 오류를 해결할 수 있습니다.
| |
ArgumentError — 하나 이상의 매개 변수를 지정해야 합니다.
| |
Error — NetStream Object가 유효하지 않습니다. NetConnection의 실패가 원인일 수 있습니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
play()
메서드는 파일 이름 확장자를 지정해야 합니다.
ns.play("mp4:samples/record1.f4v", 0, 100, true);
ns.play("livestream");
var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyVideo.attachNetStream(MyNS); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); //the clouds.flv video has metadata we're not using, so create //an error handler to ignore the message generated by the runtime //about the metadata MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); function asyncErrorHandler(event:AsyncErrorEvent):void { //ignore metadata error message }
play2 | () | 메서드 |
public function play2(param:NetStreamPlayOptions):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
비트율이 다른 파일 사이를 부드럽게 전환하고, 연결이 끊겼다가 다시 연결되면 NetStream이 다시 시작되도록 합니다.
이 메서드는 NetStream.play()
의 향상된 버전입니다. play()
메서드와 마찬가지로 play2()
메서드는 미디어 파일의 재생을 시작하거나 미디어 파일을 대기열에 추가하여 재생 목록을 만듭니다. Flash Media Server와 함께 사용하는 경우 서버에서 다른 미디어 파일로 전환하도록 요청하기도 합니다. 이러한 전환은 클라이언트 응용 프로그램에서 매끄럽게 수행됩니다. 다음 기능은 play2()
스트림 전환을 사용합니다.
동적 스트리밍
Flash Media Server 3.5 이상에서 지원되는 동적 스트리밍을 사용하면 여러 비트율에서 인코딩된 스트림을 사용할 수 있습니다. 보는 사용자의 네트워크 환경이 변하면 그에 맞는 최적의 비트율이 다시 적용됩니다. NetStreamInfo
클래스를 사용하여 네트워크 조건을 모니터링하고 데이터를 기반으로 스트림을 전환합니다. 다른 기능의 클라이언트에서 사용할 수 있도록 스트림을 전환할 수도 있습니다. 자세한 내용은 "Adobe Flash Media Server 개발자 안내서"에서 "동적 스트리밍"을 참조하십시오.
Adobe는 NetStream 클래스를 확장하는 DynamicStream이라는 사용자 정의 ActionScript 클래스를 작성했습니다. DynamicStream 클래스를 사용하면 네트워크 조건을 검색하는 코드를 직접 작성하지 않고 응용 프로그램에서 동적 스트리밍을 구현할 수 있습니다. 동적 스트리밍 코드를 직접 작성하는 경우에도 DynamicStream 클래스를 참조 구현으로 사용합니다. 자세한 내용을 보려면 Flash Media Server 도구 및 다운로드 페이지에서 클래스 및 클래스 설명서를 다운로드하십시오.
스트림 다시 연결
Flash Media Server 3.5.3 이상에서 지원되는 스트림 다시 연결을 사용하면 연결이 끊기더라도 사용자에게 미디어가 계속 표시됩니다. 미디어에서는 ActionScript 논리에서 Flash Media Server에 재연결하는 동안 버퍼를 사용하여 재생을 계속합니다. 다시 연결되면 NetStream.attach()
를 호출하여 새 NetConnection이 있는 동일한 NetStream 객체를 사용합니다. NetStream.attach()
, NetStreamPlayTransitions.RESUME
및 NetStreamPlayTrasitions.APPEND_AND_WAIT
API를 사용하여 스트림을 다시 연결합니다. 자세한 내용은 Flash Media Server 3.5.3 설명서를 참조하십시오.
매개 변수
param:NetStreamPlayOptions |
관련 API 요소
preloadEmbeddedData | () | 메서드 |
public function preloadEmbeddedData(param:NetStreamPlayOptions):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.5, Flash Lite 4 |
로컬로 저장된 미디어 파일에서 DRM 메타데이터를 추출합니다.
preloadEmbeddedMetaData()
를 오프라인 재생에 필요한 DRM 바우처를 다운로드 및 호출하는 첫 번째 단계로 사용합니다. 미디어 파일에 DRM 메타데이터가 포함되어 있으면DRMContentData 객체가 NetStream 클라이언트 onDRMContentData
함수로 전달됩니다. 이 DRMContentData 객체에는 내용을 재생하는 데 필요한 바우처를 얻기 위한 정보가 포함되어 있습니다. DRMContentData 객체를 DRMManager loadVoucher()
메서드로 전달하여 바우처를 다운로드합니다.
DRM 바우처를 미리 로드하는 단계는 다음과 같습니다.
-
메타데이터를 사전 로드하기 위한 새 NetStream 객체를 만듭니다.
- NetStream
클라이언트
의onDRMContentData
속성에 콜백 함수를 할당합니다. - 새 NetStreamPlayOptions 객체를 만들어 해당
streamName
속성을 로컬 비디오 파일의 URL 문자열로 설정합니다. preloadEmbeddedMetadata()
를 호출하여 NetStreamPlayOptions 객체에 전달합니다.onDRMContentData
콜백에 대한 응답으로 DRMManagerloadVoucher()
메서드를 호출하여 DRMContentData 객체에 전달합니다. DRMContentData 객체의authenticationMethod
속성 값이userNameAndPassWord
이면 바우처를 로드하기 전에 미디어 권한 서버에 있는 사용자를 인증합니다.- 미리 로드하는 데 사용한 NetStream을 닫습니다.
참고: 메타데이터를 미리 로드하는 경우와 내용을 재생하는 경우에 모두 동일한 NetStream 객체를 사용하려면 재생을 시작하기 전에 미리 로드하는 작업에서 생성되는 onPlayStatus
호출을 기다립니다.
다운로드한 바우처는 로컬 캐시에 저장됩니다. 내용을 온라인으로 재생할 때도 바우처가 다운로드되어 캐시에 저장됩니다. DRM으로 보호되는 내용 파일이 표시되면 로컬 저장소에서 캐시된 바우처가 검색됩니다. DRMManager를 사용하여 바우처 캐시를 관리합니다.
참고: HTTP, HTTPS 또는 RTMP 연결을 통해 DRM 메타데이터를 미리 로드할 수는 없습니다. 파일 시스템에 저장된 파일에서만 메타데이터를 미리 로드할 수 있습니다.
매개 변수
param:NetStreamPlayOptions — 내용 파일 처리 중 사용할 옵션을 설명하는 NetStreamPlayOptions입니다.
|
관련 API 요소
publish | () | 메서드 |
public function publish(name:String = null, type:String = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
클라이언트의 스트리밍 오디오, 비디오 및 데이터 메시지를 Flash Media Server로 전송합니다. 전송하는 동안 스트림을 선택적으로 기록할 수 있습니다. 이 메서드는 해당 스트림에 대한 정보와 함께 NetStatusEvent 객체를 전달합니다. NetStream.publish()
를 호출하기 전에 "NetConnection.Connect.Success"
이벤트를 캡처하여 응용 프로그램이 Flash Media Server에 연결되었는지 확인합니다.
제작하는 동안 FLV 또는 F4V 형식으로 파일을 기록할 수 있습니다. 파일을 F4V 형식으로 기록하는 경우에는 병합 도구를 사용하여 다른 응용 프로그램에서 파일을 편집 또는 재생합니다. 도구를 다운로드하려면 http://www.adobe.com/go/fms_tools_kr을 참조하십시오.
참고: 스트림을 재생하는 데 이 메서드를 사용하면 안 됩니다. 스트림을 재생하려면 NetStream.play()
메서드를 호출합니다.
스트림 제작 작업 과정
- NetConnection 객체를 만들고
NetConnection.connect()
를 호출합니다. NetConnection.addEventListener()
를 호출하여 NetStatusEvent 이벤트를 수신합니다."NetConnection.Connect.Success"
이벤트에서 NetStream 객체를 만들고 해당 생성자에 NetConnection 객체를 전달합니다.- 오디오 및 비디오를 캡처하려면
NetStream.attachAudio()
메서드 및NetStream.attachCamera()
메서드를 호출합니다. - 스트림을 게시하려면
NetStream.publish()
메서드를 호출합니다. 데이터를 게시하면서 기록하여 사용자가 나중에 재생할 수 있게 할 수 있습니다.
참고: NetStream은 스트림을 제작하거나 재생할 수 있지만 두 가지를 모두 수행할 수는 없습니다. 스트림을 제작하고 서버에서 재생되는 것을 보려면 NetStream 객체를 두 개 만듭니다. 하나의 NetConnection 객체를 통해 여러 NetStream 객체를 전송할 수 있습니다.
Flash Media Server에서 스트림을 기록하는 경우 파일이 만들어집니다. 기본적으로 Flash Media Server는 NetConnection.connect()
에 전달된 응용 프로그램 인스턴스 이름을 사용하여 디렉토리를 만들고 해당 디렉토리에 파일을 저장합니다. 예를 들어 다음 코드는 "lectureseries" 응용 프로그램의 기본 인스턴스에 연결하고 "lecture"라는 스트림을 기록합니다. "lecture.flv" 파일은 applications/lectureseries/streams/_definst_ 디렉토리에 기록됩니다.
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://fms.example.com/lectureseries"); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
다음 예제에서는 같은 응용 프로그램의 "monday" 인스턴스에 연결합니다. "lecture.flv" 파일은 /applications/lectureseries/streams/monday: 디렉토리에 기록됩니다.
var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.connect("rtmp://fms.example.com/lectureseries/monday"); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
매개 변수
name:String (default = null ) — 스트림을 식별하는 문자열입니다. 이 스트림을 구독하는 클라이언트에서 NetStream.play() 를 호출할 경우 이 이름을 전달합니다. 스트림 이름에 "/"를 붙이지 마십시오. 예를 들어 스트림 이름을 "bolero/" 와 같이 사용하지 마십시오.
다음 표에 설명된 형식으로 파일을 기록할 수 있습니다(MP3 파일 형식에는
| |||||||||||||
type:String (default = null ) — 스트림 배급 방법을 지정하는 문자열입니다. 유효 값은 "record ", "append ", "appendWithGap " 및 "live "입니다. 기본값은 "live "입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
이 예제를 실행하려면 컴퓨터에 카메라가 연결되어 있어야 합니다. 또한 라이브러리에 Button 및 Label 구성 요소를 추가해야 합니다.
응용 프로그램에서 스트림을 게시하는, 즉 Flash Media Server에 보내는 버튼은 응용 프로그램이 서버에 연결된 후에만 사용 가능합니다. 또한 스트림이 게시되어야만 응용 프로그램에서 서버의 스트림이 재생됩니다. NetStatusEvent
는 이러한 경우를 지정하는 code
속성과 함께 info
객체를 반환합니다. netStatusHandler
함수는 NetConnection 및 NetStream 클래스에 대한 이러한 이벤트를 처리합니다.
package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.media.Camera; import flash.net.NetConnection; import flash.net.NetStream; import fl.controls.Button; import fl.controls.Label; public class NetStream_publish extends Sprite { private var connectionURL:String = "rtmp://localhost/live/"; private var videoURL:String = "liveVideo"; private var nc:NetConnection; private var ns_publish:NetStream; private var ns_playback:NetStream; private var video_publish:Video; private var video_playback:Video; private var cam:Camera; private var b:Button; private var l:Label; public function NetStream_publish() { setUpUI(); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Add bandwidth detection handlers on the NetConnection Client to // prevent Reference Errors at runtime when using the "live" and "vod" applications. var clientObj:Object = new Object(); clientObj.onBWDone = onBWDone; clientObj.onBWCheck = onBWCheck; nc.client = clientObj; // Connect to the "live" application on Flash Media Server. nc.connect(connectionURL); } private function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code + " | " + event.info.description); switch (event.info.code) { case "NetConnection.Connect.Success": // Enable the "Publish" button after the client connects to the server. b.enabled = true; break; case "NetStream.Publish.Start": playbackVideo(); break; } } private function publishVideo(event:MouseEvent):void{ // Disable the button so that you can only publish once. b.enabled = false; // Create a NetStream to send video to FMS. ns_publish = new NetStream(nc); ns_publish.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Publish (send) the video to FMS. cam = Camera.getCamera(); ns_publish.attachCamera(cam); ns_publish.publish(videoURL); } private function playbackVideo():void { // Create the Video object to show the video on the stage video_playback = new Video(cam.width, cam.height); video_playback.x = cam.width + 20; video_playback.y = 10; addChild(video_playback); // Create a NetStream to receive the video from FMS. ns_playback = new NetStream(nc); ns_playback.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Display the video that was published to FMS. video_playback.attachNetStream(ns_playback); ns_playback.play(videoURL); } private function setUpUI():void { b = new Button(); b.addEventListener(MouseEvent.CLICK, publishVideo); b.width = 150; b.label = "Publish video to server"; b.move(10, 150); b.enabled = false; l = new Label(); l.width = 150; l.text = "Playing back from server" l.move(190, 150); addChild(b); addChild(l); } // Handlers called by the Flash Media Server "live" and "vod" applications. public function onBWDone(... rest):Boolean { return true; } public function onBWCheck(... rest):Number { return 0; } } }
receiveAudio | () | 메서드 |
public function receiveAudio(flag:Boolean):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
입력 오디오를 스트림에서 재생할지 여부를 지정합니다. 이 메서드는 지정된 스트림에 가입된 클라이언트에서만 사용할 수 있습니다. 스트림의 게시자가 사용할 수 없습니다. NetStream.play()
메서드를 호출하기 전이나 후에 이 메서드를 호출합니다. 예를 들어 이 메서드를 단추에 연결하여 사용자가 오디오를 음소거 및 음소거 해제할 수 있도록 합니다. Flash Media Server에서 재생되는 유니캐스트 스트림에서만 이 메서드를 사용합니다. 이 메서드는 RTMFP 멀티캐스트 스트림에서 또는 NetStream.appendBytes()
메서드를 사용할 때 작동하지 않습니다.
매개 변수
flag:Boolean — 입력 오디오가 스트림에서 재생되는지(true ) 그렇지 않은지(false )를 지정합니다. 기본값은 true 입니다. 지정된 스트림에 오디오 데이터만 들어 있는 경우 NetStream.time 은 false 를 전달할 때 점진적 재생을 중지합니다.
|
receiveVideo | () | 메서드 |
public function receiveVideo(flag:Boolean):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
입력 비디오를 스트림에서 재생할지 여부를 지정합니다. 이 메서드는 지정된 스트림에 가입된 클라이언트에서만 사용할 수 있습니다. 스트림의 게시자가 사용할 수 없습니다. NetStream.play()
메서드를 호출하기 전이나 후에 이 메서드를 호출합니다. 예를 들어 이 메서드를 단추에 연결하여 사용자가 비디오를 표시하고 숨길 수 있도록 합니다. Flash Media Server에서 재생되는 유니캐스트 스트림에서만 이 메서드를 사용합니다. 이 메서드는 RTMFP 멀티캐스트 스트림에서 또는 NetStream.appendBytes()
메서드를 사용할 때 작동하지 않습니다.
매개 변수
flag:Boolean — 입력 비디오가 이 스트림에서 재생되는지(true ) 그렇지 않은지(false )를 지정합니다. 기본값은 true 입니다. 지정된 스트림에 비디오 데이터만 들어 있는 경우 NetStream.time 은 false 를 전달할 때 점진적 재생을 중지합니다.
|
receiveVideoFPS | () | 메서드 |
public function receiveVideoFPS(FPS:Number):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
입력 비디오의 프레임 속도를 지정합니다. 이 메서드는 지정된 스트림에 가입된 클라이언트에서만 사용할 수 있습니다. 스트림의 게시자가 사용할 수 없습니다. NetStream.play()
메서드를 호출하기 전이나 후에 이 메서드를 호출합니다. 예를 들어 이 메서드를 호출하여 사용자가 비디오 프레임 속도를 설정할 수 있도록 합니다. 현재 프레임 속도를 확인하려면 NetStream.currentFPS
를 사용합니다. 비디오 수신을 중지하려면 0
을 전달합니다.
비디오의 프레임 속도를 제한하기 위해 FPS 매개 변수에 값을 전달하면 Flash Media Server는 비디오의 무결성을 유지하면서 프레임 속도를 줄이려고 합니다. 두 키프레임 사이에서 서버는 원하는 속도를 만족시키는 데 필요한 최소 프레임 수를 보냅니다. I-frame(또는 중간 프레임)은 연속해서 보내야 합니다. 그렇지 않으면 비디오가 손상됩니다. 따라서 필요한 프레임 수가 키프레임 뒤에 즉시 연속적으로 전송됩니다. 프레임이 일정하게 분배되지 않더라도 모션은 지연으로 인해 세그먼트에서 자연스럽게 보입니다.
Flash Media Server에서 재생되는 유니캐스트 스트림에서만 이 메서드를 사용합니다. 이 메서드는 RTMFP 멀티캐스트 스트림에서 또는 NetStream.appendBytes()
메서드를 사용할 때 작동하지 않습니다.
매개 변수
FPS:Number — 입력 비디오의 초당 프레임 재생 속도를 지정합니다.
|
resetDRMVouchers | () | 메서드 |
public static function resetDRMVouchers():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 11.8, Flash Lite 4 |
AIR 응용 프로그램에서는 로컬에서 캐시된 모든 DRM(디지털 권한 관리) 바우처 데이터가 삭제됩니다. 브라우저 기반 응용 프로그램의 경우 3322 오류가 발생한 동안에만 사용할 수 있으며 보호된 내용 재생 설정 패널과 마찬가지로 작동합니다.
사용자가 보호된 내용에 액세스할 수 있으려면 응용 프로그램에 필요한 바우처를 미디어 권한 서버에서 다시 다운로드해야 합니다. 이 함수를 호출하는 것은 DRMManager 객체의 resetDRMVouchers()
함수를 호출하는 것과 동일합니다.
오류
IOError — 바우처 데이터는 삭제할 수 없습니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
NetStream.resetDRMVouchers();
resume | () | 메서드 |
public function resume():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
정지했던 비디오 스트림의 재생을 다시 시작합니다. 비디오가 이미 재생 중인 경우 이 메서드를 호출하면 아무 것도 수행되지 않습니다.
관련 API 요소
seek | () | 메서드 |
public function seek(offset:Number):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 위치와 가장 가까운 키프레임(비디오 업계에서는 I-프레임이라고도 부름)을 찾습니다. 키프레임은 스트림 시작으로부터 초 단위로 오프셋만큼 떨어진 곳에 위치합니다.
비디오 스트림은 보통 두 가지 유형의 프레임, 즉 키프레임(또는 I-프레임)과 P-프레임으로 인코딩됩니다. 키프레임은 전체 이미지를 포함하고 있는 반면 P-프레임은 키프레임 사이의 추가 비디오 정보를 제공하는 중간 프레임입니다. 비디오 스트림에는 보통 매 10-50프레임마다 하나의 키프레임이 있습니다.
Flash Media Server에는 고급 검색, 스마트 검색 등 다양한 유형의 검색 동작이 있습니다.
고급 검색
고급 검색은 기본적으로 설정됩니다. 고급 검색을 사용하지 않으려면 Flash Media Server에서 Application.xml
구성 파일의 EnhancedSeek
요소를 false
로 설정하면 됩니다.
고급 검색이 설정되어 있으면 서버는 이전의 키프레임과 중간의 P-프레임을 기초로 offset
에서 새로운 키프레임을 생성합니다. 그러나, 키프레임을 생성하면 서버의 처리 부하가 높아지기 때문에 생성된 키프레임에 왜곡이 발생할 수 있습니다. 비디오 코덱이 On2일 경우, 검색 지점 앞에 있는 키프레임과 이 키프레임과 검색 지점 사이의 P-프레임이 클라이언트로 전송됩니다.
고급 검색이 해제되어 있으면 서버에서 가장 가까운 키프레임부터 스트리밍을 시작합니다. 예를 들어 0초와 10초에 키 프레임이 있는 비디오의 경우 4초를 검색하면 0초의 키 프레임을 사용하여 4초에서 재생이 시작됩니다. 다음 키프레임이 있는 10초에 도달할 때까지 비디오는 고정 상태를 유지합니다. 좀 더 나은 검색 결과를 얻으려면 키프레임 간격을 줄일 필요가 있습니다. 정상적인 검색 모드에서는 키 프레임 사이에 있는 지점에서 비디오를 시작할 수 없습니다.
스마트 검색
스마트 검색을 설정하려면 NetStream.inBufferSeek
을 true
로 설정합니다.
스마트 검색을 사용하면 Flash Player에서 기존의 뒤로 버퍼 및 앞으로 버퍼 내에서 검색을 할 수 있습니다. 스마트 검색을 해제하면 seek()
에서 Flash Player를 호출할 때마다 Flash Player에서 버퍼를 플러시하고 서버로부터 데이터를 요청합니다. 자세한 내용은 NetStream.inBufferSeek
를 참조하십시오.
데이터 생성 모드에서 검색
데이터 생성 모드일 때 NetStream에서 seek()
를 호출하면 appendBytes()
로 전달된 모든 바이트는 appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
또는 appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK)
을 호출하여 파서를 다시 설정할 때까지 삭제됩니다. 즉, 버퍼에 저장되거나, 부분 메시지 FIFO에 축적되거나, 검색 지점에 대해 파싱되지 않습니다. 데이터 생성 모드에 대한 자세한 내용은 NetStream.play()
를 참조하십시오.
매개 변수
offset:Number — 비디오 파일에서 이동할 근사적인 시간(초) 값입니다. Flash Media Server가 있을 경우 <EnhancedSeek> 이 Application.xml 구성 파일(기본값)에서 true 로 설정되어 있다면 서버는 offset 에서 키프레임을 생성합니다.
|
관련 API 요소
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
이벤트를 확인하고 메타데이터를 검색합니다. 세 번째 항목인 metaData
는 Object
또는 Array
의 인스턴스로 메타데이터 값을 정의하는 속성을 가집니다.
@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 를 두 번째 인수로 사용하며 세 번째 인수는 없습니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
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.client = new CustomClient(); vid.attachNetStream(ns2); ns2.play("dummy"); 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);
setDRMAuthenticationCredentials | () | 메서드 |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Lite 4 |
기본 암호화된 내용을 보는 데 필요한 DRM 인증 자격 증명을 설정합니다.
setDRMAuthenticationCredentials()
메서드는 내용 공급자 또는 프록시 서버에서 인식 및 허용되는 것과 동일한 자격 증명을 제공해야 합니다. 이는 사용자가 내용을 볼 수 있는 권한을 얻기 위해 사용하는 것과 동일한 자격 증명입니다.
매개 변수
userName:String — 유효한 사용자 이름 자격 증명입니다.
| |
password:String — 제공된 사용자 이름에 해당하는 암호 자격 증명입니다.
| |
type:String — 제공할 인증 자격 증명 유형을 지정하는 문자열입니다. 유효한 값은 "drm" 및 "proxy" 입니다. 기본값은 "drm" 입니다.
|
관련 API 요소
step | () | 메서드 |
public function step(frames:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
현재 표시된 프레임을 기준으로 지정한 프레임 수를 앞 또는 뒤로 이동합니다. 양수(앞으로 이동) 또는 음수(뒤로 이동)를 지정합니다. 이 메서드를 호출하여 정확한 앞으로 감기 또는 되감기 함수를 만듭니다.
참고: 이 메서드는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
이 메서드는 데이터가 Flash Media Server 3.5.3 이상에서 스트리밍되고 NetStream.inBufferSeek
가 true
인 경우에만 사용할 수 있습니다. 또한 대상 프레임이 버퍼에 있어야 합니다. 예를 들어 현재 표시된 프레임이 프레임 번호 120인 경우 값을 1000으로 지정하면 프레임 번호 1120이 버퍼에 없는 경우 메서드가 실패합니다.
이 메서드는 pause()
또는 togglePause()
메서드와 함께 사용할 수 있습니다. 재생하는 동안 일시 정지하지 않고 앞으로 또는 뒤로 10프레임 이동하면 이동을 감지할 수 없거나 결함처럼 보입니다. 게다가 pause()
또는 togglePause
를 호출하는 경우 오디오가 무시됩니다.
NetStream.step()
에 대한 호출이 성공하는 경우 NetStatusEvent가 "NetStream.Step.Notify"와 함께 info 객체의 code
속성 값으로 전송됩니다.
매개 변수
frames:int |
관련 API 요소
togglePause | () | 메서드 |
asyncError | 이벤트 |
flash.events.AsyncErrorEvent
속성 AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
기본 비동기 코드에서 비동기적으로 예외가 발생할 때 전달됩니다. 서버가 정의되지 않은 클라이언트에 대한 메서드를 호출할 때 이 이벤트가 전달됩니다.
AsyncErrorEvent.ASYNC_ERROR
상수는 asyncError
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 이벤트를 전달하는 객체입니다. |
error | 이벤트를 트리거한 오류입니다. |
관련 API 요소
drmAuthenticate | 이벤트 |
flash.events.DRMAuthenticateEvent
속성 DRMAuthenticateEvent.type =
flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Lite 4 |
NetStream 객체가 재생 전에 인증용 사용자 자격 증명을 요구하는 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
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 | 서버에서 제공한 사용자 이름 자격 증명에 대한 프롬프트입니다. |
관련 API 요소
drmError | 이벤트 |
flash.events.DRMErrorEvent
속성 DRMErrorEvent.type =
flash.events.DRMErrorEvent.DRM_ERROR
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
DRM(디지털 권한 관리)으로 암호화된 파일의 재생을 시도하는 NetStream 객체에 대해 DRM 관련 오류가 발생할 때 전달됩니다. 예를 들어 DRMErrorEvent 객체는 사용자 권한 부여에 실패할 때 전달됩니다. 이는 사용자가 내용을 볼 수 있는 권한을 구입하지 않았거나 내용 공급자가 보기 응용 프로그램을 지원하지 않기 때문일 수 있습니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
DRMErrorEvent.DRM_ERROR
상수는 drmError
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
errorID | 문제에 할당된 숫자 오류 코드입니다. |
subErrorID | 기본 문제에 대한 자세한 정보를 나타내는 오류 코드입니다. |
target | NetStream 객체입니다. |
관련 API 요소
drmStatus | 이벤트 |
flash.events.DRMStatusEvent
속성 DRMStatusEvent.type =
flash.events.DRMStatusEvent.DRM_STATUS
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
DRM(디지털 권한 관리)으로 암호화된 내용 재생(사용자가 내용을 재생할 수 있도록 인증되고 권한이 부여된 경우)이 시작될 때 전달됩니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
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 | 내용이 로컬 파일 시스템에 저장되어 있는지 여부를 나타냅니다. |
관련 API 요소
ioError | 이벤트 |
flash.events.IOErrorEvent
속성 IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
네트워크 작업의 실패를 유발하는 입력 또는 출력 오류가 발생할 때 전달됩니다.
ioError
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
errorID | 특정 오류와 연결된 참조 번호입니다(AIR만 해당). |
target | 입력/출력 오류가 발생한 네트워크 객체입니다. |
text | 오류 메시지로 표시될 텍스트입니다. |
mediaTypeData | 이벤트 |
flash.events.NetDataEvent
속성 NetDataEvent.type =
flash.events.NetDataEvent
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.3, AIR 2.7 |
비디오 내용을 재생하고 특정 유형의 메시지를 처리할 때 전달됩니다.
NetDataEvent가 전달되는 메시지는 다음과 같습니다.
- onCuePoint
- onImageData
- onMetaData
- onPlayStatus(NetStream.Play.Complete 코드의 경우)
- onTextData
- onXMPData
참고: 이 이벤트는 Android 또는 Blackberry Tablet OS의 브라우저를 통해 Flash Player에서 실행되는 내용이나 iOS의 AIR에서 실행되는 내용에 의해서는 전달되지 않습니다.
netStatus | 이벤트 |
flash.events.NetStatusEvent
속성 NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetStream 객체가 상태 또는 오류 상황을 보고할 때 전달됩니다. netStatus
이벤트에는 연결 시도 성공 또는 실패 등 이벤트에 대한 특정 정보가 포함된 정보 객체인 info
속성이 포함되어 있습니다.
netStatus
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
info | 객체의 상태 또는 오류 상황을 설명하는 속성이 있는 객체입니다. |
target | 상태를 보고하는 NetConnection 또는 NetStream 객체입니다. |
관련 API 요소
onCuePoint | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
비디오 파일을 재생하는 동안 포함된 큐 포인트에 도달했을 때 응답할 리스너를 설정합니다. 비디오가 특정 큐 포인트에 도달했을 때 이 리스너를 사용하여 코드에서 액션을 트리거할 수 있습니다. 이렇게 하면 응용 프로그램의 다른 액션을 비디오 재생 이벤트와 동기화할 수 있습니다. Flash Media Server에서 지원하는 비디오 파일 형식에 대한 자세한 내용은 http://www.adobe.com/go/learn_fms_fileformats_kr를 참조하십시오.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
onCuePoint
는 사실상 NetStream.client
객체의 속성입니다. 이 속성은 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onCuePoint
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의합니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
관련 이벤트 리스너는 NetStream.play()
메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.
다음 유형의 큐 포인트를 비디오 파일에 포함할 수 있습니다.
- 내비게이션 큐 포인트는 비디오 파일 내부에서 키프레임을 지정하며, 큐 포인트의
time
속성이 바로 그 키프레임에 해당합니다. 내비게이션 큐 포인트는 사용자가 비디오 파일을 탐색할 때 책갈피 또는 시작점으로 자주 사용됩니다. - 이벤트 큐 포인트는 시간을 지정합니다. 시간은 특정 키 프레임에 일치할 수도, 일치하지 않을 수도 있습니다. 일반적으로 이벤트 큐 포인트는 비디오에서 다른 응용 프로그램 이벤트 트리거에 사용될 만한 뭔가가 발생하는 시점을 나타냅니다.
onCuePoint
이벤트 객체는 다음과 같은 속성을 갖습니다.
속성 | 설명 |
---|---|
name | 비디오 파일에 포함되었을 때 큐 포인트에 부여된 이름입니다. |
parameters | 이 큐 포인트에 대해 지정된 이름/값 쌍 문자열의 연관 배열입니다. 유효한 문자열이라면 매개 변수 이름 또는 값으로 사용할 수 있습니다. |
time | 재생 중에 비디오 파일에서 큐 포인트가 발생한 시간(초)입니다. |
type | 도달한 큐 포인트 유형으로, 내비게이션 또는 이벤트입니다. |
파일을 처음 인코딩할 때 또는 Flash 제작 도구에서 비디오 가져오기 마법사를 사용하여 비디오 클립을 가져올 때 비디오 파일에서 큐 포인트를 정의할 수 있습니다.
또한 onMetaData
이벤트는 비디오 파일에서 큐 포인트에 대한 정보를 검색합니다. 그러나 onMetaData
이벤트는 비디오 재생이 시작되기 전에 모든 큐 포인트에 대한 정보를 가져옵니다. onCuePoint
이벤트는 재생 중 한 큐 포인트에 대해 지정된 시간에 그 큐 포인트에 대한 정보를 수신합니다.
일반적으로 특정 큐 포인트가 발생한 시간에 코드가 큐 포인트에 응답하게 하려면 onCuePoint
이벤트를 사용하여 코드에서 일부 액션을 트리거합니다.
onMetaData
이벤트에 제공된 큐 포인트 목록을 사용하여 사용자가 비디오 스트림의 미리 정의된 포인트에서 비디오 재생을 시작하게 할 수 있습니다. 큐 포인트의 time
속성 값을 NetStream.seek()
메서드에 전달하여 해당 큐 포인트에서 비디오를 재생합니다.
예제 ( 예제 사용 방법 )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
관련 API 요소
onDRMContentData | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.5, Flash Lite 4 |
AIR가 미디어 파일에 포함된 DRM 내용 메타데이터를 추출할 때 응답할 리스너를 설정합니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
DRMContentData 객체에는 DRM으로 보호된 미디어 파일을 재생하는 데 필요한 바우처를 얻기 위한 정보가 포함되어 있습니다. 이 정보를 통해 DRMManager 클래스를 사용하여 바우처를 다운로드합니다.
onDRMContentData
는 NetStream.client
객체의 속성입니다. 이 속성은 로컬 미디어 파일에서 포함된 데이터를 미리 로드할 때 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onDRMContentData
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 대신 콜백 함수를 하나 정의하여 다음 객체 중 하나에 직접 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. 그러나 NetStream의 하위 클래스를 만들고 그 하위 클래스에서 이벤트 핸들러를 정의하거나, 동적 하위 클래스를 만들고 그 하위 클래스의 인스턴스에 이벤트 핸들러 함수를 추가할 수는 있습니다.
관련 API 요소
onImageData | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Flash Player가 재생 중인 미디어 파일에 포함된 이미지 데이터를 바이트 배열로 받았을 때 응답할 리스너를 설정합니다. 이미지 데이터에서는 JPEG, PNG 또는 GIF 내용을 생성할 수 있습니다. flash.display.Loader.loadBytes()
메서드를 사용하여 바이트 배열을 표시 객체로 로드합니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
onImageData
는 사실상 NetStream.client
객체의 속성입니다. 이 속성은 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onImageData
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 단일 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의합니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
관련 이벤트 리스너는 NetStream.play()
메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.
onImageData 이벤트 객체에는 AMF0 데이터 채널을 통해 송신한 이미지 데이터가 바이트 배열로 포함되어 있습니다.
예제 ( 예제 사용 방법 )
Netstream.client
속성을 사용하여 onTextData
및 onImageData
에 대한 콜백 함수를 처리합니다. onImageDataHandler()
함수에서 onImageData 이벤트 객체 imageData
를 사용하여 바이트 배열을 저장합니다. 또한 onTextDataHandler()
함수에서 onTextData 이벤트 객체 textData
를 사용하여 텍스트 데이터의 각 부분을 저장합니다. 데이터의 각 부분은 textData
객체의 속성입니다.
미디어 파일의 실제 위치를 코드에서의 "yourURL"
위치에 대한 텍스트 또는 이미지 메타데이터로 대체해야 합니다.
또한 사용자 정의 클래스를 사용하여 이미지 및 텍스트 데이터를 처리할 수 있습니다. 자세한 내용 및 예제는 Flash 비디오에서 메타데이터 및 큐 처리 문서를 참조하십시오.
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 my_video:Video = new Video(); addChild(my_video); 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.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } 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]); } } } }
관련 API 요소
onMetaData | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player가 재생 중인 비디오에 포함된 설명 정보를 받았을 때 응답할 리스너를 설정합니다. Flash Media Server에서 지원하는 비디오 파일 형식에 대한 자세한 내용은 http://www.adobe.com/go/learn_fms_fileformats_kr를 참조하십시오.
onMetaData
는 사실상 NetStream.client
객체의 속성입니다. 이 속성은 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명과 NetStream.client
속성을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onMetaData
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 단일 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의할 수 있습니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
Flash Video Exporter 유틸리티(버전 1.1 이상)는 비디오 재생 시간, 만든 날짜, 데이터 속도 및 기타 정보를 비디오 파일 자체에 포함시킵니다. 다른 비디오 인코더는 다른 메타데이터 집합을 포함시킵니다.
관련 이벤트 리스너는 NetStream.play()
메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.
스트림 메타데이터에 포함된 재생 시간 값은 실제 재생 시간과 비슷하지만 정확하게 일치하지 않는 경우가 많습니다. 즉 재생 헤드가 비디오 스트림의 끝에 있을 때 실제 재생 시간과 NetStream.time
속성 값이 항상 일치하는 것은 아닙니다.
onMetaData 이벤트 핸들러에 전달된 이벤트 객체는 데이터의 각 부분에 대한 속성을 하나씩 포함합니다.
예제 ( 예제 사용 방법 )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
관련 API 요소
onPlayStatus | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
NetStream 객체가 스트림 재생을 완료했을 때 응답할 리스너를 설정합니다. 관련 이벤트 객체에서는 netStatus
이벤트를 통해 반환되는 내용 이외에 추가로 정보를 제공합니다. NetStream 객체가 재생 목록 중 한 스트림에서 다른 스트림으로 전환했을 때(정보 객체 NetStream.Play.Switch
에 의해 표시됨) 또는 NetStream 객체가 재생을 끝까지 마쳤을 때(정보 객체 NetStream.Play.Complete
에 의해 표시됨) 이 속성을 사용하여 코드에서 액션을 트리거할 수 있습니다.
onPlayStaus
는 사실상 NetStream.client
객체의 속성입니다. 이 속성은 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onPlayStatus
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의합니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
이 이벤트는 다음 속성을 갖는 정보 객체를 반환할 수 있습니다.
Code 속성 | Level 속성 | 의미 |
---|---|---|
NetStream.Play.Switch | "status" | 구독자가 재생 목록 중 한 스트림에서 다른 스트림으로 전환하는 중입니다. |
NetStream.Play.Complete | "status" | 재생이 완료되었습니다. |
NetStream.Play.TransitionComplete | "status" | 스트림 비트율이 전환되어 구독자가 새 스트림으로 전환하는 중입니다. |
관련 API 요소
onSeekPoint | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2, Flash Lite 4 |
추가 바이트 파서가 검색 가능한 지점(예: 비디오 키 프레임)이라고 판단되는 지점을 만날 경우 appendBytes()
로부터 동기적으로 호출됩니다. 이 이벤트를 사용하여 검색 지점 테이블을 구성합니다. byteCount
는 해당 검색 지점의 파싱 가능한 메시지에서 첫 바이트의 byteCount
에 해당하며 위에서 설명한 대로 0으로 재설정됩니다. 검색하려면 검색 가능한 지점에서 시작하는 바이트를 NetStream.Seek.Notify
이벤트에서 찾은 다음 appendBytes(bytes)
를 호출합니다. bytes
인수가 검색 가능 지점에서 시작하는 바이트로 구성된 ByteArray
라면 비디오는 해당 검색 지점에서 재생됩니다.
참고: 이 콜백 내에서 appendBytes()
를 호출하면 무시됩니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
onSeekPoint
속성은 NetStream.client
객체의 속성입니다. 이 속성은 appendBytes()
메서드로 들어오는 데이터에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명과 NetStream.client
속성을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onSeekPoint
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. onSeekPoint
를 사용하려면 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. 그러나 NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의할 수 있습니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
관련 API 요소
onTextData | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Flash Player가 재생 중인 미디어 파일에 포함된 텍스트 데이터를 받았을 때 응답할 리스너를 설정합니다. 텍스트 데이터는 UTF-8 형식이며 3GP Timed Text 사양을 기반으로 하는 형식에 대한 정보를 포함할 수 있습니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
onTextData
는 사실상 NetStream.client
객체의 속성입니다. 이 속성은 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onTextData
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의합니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
관련 이벤트 리스너는 NetStream.play()
메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.
onTextData 이벤트 객체에는 텍스트 데이터의 각 부분에 대한 하나의 속성이 포함되어 있습니다.
예제 ( 예제 사용 방법 )
Netstream.client
속성을 사용하여 onTextData
및 onImageData
에 대한 콜백 함수를 처리합니다. onImageDataHandler()
함수에서 onImageData 이벤트 객체 imageData
를 사용하여 바이트 배열을 저장합니다. 또한 onTextDataHandler()
함수에서 onTextData 이벤트 객체 textData
를 사용하여 텍스트 데이터의 각 부분을 저장합니다. 데이터의 각 부분은 textData
객체의 속성입니다.
미디어 파일의 실제 위치를 코드에서의 "yourURL"
위치에 대한 텍스트 또는 이미지 메타데이터로 대체해야 합니다.
또한 사용자 정의 클래스를 사용하여 이미지 및 텍스트 데이터를 처리할 수 있습니다. 자세한 내용 및 예제는 Flash 비디오에서 메타데이터 및 큐 처리 문서를 참조하십시오.
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 my_video:Video = new Video(); addChild(my_video); 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.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } 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]); } } } }
관련 API 요소
onXMPData | 이벤트 |
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Flash Player에서 재생 중인 비디오에 포함된 Adobe XMP(Extensible Metadata Platform) 관련 정보를 받을 때 응답할 리스너를 설정합니다. Flash Media Server에서 지원하는 비디오 파일 형식에 대한 자세한 내용은 http://www.adobe.com/go/learn_fms_fileformats_kr를 참조하십시오.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
onXMPData
는 사실상 NetStream.client
객체의 속성입니다. 이 속성은 Flash Media Server를 사용하여 미디어를 스트리밍하거나 FLV 파일을 재생하는 동안 데이터 이벤트에 응답하므로 Events 섹션에 나열됩니다. 자세한 내용은 NetStream 클래스 설명과 NetStream.client
속성을 참조하십시오. addEventListener()
메서드 또는 다른 어떠한 EventDispatcher 메서드도 onMetaData
를 이벤트로 수신하거나 처리하는 데 사용할 수 없습니다. 콜백 함수를 정의한 다음 아래의 객체 중 하나에 연결해야 합니다.
- NetStream 인스턴스의
client
속성이 참조하는 객체입니다. - NetStream 하위 클래스의 인스턴스입니다. NetStream은 봉인 클래스입니다. 즉, 런타임 시 NetStream 객체에 속성이나 메서드를 추가할 수 없습니다. 그러나 NetStream 하위 클래스를 만들어 하위 클래스에 이벤트 핸들러를 정의할 수 있습니다. 또한 하위 클래스를 동적으로 만들어 이벤트 핸들러 함수를 하위 클래스 인스턴스에 추가할 수도 있습니다.
관련 이벤트 리스너는 NetStream.play()
메서드를 호출한 후 비디오 재생 헤드를 진행하기 전에 트리거됩니다.
onXMPData()
이벤트 처리 함수에 전달되는 객체에는 문자열인 data
속성이 하나 있습니다. 이 문자열은 최상위 UUID 상자에서 생성됩니다. 최상위 상자의 128비트 UUID는 BE7ACFCB-97A9-42E8-9C71-999491E3AFAC
입니다. 이 최상위 UUID 상자에는 null 종료 UTF-8 문자열로 표현된 XML 문서가 하나만 들어 있습니다.
관련 API 요소
status | 이벤트 |
flash.events.StatusEvent
속성 StatusEvent.type =
flash.events.StatusEvent.STATUS
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 1.0, Flash Lite 4 |
응용 프로그램에서 NetStream.play()
메서드를 호출하여 DRM(디지털 권한 관리)으로 암호화된 내용의 재생을 시도할 때 전달됩니다. 상태 코드 속성의 값은 "DRM.encryptedFLV"
입니다.
참고: 이 이벤트는 AIR 3.0 for iOS에서 사용하는 H.264 비디오에 대해서는 지원되지 않습니다.
status
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
code | 객체의 상태에 대한 설명입니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
level | "status" , "warning" 또는 "error" 같은 메시지 범주입니다. |
target | 상태를 보고하는 객체입니다. |
관련 API 요소
CONNECT_TO_FMS | 상수 |
public static const CONNECT_TO_FMS:String = "connectToFMS"
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
NetStream 인스턴스의 생성자에 매개 변수로 사용되는 정적 객체입니다. 이는 NetStream 생성자의 두 번째 매개 변수에 대한 기본값이며, 응용 프로그램에서 점진적 미디어 재생을 위해 사용되지 않습니다. 이 매개 변수를 사용하면 생성자에서 Flash Media Server 인스턴스에 연결합니다.
DIRECT_CONNECTIONS | 상수 |
public static const DIRECT_CONNECTIONS:String = "directConnections"
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
피어 투 피어 제작자 연결을 만듭니다. 이 문자열을 NetStream 인스턴스의 생성자에 두 번째(선택적) 매개 변수로 전달합니다. 응용 프로그램에서는 이 문자열을 사용하여 오디오 및 비디오를 클라이언트에 배급하기 위한 NetStream 연결을 만들 수 있습니다.
이 예제에서는 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 = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); 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 { addChild(video); var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); } } } 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); } }
mdata
가 사용되어 비디오 인스턴스 video
의 폭과 높이를 설정합니다.
//Place the following in the connectStream() function //in the NetConnectionExample code var metaSniffer:Object=new Object(); stream.client=metaSniffer; //stream is the NetStream instance metaSniffer.onMetaData=getMeta; // Add the following function within the NetConnectionExample class private function getMeta (mdata:Object):void { video.width=mdata.width/2; video.height=mdata.height/2; }
Tue Jun 12 2018, 03:17 PM Z