TV용 AIR 응용 프로그램 설계 고려 사항

비디오 고려 사항

비디오 인코딩 지침

비디오를 TV 장치로 스트리밍할 때 Adobe는 다음과 같은 인코딩 지침을 권장합니다.

비디오 코덱:

H.264, Main 또는 High 프로파일, 점진적 인코딩

해상도:

720i, 720p, 1080i 또는 1080p

프레임 속도:

초당 24프레임 또는 초당 30프레임

오디오 코덱:

AAC-LC 또는 AC-3, 44.1kHz, 스테레오 또는 이러한 다중 채널 오디오 코덱: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio 또는 DTS-HD Master Audio

결합 비트율:

사용 가능한 대역폭에 따라 최대 8Mbps

오디오 비트율:

최대 192Kbps

픽셀 종횡비:

1 × 1

TV용 AIR 장치에 제공되는 비디오에 대해서는 H.264 코덱을 사용하는 것이 좋습니다.

참고: TV용 AIR는 Sorenson Spark 또는 On2 VP6 코덱을 사용하여 인코딩된 비디오도 지원합니다. 하지만 하드웨어는 이러한 코드를 디코딩하여 표현하지 않습니다. 대신 런타임은 소프트웨어를 사용하여 이러한 코드를 디코딩하여 표현하므로 비디오는 훨씬 낮은 프레임 속도로 재생됩니다. 따라서 가능하면 언제나 H.264를 사용하십시오.

StageVideo 클래스

TV용 AIR에서는 하드웨어가 H.264로 인코딩된 비디오를 디코딩하여 표현합니다. 이 기능을 활성화하려면 StageVideo 클래스를 사용하십시오.

다음에 대한 자세한 내용은 ActionScript 3.0 개발자 가이드 에서 하드웨어 가속 표현에 StageVideo 클래스 사용 을 참조하십시오.

  • StageVideo 클래스 및 관련 클래스의 API

  • StageVideo 클래스의 사용 제한

H.264 인코딩된 비디오에 대해 Video 객체를 사용하는 기존 AIR 응용 프로그램을 최선으로 지원하기 위해 TV용 AIR는 내부에서 StageVideo 객체를 사용합니다. 따라서 비디오 재생 시 하드웨어로 디코딩 및 표현하는 이점을 누리게 됩니다. 하지만 Video 객체는 StageVideo 객체와 동일한 제한을 받습니다. 예를 들어 응용 프로그램이 비디오를 회전하려고 할 때 런타임이 아닌 하드웨어가 비디오를 표현하기 때문에 회전이 이루어지지 않습니다.

하지만 새 응용 프로그램을 작성할 때는 H.264 인코딩된 비디오에 대해 StageVideo 객체를 사용하십시오.

StageVideo 클래스의 사용 예는 TV에서 Flash 플랫폼을 위한 비디오 및 내용 제공 을 참조하십시오.

비디오 전송 지침

TV용 AIR 장치에서는 비디오 재생 중에 네트워크의 사용 가능한 대역폭에 변화가 있을 수 있습니다. 예를 들어 다른 사용자가 같은 인터넷 연결을 사용하기 시작할 때 이러한 변화가 발생할 수 있습니다.

따라서 비디오 전송 시스템에서 적응형 비트율 기능을 사용하는 것이 좋습니다. 예를 들어 서버측에서는 Flash Media Server가 적응형 비트율 기능을 지원합니다. 클라이언트측에서는 OSMF(Open Source Media Framework)를 사용할 수 있습니다.

다음 프로토콜을 사용하여 비디오 내용을 네트워크를 통해 TV용 AIR 응용 프로그램으로 전송할 수 있습니다.
  • HTTP 및 HTTPS Dynamic Streaming(F4F 형식)

  • RTMP, RTMPE, RTMFP, RTMPT 및 RTMPTE 스트리밍

  • HTTP 및 HTTPS 점진적 다운로드

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

오디오 고려 사항

TV용 AIR 응용 프로그램에서 사운드 재생을 위한 ActionScript는 다른 AIR 응용 프로그램에서와 마찬가지입니다. 자세한 내용은 ActionScript 3.0 개발자 가이드 에서 사운드 작업 을 참조하십시오.

TV용 AIR에서의 다중 채널 오디오 지원에 대해서는 다음 사항을 고려합니다.

  • TV용 AIR는 HTTP 서버에서 점진적으로 다운로드되는 비디오에 대해 다중 채널 오디오를 지원합니다. Adobe Flash Media Server에서 스트리밍되는 비디오의 다중 채널 오디오 지원은 아직 제공되지 않습니다.

  • TV용 AIR에서는 많은 오디오 코덱을 지원하지만 모든 TV용 AIR 장치 에서 전체 세트를 지원하는 것은 아닙니다. flash.system.Capabilities 메서드 hasMultiChannelAudio() 를 사용하여 TV용 AIR 장치가 AC-3 같은 특정 다중 채널 오디오 코덱을 지원하는지 여부를 확인합니다.

    예를 들어 서버에서 비디오 파일을 점진적으로 다운로드하는 응용 프로그램을 가정해 봅니다. 서버에는 서로 다른 다중 채널 오디오 코덱을 지원하는 여러 H.264 비디오 파일이 있습니다. 응용 프로그램은 hasMultiChannelAudio() 를 사용하여 서버에서 요청할 비디오 파일을 결정할 수 있습니다. 또는 응용 프로그램은 Capabilities.serverString 에 포함된 문자열을 서버에 보낼 수 있습니다. 문자열은 서버에서 적절한 비디오 파일을 선택할 수 있도록 사용 가능한 다중 채널 오디오 코덱을 나타냅니다.

  • DTS 오디오 코덱 중 하나를 사용할 때는 hasMultiChannelAudio() true 를 반환하지만 DTS 오디오가 재생되지 않는 경우가 있습니다.

    예를 들어 S/PDIF 출력이 있는 Blu-ray 플레이어를 구식 앰프에 연결한 경우를 가정해 봅니다. 구식 앰프는 DTS를 지원하지 않지만 Blu-ray 플레이어에 이를 알려줄 프로토콜이 S/PDIF에 없습니다. Blu-ray 플레이어가 구식 앰프에 DTS 스트림을 보내면 사용자에게 아무 것도 들리지 않습니다. 따라서 DTS를 사용할 때는 사운드가 재생되지 않는 경우를 사용자가 알릴 수 있도록 사용자 인터페이스를 제공하는 것이 좋습니다. 이렇게 하면 응용 프로그램에서 다른 코덱으로 전환할 수 있습니다.

