오디오 기기

오디오 기기용 Google Cast는 오디오 재생만 지원합니다. 이 가이드에서는 오디오 전용 기기에 맞게 Cast 애플리케이션을 최적화하고 메모리, CPU, 네트워크 대역폭 사용량에 대한 감소된 요구사항을 활용하는 방법을 설명합니다.

오디오용 Google Cast를 지원하는 앱은 다음을 고려해야 합니다.

  • 오디오 기기용 Google Cast는 동영상이나 그래픽을 표시하지 않습니다. 그러나 많은 오디오 기기에는 재생 상태 (재생 중 또는 일시중지됨) 및 진행률과 같은 메타데이터를 표시하는 디스플레이가 있습니다. 애플리케이션은 이러한 중요한 사용자 정보를 수신기에서만 표시해서는 안 됩니다. 중요한 정보와 대부분의 사용자 인터페이스는 발신기에 표시되어야 합니다.
  • 웹 수신기 애플리케이션을 제대로 실행하려면 오디오 기기용 Google Cast에서 그래픽이 표시되지 않더라도 그래픽을 렌더링해야 합니다. 기기가 하드웨어 가속 그래픽 작업을 지원하지 않을 수 있으므로 수신기 애플리케이션은 색상 그라데이션, 회전, 알파 혼합, 진행률 표시줄과 같은 대형 객체의 다시 그리기와 같이 그래픽 집약적인 작업을 초당 한 번 이상 사용하지 않아야 합니다.
  • 오디오 기기용 Google Cast는 디지털 권한 관리 (DRM) 보호 콘텐츠용 Widevine만 지원합니다.
  • 대부분의 오디오용 Google Cast 기기의 경우 송신기 애플리케이션은 Chromecast 기기에서와 같이 TV에 입력되는 오디오 소스의 볼륨뿐만 아니라 기기 (예: 스피커)의 전체 볼륨 범위를 제어합니다.
  • 앱은 송신기 기기(예: 휴대전화)로 재생을 제어하는 것 외에도 기기 자체의 컨트롤러(예: 리모컨, 기기 내 버튼, 외부 원격 애플리케이션)로 재생을 제어할 수 있도록 제공해야 할 수 있습니다.
  • 오디오 기기용 Google Cast는 특정 기기 UI에 따라 소형 LCD 화면, HDMI 출력 (사운드바 또는 오디오-비디오 수신기용), 외부 원격 애플리케이션을 사용하여 콘텐츠 메타데이터 표시를 지원할 수 있습니다.

개발

오디오용 Google Cast를 지원하는 Cast 애플리케이션을 개발하는 첫 번째 단계는 오디오-동영상용 Cast 애플리케이션을 개발하고 Chromecast에서 실행되는지 확인하는 것입니다. 이 문서에서는 이러한 앱을 개발하고 테스트했다고 가정합니다.

앱이 오디오-동영상 기기와 오디오 전용 기기를 모두 지원할 수 있습니다. 어느 쪽으로 전송하는지 알고, 주어진 시나리오에서 최상의 사용자 환경을 보장하기 위한 조치를 취해야 합니다.

예를 들어 듀얼 동영상 및 오디오 앱 (예: 로컬/NAS 파일 재생 애플리케이션)은 오디오 파일 재생을 지원하기 위해 오디오 전용 기기로 전송을 사용 설정해야 하지만 사용자가 오디오 전용 기기로 동영상 파일을 전송하도록 허용해서는 안 됩니다. 앱은 아래에 설명된 발신자를 위한 기기 기능 API를 사용하여 기기에 적합한 콘텐츠를 결정할 수 있습니다.

오디오용 Google Cast를 지원하려면 앱에서 다음을 실행해야 합니다.

  • 오디오 전용 지원: 음악 및 오디오 파일, 라디오 스트리밍 등. 웹 수신기 앱으로 스트리밍되는 미디어는 동영상 스트림이 아니어야 합니다. 또한 애플리케이션 시작 시간과 메모리 사용량을 개선하기 위해 그래픽과 이미지를 스트리밍하지 마세요. 아래의 메모리 사용 가이드라인을 참고하세요.

  • 일반 Chromecast뿐만 아니라 오디오 전송용 Cast 기기에서도 정상적으로 실행됩니다.

기기 기능

앱은 기기 자체 또는 송신자 또는 수신자 API를 통해 사용할 수 있는 기기 기능 API를 통해 오디오 전용 기기에서 실행 중인지 알 수 있습니다.

기기 HTTP 헤더

