티스토리 뷰

Network/Actionscript

Flash Video Update

알 수 없는 사용자 2008. 1. 28. 14:05
설치 지침참고: FLVPlayback 구성 요소 1.0.1을 제거하려면 교체할 파일의 복사본을 모두 백업해야 합니다. Flash 8 폴더에 이름이 "FLVPlayback_1.0"이라는 이름의 폴더를 만들고 모든 파일을 여기에 복사하는 것이 좋습니다.

  1. 이렇게 한 다음 Flash 8과 함께 설치된 FLVPlayback.swc 파일을 이 zip에 포함된 파일로 교체합니다.Windows에서의 FLVPlayback 위치

    C:Program FilesMacromediaFlash 8언어ConfigurationComponentsFLV Playback - Player 8

    Macintosh에서의 FLVPlayback 위치

    Macintosh HD:Applications:Macromedia Flash 8:Configuration:Components:FLV Playback - Player 8:

  2. zip에 포함된 AS 파일을 올바른 디렉토리에 복사합니다. 기존 파일을 교체하는 AS 파일은 7개이며 1개의 새 AS 파일(FPADManager.as)이 있습니다.

    • ComponentVersion.as

    • CuePointManager.as

    • FPADManager.as

    • FLVPlayback.as

    • NCManager.as

    • SMILManager.as

    • UIManager.as

    • VideoPlayer.as


    Windows에서의 대상 디렉토리

    C:Program FilesMacromediaFlash 8언어First RunClassesmxvideo

    Macintosh에서 대상 디렉토리

    Macintosh HD:Applications:Macromedia Flash 8:First Run:Classes:mx:video:

  3. 마지막으로 AS 파일을 교체하고 Flash를 다시 시작한 후 메뉴에서 컨트롤 -> ASO 파일 삭제를 차례로 클릭합니다.


제거 지침

설치 지침에서 권장한 대로 이름이 "FLVPlayback_1.0"인 디렉토리에 Flash와 함께 설치된 모든 SWC 및 AS 파일을 저장하면 FLVPlayback 1.0으로 롤백할 수 있습니다. 설치 지침에 따라야 하지만 이번에는 zip에 포함된 파일 대신 FLVPlayback_1.0 폴더에 지정한 파일을 사용합니다. 롤백 시 ASO 캐시를 삭제하는 세 번째 단계는 특히 중요하므로 잊지 마십시오.


향상된 기능SMIL 요청에 동적으로 매개 변수 첨부

XML 파일을 다운로드하기로 결정한 경우(아래 참조) 해당 파일을 보내기 전에 URL을 수정해야 하는 경우가 있습니다. URL이 "http:" 또는 "https:"로 시작되는 경우 매개 변수 문자열 "FLVPlaybackVersion=version_number"를 추가합니다. 여기서 version_number는 FLVPlayback 구성 요소의 최신 버전을 나타냅니다. 예를 들어, 이 업데이트의 버전 번호는 1.0.1입니다. 또한 URL에 이미 매개 변수 목록이 있는지 확인해야 합니다. 목록이 있는 경우에는 매개 변수 앞에 앰퍼샌드(&)를 추가해야 하며, 목록이 없는 경우에는 매개 변수 앞에 물음표(?)를 추가해야 합니다. 코드는 있는 그대로 나타내는 것이 간결합니다.
public function fixURL(origURL:String):String {
if ( origURL.substr(0, 5).toLowerCase() == "http:" ||
origURL.substr(0, 6).toLowerCase() == "https:" ) {
var sep:String = (origURL.indexOf("?") >= 0) ? "&" : "?";
return origURL + sep + "FLVPlaybackVersion=" + shortVersion;
}
return origURL;
}

매개 변수를 추가하기 전에 프로토콜을 확인하는 이유는 웹 서버에 대한 요청이 아닌 로컬 파일에 대한 상대 경로가 있는 경우 매개 변수를 첨부하면 요청이 실패하기 때문입니다. 웹 서버에서 파일을 요청하는 경우 페이지가 정적인지 여부 및 서버쪽 스크립트에서 추가 매개 변수를 예상하는지 여부에 상관없이 매개 변수를 첨부하는 것이 좋습니다. 추가 매개 변수로 인해 문제가 발생할 수도 있지만 이는 매우 드문 경우입니다. 일반적으로 서버쪽 스크립트는 이름을 기준으로 특정 매개 변수를 조회하며, 알 수 없거나 예상할 수 없는 모든 매개 변수에 대해서는 반복하지 않습니다.