다음 표에는 TV용 AIR 응용 프로그램에서 서로 다른 오디오 코덱을 사용해야 할 경우가 요약되어 있습니다. 또한 이 표에는 TV용 AIR 장치가 하드웨어 액셀러레이터를 사용하여 오디오 코덱을 디코딩하는 경우가 나와 있습니다. 하드웨어 디코딩은 성능을 향상시키고 CPU의 부하를 줄여 줍니다.

오디오 코덱

TV용 AIR 장치에서의 가용성

하드웨어 디코딩

이 오디오 코덱을 사용해야 할 때

추가 정보

AAC

항상

항상

H.264로 인코딩된 비디오에서 사용

인터넷 음악 스트리밍 서비스 등의 오디오 스트리밍에 사용

오디오 전용 AAC 스트림을 사용할 때는 오디오 스트림을 MP4 컨테이너에 캡슐화하십시오.

mp3

항상

아니요

응용 프로그램의 SWF 파일에 있는 사운드에 사용

Sorenson Spark 또는 On2 VP6로 인코딩된 비디오에서 사용

오디오에 mp3를 사용하는 H.264 비디오는 TV용 AIR 장치에서 재생되지 않습니다.

AC-3(Dolby Digital)

E-AC-3(Enhanced Dolby Digital)

DTS Digital Surround

DTS Express

DTS-HD High Resolution Audio

DTS-HD Master Audio

확인

H.264로 인코딩된 비디오에서 사용

일반적으로 TV용 AIR는 오디오를 디코딩 및 재생하는 외부 오디오/비디오 수신기에 다중 채널 오디오 스트림을 전달합니다.

Speex

항상

아니요

라이브 음성 스트림을 받을 때 사용

오디오에 Speex를 사용하는 H.264 비디오는 TV용 AIR 장치에서 재생되지 않습니다. Speex는 Sorenson Spark 또는 On2 VP6로 인코딩된 비디오에만 사용합니다.

NellyMoser

항상

아니요

라이브 음성 스트림을 받을 때 사용

오디오에 NellyMoser를 사용하는 H.264 비디오는 TV용 AIR 장치에서 재생되지 않습니다. NellyMoser는 Sorenson Spark 또는 On2 VP6로 인코딩된 비디오에만 사용합니다.

참고: 일부 비디오 파일에는 두 개의 오디오 스트림이 포함되어 있습니다. 예를 들어 비디오 파일은 AAC 스트림 및 AC3 스트림을 모두 포함할 수 있습니다. TV용 AIR는 이러한 비디오 파일을 지원하지 않으며 이러한 파일을 사용하면 비디오의 사운드가 재생되지 않을 수 있습니다.

그래픽 하드웨어 가속

하드웨어 그래픽 가속 사용

TV용 AIR 장치는 2D 그래픽 작업에 대해 하드웨어 가속을 제공합니다. 장치의 하드웨어 그래픽 액셀러레이터는 다음 작업을 수행해야 하는 CPU의 부담을 덜어 줍니다.

  • 비트맵 렌더링

  • 비트맵 크기 조절

  • 비트맵 블렌딩

  • 단색 사각형 채우기

이 하드웨어 그래픽 가속은 TV용 AIR 응용 프로그램에서 여러 그래픽 작업을 높은 성능으로 수행할 수 있음을 의미합니다. 이러한 기능 중 일부는 다음과 같습니다.

  • 슬라이딩 전환

  • 크기 조절 전환

  • 페이드 인 및 페이드 아웃

  • 알파를 사용하여 복수 이미지 혼합

이러한 유형의 작업에 대해 하드웨어 그래픽 가속의 성능 이점을 누리려면 다음 기법 중 하나를 사용하십시오.

  • MovieClip 객체 그리고 대부분 변경되지 않는 내용을 포함하고 있는 다른 표시 객체에 대해서는 cacheAsBitmap 속성을 true 로 설정합니다. 그런 다음 해당 객체에 대해 슬라이딩 전환, 페이딩 전환, 알파 블렌딩을 수행합니다.

  • 크기를 조절하거나 변환(x 및 y 재배치 적용)할 표시 객체에 대해 cacheAsBitmapMatrix 속성을 사용합니다.

    크기 조절 및 변환에 Matrix 클래스 작업을 사용하면 장치의 하드웨어 액셀러레이터가 작업을 수행합니다. 또는 cacheAsBitmap 속성이 true 로 설정된 표시 객체의 크기를 변경하는 시나리오를 생각해 보십시오. 크기가 변경되면 런타임의 소프트웨어가 비트맵을 다시 그립니다. 소프트웨어를 사용하여 다시 그리는 것은 Matrix 작업을 사용하여 하드웨어 가속으로 크기를 조절하는 것보다 성능이 떨어집니다.

    예를 들어 최종 사용자가 선택할 때 확장되는 이미지를 표시하는 응용 프로그램을 생각해 보십시오. Matrix 크기 조절 작업을 여러 번 사용하여 이미지가 확장되는 느낌을 줍니다. 하지만 원래 이미지 및 최종 이미지의 크기에 따라 최종 이미지의 품질이 많이 떨어질 수 있습니다. 따라서 확장 작업이 완료된 후에 표시 객체의 크기를 재설정하십시오. cacheAsBitmap true 이기 때문에 런타임 소프트웨어는 표시 객체를 다시 그리지만 한 번만 다시 그리고 고품질 이미지로 렌더링합니다.

    참고: 일반적으로 TV용 AIR 장치는 하드웨어 가속화된 회전 및 기울이기를 지원하지 않습니다. 따라서 Matrix 클래스에서 회전 및 기울이기를 지정하는 경우 TV용 AIR는 모든 Matrix 작업을 소프트웨어에서 수행합니다. 이러한 소프트웨어 작업은 성능에 좋지 않은 영향을 줄 수 있습니다.
  • BitmapData 클래스를 통해 사용자 정의 비트맵 캐싱 비헤이비어를 만듭니다.