애플리케이션 실행 중에 Cast 기기에서 제공하는 CAST-DEVICE-CAPABILITIES HTTP 헤더는 기기 기능을 설명합니다. 기기는 이 헤더가 포함된 요청을 웹 수신기 앱을 호스팅하는 서버로 전송합니다. 오디오 전용 기기의 헤더는 CAST-DEVICE-CAPABILITIES: {"display_supported":false}로 기기 기능을 설명합니다.

서버가 기기에서 요청을 수신하면 이 헤더의 정보를 사용하여 오디오 기기에 최적화된 웹 수신기 앱으로 요청을 리디렉션할 수 있습니다.

Web Receiver API

웹 수신기 앱이 로드될 때 CastReceiverManager.getDeviceCapabilities()를 호출하여 동일한 기기 기능 객체를 가져올 수 있습니다.

자세한 내용은 기기 기능을 참고하세요.

Sender API

각 Cast sender API에는 기기 기능 정보도 있습니다. 이를 통해 발신자 앱은 수신자에게 전송할 미디어의 종류를 결정할 수 있습니다. 앱에서 오디오와 동영상을 모두 지원하는 경우 오디오 전용 기기에 동영상 콘텐츠를 전송하지 않을 수 있습니다. 또한 앱은 디자인 체크리스트에 설명된 대로 기기에 가장 적합한 메서드를 사용하여 볼륨을 제어할 수 있습니다. 발신자를 위한 다음 기기 기능 API를 참고하세요.

메모리 사용 가이드라인

오디오 기기에서 실행되는 웹 수신기 앱은 다음과 같이 메모리 사용량을 관리해야 합니다.

  • 메모리 사용량을 줄이고 재생이 시작될 때까지의 시간을 단축하려면 이미지 또는 그래픽 애셋을 다운로드하거나 사용하지 마세요.
  • 미디어 소스 확장 프로그램 (MSE)을 사용하는 경우 애플리케이션은 스트림 버퍼를 2MB로 제한해야 합니다. Media Player Library (MPL)를 사용하는 경우 애플리케이션의 스트림 버퍼 크기는 이미 MPL에 의해 정의되어 있습니다.
  • HTMLMediaElement를 사용하면 애플리케이션의 스트림 버퍼 크기가 스트림 속도를 기준으로 Chrome에서 정의됩니다. 오디오 비트 전송률을 초당 2메가비트로 제한합니다. 이 비트 전송률은 지원되는 미디어에 설명된 모든 코덱 (최대 48KHz/16비트)을 지원합니다.

볼륨 제어

대부분의 오디오용 Google Cast 기기의 경우 송신기 애플리케이션은 Chromecast 기기와 마찬가지로 오디오 소스 입력 볼륨뿐만 아니라 기기의 전체 볼륨 범위를 제어합니다. 즉, 오디오 전용 애플리케이션의 경우 볼륨 변경 증분을 더 작게 해야 합니다. 앱에서 볼륨 제어를 제공하는 방법에 관한 가이드라인은 다음 문서를 참고하세요.

기기 제어

오디오 기기용 Google Cast에는 자체 재생 컨트롤 (예: 버튼, 리모컨)이 있을 수 있습니다. 이러한 메시지는 미디어 재생 메시지에 설명된 대로 urn:x-cast:com.google.cast.media 네임스페이스에 정의된 미디어 재생 메시지를 사용하여 수신기 애플리케이션에서 재생을 제어합니다. 수신기 애플리케이션은 기기의 재생 컨트롤을 지원하려면 이러한 미디어 재생 메시지를 지원해야 합니다.

또한 사용자가 기기 컨트롤로 미디어 상태를 변경하는 경우 발신자 앱이 수신자로부터 상태 메시지를 수신하고 적절하게 UI를 업데이트할 수 있도록 수신자에서 발신자로 전송되는 메시지를 발신자 앱에서 지원해야 합니다.

기기 디스플레이

오디오용 Google Cast 기기에는 기기에 LCD 화면이 있거나 미디어 메타데이터를 표시하는 기기별 제어 애플리케이션이 있을 수 있습니다. 수신기 앱은 모든 오디오 트랙에 이 메타데이터를 제공하고 메타데이터가 디스플레이에 적절하게 표시되도록 현재 재생 중인 콘텐츠와 동기화되어야 합니다. 애플리케이션에서 맞춤 메타데이터를 사용하는 경우 아래의 각 플랫폼에 설명된 대로 표준 오디오 메타데이터 (트랙 이름, 아티스트 이름, 앨범 제목 등)도 제공해야 합니다.