이 매개 변수를 추가하는 이유는 어떤 버전의 FLVPlayback 구성 요소가 요청하는지에 따라 서버쪽 스크립트에서 다른 SMIL을 제공하기 위해서입니다. Macromedia에서는 이미 1.0과 1.0.1(버그 143302)에서 지원하는 SMIL을 변경했으며 앞으로 SMIL에 대한 지원을 추가할 계획입니다.
SMIL 또는 FPAD 파일을 다운로드하고 있는지 어떻게 확인합니까?

이 아래 단원에서는 FLVPlayback 1.0.0의 기존 기능에 대해 설명합니다.

URL을 받으면 먼저 프로토콜이 "rtmp:", "rtmps:" 또는 "rtmpt:"인지 확인한 후 맞으면 Flash Media Server(FMS)에서 스트리밍 중인 것으로 간주합니다. 다음으로 URL이 ".flv"로 끝나는지 확인하고 맞는 경우 FLV를 점진적으로 다운로드하는 것으로 간주합니다. 그 다음 URL에 "/fms/fpad"가 포함되어 있는 경우 FPAD XML(아래 참조)로 간주합니다. 기타 모든 URL은 기본적으로 SMIL 파일에 대한 URL로 간주됩니다.

Flash Media Server(FMS) 2에 대한 FPAD 지원

FPAD는 Flash Media Server 2.0의 새로운 기능입니다. 이 기능을 지원하려면 FLVPlayback 1.0.1에서 URL이 FPAD XML 파일(위 참조)용인지 감지할 수 있어야 하며, 그러한 경우 해당 포맷을 파싱하고 적절한 URL을 Edge Server 및 Origin Server를 사용하는 FMS에 연결되도록 지정할 수 있어야 합니다. RTMP URL을 사용하는 것과 같은 방법으로 SMIL에서 FPAD URL을 사용하여 SMIL과 FPAD를 함께 사용할 수 있습니다.

버전 정보


FLVPlayback 1.0.1의 구성 요소 관리자에 "version_1_0_1"이라는 새 속성을 추가했습니다. 이 속성은 현재 사용 중인 구성 요소의 버전을 알리기 위한 목적으로 추가되었습니다. 값에 속성을 설정하더라도 아무 효과가 없으며, 사용되는 구성 요소의 버전을 확인할 수 있는 다른 빠르고 쉽고 시각적인 방법이 없기 때문에 이 속성을 추가한 것입니다.


버그 수정 사항 요약

  • FMS 2에서 스트리밍할 때 스킨의 일시 정지/재생 버튼을 누르면 재생 헤드가 시간 0으로 반환됩니다.

  • FLVPlayback SMIL 지원은 표준 규격과 다릅니다.

  • UI 구성 요소가 라이브러리에 있는 경우 seekBar와 volumeBar 사용자 정의 구성 요소 모두 작동하지 않습니다.

  • .flv 확장명을 사용할 경우 동일한 FMS 또는 FCS 서버에서 두 번째 FLV를 로드할 수 없습니다.

  • 특정 Flash Media Server URL에서 크기 조절을 위해 숨겨놓은 비디오 구성 요소가 표시되지 않습니다.



버그 수정 사항 세부 정보FMS 2에서 스트리밍할 때 스킨의 일시 정지/재생 버튼을 누르면 재생 헤드가 시간 0으로 반환됩니다.

Flash Media Server 2 릴리스에서 기본 서버 구성의 변경 사항 때문에 재생 헤드를 일시 정지한 후 다시 재생하면 재생 헤드가 시간 0으로 반환되는 버그가 있었습니다. 이 버그는 구성 요소의 버전 1.0에서 구성 요소의 일시 정지 및 일시 정지 해제와 스크럽 막대 또는 앞으로 감기/되감기 버튼을 사용하여 검색하면 재현됩니다. 이 버그는 재생 헤드가 FLV 끝에서 10초 이내인 경우 주로 나타납니다.

이 문제는 Flash Communication Server의 이전 버전에서 MinBufferTime이 변경되는 경우에도 발생할 수 있습니다. FMS2에서의 기본값은 10000(10초)입니다. 이전 버전에서의 기본값은 2000(2초)입니다.

FLVPlayback SMIL 지원은 표준 규격과 다릅니다.