비트맵 캐싱에 대한 자세한 내용은 다음을 참조하십시오.

그래픽 메모리 관리

가속화된 그래픽 작업을 수행하기 위해 하드웨어 액셀러레이터가 특수 그래픽 메모리를 사용합니다. 응용 프로그램에서 모든 그래픽 메모리를 사용하는 경우에는 TV용 AIR가 소프트웨어를 사용하여 그래픽 작업을 수행하는 방식으로 되돌아가기 때문에 응용 프로그램이 더 느리게 실행됩니다.

응용 프로그램의 그래픽 메모리 사용을 관리하려면

  • 이미지 또는 다른 비트맵 데이터의 사용을 마쳤으면 관련 그래픽 메모리를 릴리스합니다. 이렇게 하려면 Bitmap 객체의 bitmapData 속성의 dispose() 메서드를 호출합니다. 예를 들면 다음과 같습니다.

    myBitmap.bitmapData.dispose();
    참고: BitmapData 객체에 대한 참조를 릴리스해도 그래픽 메모리가 바로 비워지지는 않습니다. 결국 런타임의 가비지 컬렉터가 그래픽 메모리를 비우기는 하지만 dispose() 를 호출하면 응용 프로그램의 제어권이 강화됩니다.
  • Adobe에서 제공하는 AIR 응용 프로그램인 PerfMaster Deluxe를 사용하면 대상 장치에서 하드웨어 그래픽 가속에 대해 보다 정확하게 이해할 수 있습니다. 이 응용 프로그램은 다양한 작업을 실행하기 위한 초당 프레임 수를 보여 줍니다. PerfMaster Deluxe를 사용하여 서로 다르게 구현된 같은 작업을 비교해 보십시오. 예를 들어 비트맵 이미지를 이동하는 경우와 벡터 이미지를 이동하는 경우를 비교해 보십시오. PerfMaster Deluxe는 TV용 Flash 플랫폼 에서 받을 수 있습니다.

표시 목록 관리

표시 객체를 숨기려면 객체의 visible 속성을 false 로 설정합니다. 그러면 객체는 여전히 표시 목록에 있지만 TV용 AIR에서는 이를 렌더링하거나 표시하지 않습니다. 이 기법은 처리 오버헤드가 적게 발생하기 때문에 뷰를 자주 왕복하는 객체에 유용합니다. 그러나 visible 속성을 false 로 설정하더라도 객체의 리소스가 해제되지는 않습니다. 따라서 객체의 표시를 완료했거나, 최소한 객체를 오랫동안 사용하여 작업을 완료한 경우에는 표시 목록에서 해당 객체를 제거합니다. 또한 객체에 대한 모든 참조를 null 로 설정합니다. 이러한 작업을 수행하면 가비지 수집기를 통해 객체의 리소스가 해제됩니다.

PNG 및 JPEG 이미지 사용

응용 프로그램에서 사용되는 두 개의 공통된 이미지 형식은 PNG와 JPEG입니다. TV용 AIR 응용 프로그램에서는 이러한 두 이미지 형식과 관련하여 다음 사항을 고려하십시오.

  • TV용 AIR는 일반적으로 하드웨어 가속을 사용하여 JPEG 파일을 디코딩합니다.

  • TV용 AIR는 대개 소프트웨어를 사용하여 PNG 파일을 디코딩합니다. 소프트웨어에서 PNG 파일을 디코딩하는 것이 빠릅니다.

  • PNG는 유일하게 플랫폼에 영향을 받지 않는 비트맵 형식으로서 투명도(알파 채널)를 지원합니다.

따라서 응용 프로그램에서 이러한 이미지 형식을 다음과 같이 사용하십시오.

  • 하드웨어 가속화된 디코딩을 활용할 수 있도록 사진에는 JPEG 파일을 사용합니다.

  • 사용자 인터페이스 요소에는 PNG 이미지 파일을 사용합니다. 사용자 인터페이스 요소에는 알파 설정이 있을 수 있으며, 소프트웨어 디코딩은 사용자 인터페이스 요소에 충분한 성능을 제공합니다.

TV용 AIR 응용 프로그램의 스테이지

TV용 AIR 응용 프로그램을 만드는 중에 Stage 클래스로 작업할 때는 다음 사항을 고려하십시오.

  • 화면 해상도

  • 안전 보기 영역

  • 스테이지 크기 조절 모드

  • 스테이지 정렬

  • 스테이지 표시 상태

  • 여러 스크린 크기에 맞춰 디자인

  • 스테이지 품질 설정

화면 해상도

현재 TV 장치는 일반적으로 540p, 720p, 1080p 화면 해상도 중 하나를 사용합니다. 이러한 화면 해상도는 ActionScript Capabilities 클래스에서 다음과 같은 값을 갖게 됩니다.

화면 해상도

Capabilities.screenResolutionX

Capabilities.screenResolutionY

540p

960

540

720p

1280

720

1080p

1920

1080

특정 장치에 대한 전체 화면 TV용 AIR 응용 프로그램을 작성하려면 Stage.stageWidth Stage.stageHeight 를 장치의 화면 해상도에 맞춰 하드 코딩하십시오. 하지만 여러 장치에서 실행되는 전체 화면 응용 프로그램을 작성하려면 Capabilities.screenResolutionX Capabilities.screenResolutionY 속성을 사용하여 Stage 크기를 설정하십시오.

예를 들면 다음과 같습니다.

stage.stageWidth = Capabilities.screenResolutionX; 
stage.stageHeight = Capabilities.screenResolutionY;

안전 보기 영역