수신기는 미디어를 로드할 때 발신자로부터 메타데이터를 가져옵니다. 보낸 사람 앱에서 수신기에 미디어를 로드하는 명령어를 사용하여 메타데이터가 오디오 기기용 Google Cast에 표시되도록 아래에 설명된 필드를 지정해야 합니다. 다음 API를 사용합니다.

Cast 앱이 수신기 또는 클라우드에서 미디어 대기열을 관리하는 경우 모든 발신기가 동기화되도록 웹 수신기는 urn:x-cast:com.google.cast.media 네임스페이스를 사용하여 미디어 상태 업데이트를 브로드캐스트해야 합니다.

등록

테스트를 위해 오디오용 Google Cast 기기를 등록하고 Google Cast SDK 개발자 콘솔을 사용하여 오디오용 Google Cast 기기를 지원하도록 앱을 등록해야 합니다.

  • 기기 등록에 관한 자세한 내용은 기기를 참고하세요.
  • 앱이 오디오 기기용 Google Cast를 검색할 수 있도록 애플리케이션을 등록할 때 오디오 전용 기기로 전송 지원 체크박스를 선택해야 합니다. 애플리케이션 등록을 참고하세요.

테스트에 사용되는 앱과 같이 게시되지 않은 앱의 경우 앱이 오디오 전용 기기를 검색할 수 있도록 오디오 전용 기기를 지원하는 옵션도 선택해야 합니다.

오디오 2.0용 Google Cast

오디오용 Google Cast (GC4A) 2.0은 메모리가 부족한 기기를 타겟팅하여 콘텐츠를 스트리밍할 수 있는 기기 생태계를 확장하도록 설계된 차세대 Cast 오디오 플랫폼입니다. GC4A 2.0은 오디오 플랫폼을 타겟팅하므로 디스플레이가 없는 기기에 맞게 웹 API 세트가 축소됩니다. GC4A 2.0은 전송을 지원하는 신규 및 기존 스피커에 출시됩니다.

테스트 및 디버깅

지원되는 모든 스피커가 GC4A 2.0으로 전환되므로 오디오 앱 개발자는 GC4A 2.0에서 앱을 테스트해야 합니다. 여기에 나열된 GC4A 2.0 기기에서 GC4A 2.0용 Cast 앱을 테스트할 수 있습니다.

GC4A 2.0은 Chrome 원격 디버거를 지원하지 않습니다. 앱을 디버그하려면 Cast 디버그 로거를 사용하는 것이 좋습니다.

사용 가능한 GC4A 2.0 기기

다음은 GC4A 2.0 기기의 일부 목록입니다.

  • Bose: Wi-Fi 스피커 및 스마트 사운드바
  • JBL: Charge 5 Wi-Fi / Boombox 3 Wi-Fi / Authentics 200, 300, 500
  • 삼성: Music Frame / 사운드바
  • LG: 사운드바 S90TY/SG10TY/SE70Q/S80Q/S90Q
  • Bang &Olufsen Beosound 2 / Beocore Connect
  • Sonoro Maestro 2 / Meisterstruck 2
  • 캠브리지 오디오 MXN10
  • KEF LS60 / LSX II
  • Teufel Motiv Home
  • Nordic Argon 오디오
  • WiiM CI MOD S / Ultra

GC4A 2.0에서 모든 앱 기능을 테스트하는 것이 좋습니다. 모든 미디어 유형 (팟캐스트, 스트림 등) 재생, 일시중지, 스크러빙, 건너뛰기, 재생목록 변경, 중지, 전송 다시 연결 테스트를 포함해야 합니다.

지원되는 API

GC4A 2.0은 다음 API를 지원합니다.

  • HTML
  • JavaScript ECMA 6
  • DOMParser
  • XMLSerializer
  • 문서 및 하위 클래스
  • DocumentFragment
  • HTMLMediaElement 및 HTMLAudioElement
  • HTMLVideoElement (오디오 콘텐츠만 재생할 수 있음)
  • HTMLScriptElement
  • HTMLBaseElement
  • HTMLTemplateElement
  • 맞춤 요소
  • Shadow DOM
  • 스크립트 모듈 / 비동기 / 지연
  • 가져오기 / XHR
  • WebSocket
  • MessagePort
  • 쿠키
  • MSE (미디어 소스 확장 프로그램)
  • EME (암호화된 미디어 확장 프로그램)
  • 로컬 / 세션 저장소

GC4A 2.0은 다음을 지원하지 않습니다.

  • 동적 모듈 가져오기 (2024년 추가 예정)
  • CSS
  • IFrame
  • TextTracks

문의

테스트 설정에 도움이 필요하거나 Bose 스피커를 사용할 수 없는 경우 gc4a-support-external@google.com에 문의하세요.