SMIL 포맷에 지정된 대역폭 값은 대역폭에 대한 최소 요구 사항이지만 FLVPlayback SMIL에서는 이를 최대로 해석합니다. 즉, 50000에 대한 항목이 있는 경우 대역폭이 50k 이하이면 이를 사용하고, 120000의 경우에는 최대 120k의 대역폭에 대해 사용하며 기본 항목은 더 높은 값의 대역폭으로 사용합니다. SMIL 사양과 비교할 때 FLVPlayback SMIL에서는 이를 정반대로 사용하며, system-bitrates 속성은 아래 샘플에서와 같이 최저값에서 최고값이 아닌 최고값에서 최대값으로 나열되어야 합니다.

56k보다 낮은 경우, 128k보다 낮은 경우 및 128k보다 높은 경우 FLVPlayback SMIL에서는 다음과 같은 결과가 나타납니다.
<smil>
<head>
<meta base="rtmp://myserver/myapp" />
</head>
<body>
<switch>
<video src="myvideo_low" system-bitrate="56000" />
<video src="myvideo_med" system-bitrate="128000" />
<video src="myvideo_high" />
</switch>
</body>
</smil>

SMIL 사양에서는 다음과 같은 결과가 나타납니다.
<smil>
<head>
<meta base="rtmp://myserver/myapp" />
</head>
<body>
<switch>
<video src="myvideo_high" system-bitrate="128000" />
<video src="myvideo_med" system-bitrate="56000" />
<video src="myvideo_low" />
</switch>
</body>
</smil>

UI 구성 요소가 라이브러리에 있는 경우 seekBar와 volumeBar 사용자 정의 구성 요소 모두 작동하지 않습니다.

특정 UI 구성 요소가 스테이지 또는 라이브러리에 있는 경우 FLVPlayback SeekBar 및 VolumeBar FLVPlayback 사용자 정의 UI 구성 요소가 작동하지 않습니다. 이 버그는 두 컨트롤 중 하나는 제대로 작동하지만 나머지 하나의 핸들을 클릭하면 반응하지 않는 증상을 보입니다. 이 문제는 SeekBar 및 VolumeBar 속성이 모두 동일한 타임라인에 있을 때만 발생하므로 두 속성 중 하나 또는 모두를 빈 무비 클립에 포함시키면 해결할 수 있습니다.

.flv 확장명을 사용할 경우 동일한 FMS 또는 FCS 서버에서 두 번째 FLV를 로드할 수 없습니다.

두 번째 FLV가 FMS 또는 FCS 서버에서 FLVPlayback 구성 요소로 로드되는 경우 또는 동일한 서버 및 응용 프로그램 인스턴스에서 첫 번째 FLV가 로드되는 경우, 제공된 URL 끝에 .flv가 추가되어 있으면 해당 FLV는 올바르게 로드되지 않습니다. .flv가 추가되어 있지 않으면 이 버그가 발생하지 않으므로 주의해서 사용하면 됩니다. FMS 또는 FCS에서 스트리밍할 때 .flv 확장명을 사용하는 것은 선택 사항입니다.

특정 Flash Media Server URL에서 크기 조절을 위해 숨겨놓은 비디오 구성 요소가 표시되지 않습니다.

URL이 정확하지 않아서 FMS에 여러 번 연결을 시도해야 할 때 FLV가 표시되지 않는 문제입니다. 이 문제는 이렇게 로드된 두 번째 URL에서만 발생합니다.

이 문제를 일으키는 URL에 대해 구체적으로 설명하면, URL이 rtmp://server/app/path/flvname 형식인 경우 NetConnection을 사용하여 rtmp://server/app 또는 rtmp://server/app/path에 연결해야 하는 것으로 해석될 수 있습니다. 이는 NetStream에 지정한 스트림 이름이 path/flvname 또는 flvname이라는 의미입니다. 이러한 상황이 발생하면 우선 rtmp://server/app/path에 연결을 시도하고, 이 연결이 실패하면 나머지 URL에 연결을 시도합니다. 이러한 순서로 연결을 시도하는 이유는 rtmp://server/app/path/flvname을 사용할 수 있는 경우에는 항상 rtmp://server/app/_definst_/path/flvname 형식의 기본 경로를 사용할 수 있으므로 URL에 응용 프로그램 인스턴스 이름을 지정하여 이 문제를 해결할 수 있기 때문입니다.