TV에서 안전 보기 영역 이란 스크린 가장자리로부터 약간의 공간을 남겨 놓는 화면 영역입니다. 이 영역은 TV의 베젤이 화면의 어느 부분도 가리지 않아서 최종 사용자가 전체 영역을 볼 수 있을 정도로 충분한 간격으로 두고 안쪽으로 들어와 있습니다. 화면 주위의 물리적 프레임인 베젤은 제조업체마다 다르기 때문에 필요한 간격도 각기 다릅니다. 안전 보기 영역은 화면의 가시 영역을 보장하기 위한 것입니다. 안전 보기 영역을 제목 보호 영역 이라고도 합니다.

오버스캔 은 베젤 뒤에 있어서 보이지 않는 화면 영역입니다.

각 화면 가장자리에는 7.5%의 간격을 두는 것이 좋습니다. 예를 들면 다음과 같습니다.

전체 화면으로 그래픽 보기
화면 해상도 1920 x 1080의 안전 보기 영역

전체 화면 TV용 AIR 응용 프로그램을 디자인할 때는 항상 안전 보기 영역을 고려하십시오.

  • 배경 이미지나 배경색 등의 배경에는 전체 화면을 사용합니다.

  • 텍스트, 그래픽, 비디오, 사용자 인터페이스 항목(예: 버튼) 등의 중요한 응용 프로그램 요소에만 안전 보기 영역을 사용합니다.

다음 표에는 7.5%의 간격을 사용할 때 일반적인 각 화면 해상도의 안전 보기 영역 크기가 나와 있습니다.

화면 해상도

안전 보기 영역의 폭과 높이

왼쪽 및 오른쪽 간격 폭

위쪽 및 아래쪽 간격 폭

960 x 540

816 x 460

72

40

1280 x 720

1088 x 612

96

54

1920 x 1080

1632 x 918

144

81

하지만 가장 좋은 방법은 항상 안전 보기 영역을 동적으로 계산하는 것입니다. 예를 들면 다음과 같습니다.

var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int; 
 
horizontalInset = .075 * Capabilities.screenResolutionX; 
verticalInset = .075 * Capabilities.screenResolutionY; 
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset); 
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);

스테이지 크기 조절 모드

Stage.scaleMode StageScaleMode.NO_SCALE 로 설정하고 Stage resize 이벤트를 기다립니다.

stage.scaleMode = StageScaleMode.NO_SCALE; 
stage.addEventListener(Event.RESIZE, layoutHandler);

이 설정은 스테이지 좌표를 픽셀 좌표와 동일하게 만듭니다. FULL_SCREEN_INTERACTIVE 표시 상태 및 TOP_LEFT 스테이지 정렬과 함께 이 설정을 적용하면 안전 보기 영역을 효과적으로 사용할 수 있습니다.

특히 전체 화면 응용 프로그램에서 이 크기 조절 모드는 Stage 클래스의 stageWidth stageHeight 속성이 Capabilities 클래스의 screenResolutionX screenResolutionY 속성에 해당함을 의미합니다.

아울러 응용 프로그램 윈도우 크기가 변경될 때 스테이지 내용은 정해진 크기를 유지합니다. 런타임에서는 자동 레이아웃 또는 크기 조절을 수행하지 않습니다. 또한 런타임은 윈도우 크기가 변경될 때 Stage 클래스의 resize 이벤트를 전달합니다. 따라서 응용 프로그램이 시작될 때 그리고 응용 프로그램 윈도우 크기가 변경될 때 응용 프로그램의 내용을 원하는 대로 조정할 수 있습니다.

참고: NO_SCALE 비헤이비어는 다른 AIR 응용 프로그램에서와 마찬가지입니다. 하지만 TV용 AIR 응용 프로그램에서는 안전 보기 영역을 사용할 때 이 설정을 사용하는 것이 중요합니다.

스테이지 정렬

Stage.align StageAlign.TOP_LEFT 로 설정합니다.

stage.align = StageAlign.TOP_LEFT; 

이 정렬은 ActionScript를 사용하여 내용을 배치할 때 편리하도록 0,0 좌표를 화면의 왼쪽 위 모서리에 배치합니다.

NO_SCALE 크기 조절 모드 및 FULL_SCREEN_INTERACTIVE 표시 상태와 함께 이 설정을 적용하면 안전 보기 영역을 효과적으로 사용할 수 있습니다.

스테이지 표시 상태

전체 화면 TV용 AIR 응용 프로그램에서 Stage.displayState StageDisplayState.FULL_SCREEN_INTERACTIVE 로 설정합니다.

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 

이 값은 AIR 응용 프로그램이 사용자 입력을 허용한 상태에서 전체 화면에 걸쳐 스테이지를 확장하도록 설정합니다.

가급적 FULL_SCREEN_INTERACTIVE 설정을 사용하는 것이 좋습니다. NO_SCALE 크기 조절 모드 및 TOP_LEFT 스테이지 정렬과 함께 이 설정을 적용하면 안전 보기 영역을 효과적으로 사용할 수 있습니다.

따라서 전체 화면 응용 프로그램의 경우 주 문서 클래스에 대한 ADDED_TO_STAGE 이벤트의 핸들러에서 다음을 수행합니다.

private function onStage(evt:Event):void 
{ 
    stage.scaleMode = StageScaleMode.NO_SCALE; 
    stage.align = StageAlign.TOP_LEFT; 
    stage.addEventListener(Event.RESIZE, onResize); 
    stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 
}

그런 다음 RESIZE 이벤트의 핸들러에서 다음을 수행합니다.

  • 화면 해상도 크기를 스테이지 폭 및 높이와 비교합니다. 동일한 경우에는 스테이지 표시 상태가 FULL_SCREEN_INTERACTIVE 로 변경되었기 때문에 RESIZE 이벤트가 발생한 것입니다.

  • 안전 보기 영역 그리고 해당하는 간격의 크기를 계산하여 저장합니다.

private function onResize(evt:Event):void 
{ 
    if ((Capabilities.screenResolutionX == stage.stageWidth) && 
        (Capabilities.screenResolutionY == stage.stageHeight)) 
    { 
         
        // Calculate and save safe viewing area dimensions. 
    } 
}

스테이지 크기가 Capabilities.screenResolutionX screenResolutionY 와 같은 경우 TV용 AIR에서는 하드웨어에서 해당 비디오 및 그래픽에 대해 최상의 품질을 구현하도록 합니다.

참고: 그래픽 및 비디오가 TV 화면에 표시되는 품질은 Capabilities.screenResolutionX screenResolutionY 값과 다를 수 있는데, 이러한 값은 TV용 AIR이 실행되는 장치에 따라 달라집니다. 예를 들어 TV용 AIR을 실행하는 셋탑 박스의 화면 해상도는 1280 x 720이고 연결된 TV의 화면 해상도는 1920 x 1080일 수 있습니다. 하지만 TV용 AIR에서는 하드웨어에서 최상의 품질을 구현하도록 지시하지 않습니다. 따라서 이 예의 경우 하드웨어는 1920 x 1080 화면 해상도를 사용하여 1080p 비디오를 표시합니다.

여러 스크린 크기에 맞춰 디자인

같은 전체 화면 TV용 AIR 응용 프로그램이 여러 TV용 AIR 장치에서 제대로 작동하고 올바르게 표시되도록 개발할 수 있습니다. 다음을 수행하십시오.

  1. 스테이지 속성 scaleMode , align displayState 를 권장 값으로 설정합니다. 권장되는 값은 각각 StageScaleMode.NO_SCALE , StageAlign.TOP_LEFT , StageDisplayState.FULL_SCREEN_INTERACTIVE 입니다.

  2. Capabilities.screenResolutionX Capabilities.screenResolutionY 를 기준으로 안전 보기 영역을 설정합니다.

  3. 안전 보기 영역의 폭과 높이에 맞춰 내용의 크기와 레이아웃을 조절합니다.

    특히 휴대 장치 응용 프로그램과 비교할 경우 내용의 객체가 크지만 동적 레이아웃, 상대적 배치, 적응형 내용 등의 개념은 동일합니다. 이러한 개념을 지원하는 ActionScript에 대한 자세한 내용은 여러 화면 크기에 대한 모바일 Flash 내용 만들기 를 참조하십시오.

스테이지 품질

TV용 AIR 응용 프로그램에 대한 Stage.quality 속성은 항상 StageQuality.High 이며, 이를 변경할 수는 없습니다.

이 속성은 모든 Stage 객체의 렌더링 품질을 지정합니다.

리모컨 입력 처리

사용자는 일반적으로 리모컨을 사용하여 TV용 AIR 응용 프로그램과 상호 작용합니다. 하지만 데스크톱 응용 프로그램에서 키보드의 키 입력을 처리할 때와 동일한 방식으로 키 입력을 처리하십시오. 특히 KeyboardEvent.KEY_DOWN 이벤트를 처리하십시오. 자세한 내용은 ActionScript 3.0 개발자 가이드 에서 키보드 입력 캡처 를 참조하십시오.

리모컨의 키는 ActionScript 상수에 매핑됩니다. 예를 들어 리모컨의 방향 키패드에 있는 키는 다음과 같이 매핑됩니다.

리모컨의 방향 키패드 키

ActionScript 3.0 상수

위로

Keyboard.UP

아래로

Keyboard.DOWN

왼쪽

Keyboard.LEFT

오른쪽

Keyboard.RIGHT

OK 또는 Select

Keyboard.ENTER

AIR 2.5에서는 리모컨 입력을 지원하기 위한 여러 Keyboard 상수가 추가되었습니다. 전체 목록은 Adobe Flash Platform용 ActionScript 3.0 참조 설명서 에서 Keyboard 클래스 를 참조하십시오.

최대한 많은 장치에서 응용 프로그램이 작동하도록 하려면 다음 권장 사항을 따르는 것이 좋습니다.

  • 가능한 경우 방향 키패드 키만 사용하십시오.

    리모컨 장치마다 키 집합이 서로 다릅니다. 하지만 일반적으로 방향 키패드 키는 항상 있습니다.

    예를 들어 Blu-ray 플레이어의 리모컨에는 일반적으로 “채널 위로” 및 “채널 아래로” 키가 없습니다. 재생, 일시 중지, 중지 등의 키가 없는 리모컨도 있습니다.

  • 응용 프로그램에서 방향 키패드 키보다 더 많은 키가 필요한 경우에는 Menu 및 Info 키를 사용하십시오.

    Menu 및 Info 키는 리모컨에서 그 다음으로 가장 흔한 키입니다.

  • 범용 리모컨이 널리 사용된다는 점을 고려하십시오.

    특정 장치를 위한 응용 프로그램을 만들더라도 많은 사용자들은 장치와 함께 제공되는 리모컨을 사용하는 대신 범용 리모컨을 사용합니다. 또한 장치의 리모컨에 있는 모든 키와 일치하도록 범용 리모컨을 프로그래밍하지 않는 경우가 많습니다. 따라서 가장 흔한 키만 사용하는 것이 좋습니다.

  • 사용자가 방향 키패드 키 중 하나를 사용하여 모든 상황을 종료할 수 있도록 하십시오.

    때로는 응용 프로그램이 리모컨에서 가장 흔한 키가 아닌 다른 키를 사용해야 할 합당한 이유가 있을 수 있습니다. 방향 키패드 중 하나를 사용하여 모든 것을 취소할 수 있도록 만들면 응용 프로그램이 모든 장치에서 원활하게 작동합니다.

  • 대상 TV용 AIR 장치에 포인터 입력 기능이 있음을 알고 있는 경우를 제외하면 포인터 입력을 요구하지 마십시오.

    많은 데스크톱 응용 프로그램에서는 마우스 입력을 사용해야 하지만 대부분의 TV에서는 포인터 입력을 지원하지 않습니다. 따라서 TV에서 실행되도록 데스크톱 응용 프로그램을 변환 중인 경우에는 마우스 입력이 필요 없도록 응용 프로그램을 수정하십시오 이벤트 처리 및 사용자 지침을 변경하는 것도 잊지 마십시오. 예를 들어 응용 프로그램의 시작 화면이 표시될 때 “시작하려면 클릭하십시오.”라는 텍스트가 표시되지 않도록 하십시오.

포커스 관리

데스크톱 응용 프로그램에서 한 사용자 인터페이스 요소에 포커스가 있으면 키보드 및 마우스 이벤트 등의 사용자 입력 이벤트가 해당 요소를 대상으로 실행됩니다. 또한 응용 프로그램은 포커스가 있는 사용자 인터페이스를 강조 표시합니다. 다음과 같은 이유로 인해 TV용 AIR 응용 프로그램에서 포커스를 관리하는 것은 데스크톱 응용 프로그램에서 포커스를 관리하는 것과 다릅니다.

  • 데스크톱 응용 프로그램은 종종 Tab 키를 사용하여 다음 사용자 인터페이스 요소로 포커스를 변경합니다. TV용 AIR 응용 프로그램에는 Tab 키 사용이 적용되지 않습니다. 리모컨 장치에는 일반적으로 Tab 키가 없습니다. 따라서 데스크톱에서 DisplayObject의 tabEnabled 속성을 사용하여 포커스를 관리하는 방식이 적용되지 않습니다.

  • 데스크톱 응용 프로그램에서는 종종 사용자가 마우스를 사용하여 사용자 인터페이스 요소에 포커스를 지정해야 합니다.

따라서 응용 프로그램에서 다음을 수행하십시오.

  • KeyboardEvent.KEY_DOWN 등의 Keyboard 이벤트를 수신 대기하는 이벤트 리스너를 Stage에 추가합니다.

  • 최종 사용자에게 강조 표시할 사용자 인터페이스 요소를 결정할 응용 프로그램 논리를 제공합니다. 응용 프로그램이 시작될 때 사용자 인터페이스 요소를 강조 표시합니다.

  • 응용 프로그램 논리를 바탕으로 Stage가 해당하는 사용자 인터페이스 요소 객체로부터 받은 Keyboard 이벤트를 전달합니다.

    Stage.focus 또는 Stage.assignFocus() 를 사용하여 사용자 인터페이스 요소에 포커스를 할당할 수도 있습니다. 그런 다음 해당 DisplayObject에 이벤트 리스너를 추가하여 키보드 이벤트를 받도록 할 수 있습니다.

사용자 인터페이스 디자인

다음과 관련된 권장 사항을 통합하여 TV용 AIR 응용 프로그램의 사용자 인터페이스가 TV에서 제대로 작동하도록 만드십시오.

  • 응용 프로그램의 응답성

  • 응용 프로그램의 사용 편의성

  • 사용자의 개성 및 기대치

응답성

다음 팁에 따라 TV용 AIR 응용 프로그램이 최대한 빠르게 응답하도록 만드십시오.

  • 응용 프로그램의 초기 SWF 파일을 최대한 작게 만듭니다.

    초기 SWF 파일에서 응용 프로그램을 시작하는 데 필요한 리소스만 로드하십시오. 예를 들어 응용 프로그램의 시작 화면 이미지만 로드합니다.

    이 권장 사항은 데스크톱 AIR 응용 프로그램에도 유효하지만 TV용 AIR 장치에서 더욱 중요합니다. 여기에는 여러 가지 이유가 있습니다. 우선 TV용 AIR 장치는 데스크톱 컴퓨터보다 처리 능력이 떨어집니다. 또한 응용 프로그램을 플래시 메모리에 저장합니다. 플래시 메모리는 데스크톱 컴퓨터의 하드 디스크만큼 빨리 액세스할 수 없습니다.

  • 응용 프로그램이 최소한 초당 20프레임의 프레임 속도로 실행되도록 만듭니다.

    이 목표에 맞춰 그래픽을 디자인하십시오. 그래픽 작업이 복잡하면 초당 프레임 수에 영향을 줄 수 있습니다. 렌더링 성능을 높이는 방법에 대한 팁은 Adobe Flash 플랫폼의 성능 최적화 를 참조하십시오.

    참고: TV용 AIR 장치의 그래픽 하드웨어는 일반적으로 60Hz 또는 120Hz(초당 60회 또는 120회)의 속도로 화면을 업데이트합니다. 하드웨어는 60Hz 또는 120Hz 화면에 표시하기 위해 초당 30프레임 또는 초당 60프레임 등의 속도로 스테이지에서 업데이트를 스캔합니다. 하지만 응용 프로그램의 그래픽 작업이 복잡하면 사용자가 이보다 더 높은 프레임 속도를 경험할 수 있습니다.
  • 사용자 입력 후 100~200밀리초 이내에 업데이트하십시오.

    업데이트가 오래 걸리는 경우 사용자가 참지 못하고 키를 여러 번 누르는 경우가 종종 발생합니다.

사용 편의성

TV용 AIR 응용 프로그램의 사용자는 “거실” 환경에 있습니다. TV에서 3미터 정도 떨어진 거리에 앉아 있는 것입니다. 때로는 실내가 어두울 수도 있습니다. 그리고 주로 리모컨을 사용하여 입력합니다. 여러 명이 응용 프로그램을 사용할 수 있습니다. 때로는 함께 사용할 수도, 때로는 연달아 사용할 수도 있습니다.

따라서 TV에서 사용하기 편하도록 사용자 인터페이스를 디자인하려면 다음 사항을 고려하십시오.

  • 사용자 인터페이스 요소를 크게 만듭니다.

    텍스트, 버튼 또는 기타 다른 사용자 인터페이스 요소를 디자인할 때 사용자가 실내의 반대편에 있다는 점을 고려하십시오. 3미터 정도의 거리에서 모든 것을 쉽게 보고 읽을 수 있도록 만드십시오. 화면이 크다고 해서 화면을 꽉 채워서는 안 됩니다.

  • 실내의 반대편에서 내용을 쉽게 보고 읽을 수 있도록 대비를 활용합니다.

  • 포커스가 있는 사용자 인터페이스 요소를 밝게 표시하여 명확하게 알 수 있도록 합니다.

  • 필요할 때만 모션을 사용합니다. 예를 들어 연속성을 위해 한 화면에서 다음 화면으로 슬라이드처럼 넘어가는 것은 좋은 방법입니다. 하지만 사용자가 탐색하는 데 도움이 되지 않거나 응용 프로그램과 관련된 것이 아닐 경우에는 모션이 방해가 될 수 있습니다.

  • 항상 사용자 인터페이스를 뒤로 이동할 수 있는 명확한 방법을 제공합니다.

리모컨의 사용에 대한 자세한 내용은 리모컨 입력 처리 를 참조하십시오.

사용자의 개성 및 기대치

TV용 AIR 응용 프로그램의 사용자는 일반적으로 재미있고 편안한 환경에서 TV 품질의 엔터테인먼트를 원합니다. 컴퓨터 또는 기술에 대해 잘 모를 수도 있습니다.

따라서 다음과 같은 특징을 갖도록 TV용 AIR 응용 프로그램을 디자인하십시오.

  • 기술적인 용어를 사용하지 않습니다.

  • 가능하면 모달 대화 상자를 사용하지 않습니다.

  • 업무 또는 기술 환경이 아니라 거실 환경에 알맞은 친숙하고 이해하기 쉬운 지침을 사용합니다.

  • TV 시청자가 기대하는 높은 품질의 그래픽을 사용합니다.

  • 리모컨으로 손쉽게 작동하는 사용자 인터페이스를 만듭니다. 데스크톱 또는 모바일 응용 프로그램에 더 적합한 사용자 인터페이스 또는 디자인 요소는 사용하지 마십시오. 예를 들어 데스크톱 및 모바일 장치의 사용자 인터페이스에서는 마우스나 손가락으로 버튼을 가리키고 클릭하는 동작을 수행해야 하는 경우가 많습니다.

글꼴 및 텍스트

TV용 AIR 응용 프로그램에서 장치 글꼴 또는 포함된 글꼴을 사용할 수 있습니다.

장치 글꼴은 장치에 설치된 글꼴입니다. 모든 TV용 AIR 장치에는 다음과 같은 장치 글꼴이 있습니다.

글꼴 이름

설명

_sans

_sans 장치 글꼴은 sans-serif 서체입니다. 모든 TV용 AIR 장치에 설치된 _sans 장치 글꼴은 Myriad Pro입니다. 일반적으로 sans-serif 서체는 보기 거리로 인해 serif 서체보다 TV에 더 잘 어울립니다.

_serif

_serif 장치 글꼴은 serif 서체입니다. 모든 TV용 AIR 장치에 설치된 _serif 장치 글꼴은 Minion Pro입니다.

_typewriter

_typewriter 장치 글꼴은 monospace 글꼴입니다. 모든 TV용 AIR 장치에 설치된 _typewriter 장치 글꼴은 Courier Std입니다.

모든 TV용 AIR 장치에는 다음과 같은 아시아 장치 글꼴도 있습니다.

글꼴 이름

언어

서체 범주

로캘 코드

RyoGothicPlusN-Regular

일본어

sans

ja

RyoTextPlusN-Regular

일본어

serif

ja

AdobeGothicStd-Light

한국어

sans

ko

AdobeHeitiStd-Regular

중국어 간체

sans

zh_CN

AdobeSongStd-Light

중국어 간체

serif

zh_CN

AdobeMingStd-Light

중국어 번체

serif

zh_TW 및 zh_HK

TV용 AIR 장치 글꼴의 특징은 다음과 같습니다.

  • Adobe® Type Library에서 가져온 것입니다.

  • TV에서 보기에 좋습니다.

  • 비디오 타이틀에 알맞게 디자인되었습니다.

  • 비트맵 글꼴이 아니라 글꼴 윤곽선입니다.

참고: 장치 제조업체는 장치에 다른 장치 글꼴도 포함하는 경우가 많습니다. 제조업체에서 제공한 이러한 장치 글꼴은 TV용 AIR 장치 글꼴에 더해 설치됩니다.

Adobe에서는 장치에 있는 모든 장치 글꼴을 표시하는 FontMaster Deluxe라는 응용 프로그램을 제공합니다. 이 응용 프로그램은 TV용 Flash 플랫폼 에서 받을 수 있습니다.

TV용 AIR 응용 프로그램에 글꼴을 포함할 수도 있습니다. 포함된 글꼴에 대한 자세한 내용은 ActionScript 3.0 개발자 가이드 에서 고급 텍스트 렌더링 을 참조하십시오.

Adobe에서는 TLF 텍스트 필드와 관련하여 다음 사항을 권장합니다.

  • 아시아 언어 텍스트에 대해 TLF 텍스트 필드를 사용하여 응용 프로그램이 실행되고 있는 로캘의 이점을 활용하십시오. TLFTextField 객체와 연관된 TextLayoutFormat 객체의 locale 속성을 설정하십시오. 현재 로캘을 파악하려면 ActionScript 3.0 개발자 가이드 에서 로캘 선택 을 참조하십시오.

  • TV용 AIR 장치 글꼴이 아닌 글꼴을 사용하는 경우 TextLayoutFormat 객체의 fontFamily 속성에서 글꼴 이름을 지정하십시오. 장치에서 사용할 수 있는 경우 TV용 AIR에서는 해당 글꼴을 사용합니다. 요청한 글꼴이 locale 설정을 기준으로 장치에 없을 경우 TV용 AIR는 적절한 TV용 AIR 장치 글꼴로 대체합니다.

  • fontFamily 속성에 대해 _sans , _serif 또는 _typewriter 를 지정하고 locale 속성을 설정하여 TV용 AIR가 올바른 TV용 AIR 장치 글꼴을 선택하도록 합니다. 로캘에 따라 TV용 AIR는 아시아 장치 글꼴 집합 또는 비아시아 장치 글꼴 집합 중에서 선택합니다. 이 설정을 사용함으로써 4개의 주요 아시아 로캘 및 영어에 대해 올바른 글꼴을 자동으로 쉽게 사용할 수 있습니다.

참고: 아시아 언어 텍스트에 대해 클래식 텍스트 필드를 사용하는 경우 올바른 렌더링을 보장하기 위해 TV용 AIR 장치 글꼴의 글꼴 이름을 지정하십시오. 대상 장치에 다른 글꼴이 설치되어 있다는 것을 알고 있으면 해당 글꼴을 지정할 수도 있습니다.

응용 프로그램 성능과 관련하여 다음 사항을 고려하십시오.

  • 클래식 텍스트 필드는 TLF 텍스트 필드보다 속도가 빠릅니다.

  • 비트맵 글꼴을 사용하는 클래식 텍스트 필드가 가장 빠릅니다.

    비트맵 글꼴은 각 문자에 대한 윤곽선 데이터만 제공하는 윤곽선 글꼴과 달리 각 문자에 대한 비트맵을 제공합니다. 장치 글꼴과 포함된 글꼴 모두 비트맵 글꼴이 될 수 있습니다.

  • 장치 글꼴을 지정하는 경우 해당 장치 글꼴이 대상 장치에 설치되어 있는지 확인하십시오. 장치에 설치되어 있지 않으면 TV용 AIR가 장치에 설치된 다른 글꼴을 찾아서 사용합니다. 하지만 이 비헤이비어는 응용 프로그램의 속도를 떨어뜨립니다.

  • 표시 객체와 마찬가지로 TextField 객체가 대부분 변경되지 않는 경우에는 객체의 cacheAsBitmap 속성을 true 로 설정하십시오. 이 설정은 페이드, 슬라이드, 알파 블렌딩 등 전환 성능을 향상시킵니다. 크기 조절 및 변환에는 cacheAsBitmapMatrix 를 사용하십시오. 자세한 내용은 그래픽 하드웨어 가속 을 참조하십시오.

파일 시스템 보안

TV용 AIR 응용 프로그램은 AIR 응용 프로그램이므로 장치의 파일 시스템에 액세스할 수 있습니다. 하지만 “거실” 장치에서는 응용 프로그램이 장치의 시스템 파일 또는 다른 응용 프로그램의 파일에 액세스할 수 없도록 만드는 것이 매우 중요합니다. TV 및 관련 장치의 사용자는 장치 오류를 예상하거나 용납하지 않습니다. 이들에게는 단지 TV를 보는 것일 뿐이기 때문입니다.

따라서 TV용 AIR 응용 프로그램에서는 장치의 파일 시스템을 제한적으로만 볼 수 있습니다. ActionScript 3.0을 사용하면 응용 프로그램이 특정 디렉토리(및 해당 하위 디렉토리)에만 액세스할 수 있습니다. 그뿐만 아니라 ActionScript에서 사용하는 디렉토리 이름은 장치에 있는 실제 디렉토리 이름이 아닙니다. 이러한 추가 레이어는 TV용 AIR 응용 프로그램이 해당 응용 프로그램에 속하지 않는 로컬 파일에 악의적으로 또는 실수로 액세스하는 것을 방지합니다.

자세한 내용은 TV용 AIR 응용 프로그램의 디렉토리 보기 를 참조하십시오.

AIR 응용 프로그램 샌드박스

TV용 AIR 응용 프로그램은 AIR 응용 프로그램 샌드박스에서 실행됩니다. AIR 응용 프로그램 샌드박스에 대한 설명은 AIR 응용 프로그램 샌드박스 를 참조하십시오.

TV용 AIR 응용 프로그램의 유일한 차이점은 파일 시스템 보안 에 설명된 대로 파일 시스템에 대한 액세스가 제한되어 있다는 점입니다.

응용 프로그램 수명 주기

데스크톱 환경과 달리 최종 사용자는 TV용 AIR 응용 프로그램이 실행되고 있는 윈도우를 닫을 수 없습니다. 따라서 응용 프로그램을 종료하기 위한 사용자 인터페이스 메커니즘을 제공하십시오.

일반적으로 장치에서 최종 사용자는 리모컨의 종료 키를 사용하여 응용 프로그램을 무조건 종료할 수 있습니다. 하지만 TV용 AIR에서는 flash.events.Event.EXITING 이벤트를 응용 프로그램에 전달하지 않습니다. 따라서 다음에 시작될 때 응용 프로그램이 제대로 복원될 수 있도록 응용 프로그램 상태를 자주 저장하십시오.

HTTP 쿠키

TV용 AIR는 HTTP 영구 쿠키 및 세션 쿠키를 지원합니다. TV용 AIR는 각 AIR 응용 프로그램의 쿠키를 응용 프로그램별 디렉토리에 저장합니다.

/app-storage/<app id>/Local Store

쿠키 파일의 이름은 cookies 입니다.

참고: 데스크톱 장치 같은 다른 장치의 AIR는 각 응용 프로그램에 대한 쿠키를 별도로 저장하지 않습니다. 응용 프로그램별 쿠키 저장소는 TV용 AIR의 응용 프로그램 및 시스템 보안 모델을 지원합니다.

ActionScript 속성 URLRequest.manageCookies 를 다음과 같이 사용하십시오.

  • manageCookies true 로 설정합니다. 이 값은 기본값으로, TV용 AIR가 HTTP 요청에 쿠키를 자동으로 추가하고 HTTP 응답에서 쿠키를 기억한다는 것을 의미합니다.

    참고: manageCookies true 일 때도 응용 프로그램은 URLRequest.requestHeaders 를 사용하여 HTTP 요청에 쿠키를 수동으로 추가할 수 있습니다. 이 쿠키의 이름이 TV용 AIR에서 관리하는 쿠키의 이름과 똑같은 경우에는 같은 이름의 두 쿠키가 요청에 포함됩니다. 두 쿠키의 값은 서로 다를 수 있습니다.
  • manageCookies false 로 설정합니다. 이 값은 응용 프로그램이 HTTP 요청에서 쿠키를 보내고 HTTP 응답에서 쿠키를 기억하는 것을 담당한다는 것을 의미합니다.

자세한 내용은 URLRequest 를 참조하십시오.