Google Cast: conceptos clave, protocolo de streaming y SDK de Cast

Autor: IT Sectr Publicado: 2026-04-30 Tiempo de lectura: 10 min

Google Cast es una tecnología de Google para transmitir contenido multimedia desde dispositivos móviles a televisores y sistemas de audio a través del protocolo Cast. El SDK permite a los desarrolladores añadir soporte de Chromecast a aplicaciones Android e iOS, enviando vídeo, audio e imágenes a pantallas grandes. Según Google Cast Developer Documentation, 2025, se han vendido más de 100 millones de dispositivos Chromecast en todo el mundo y el SDK de Cast se utiliza en más de 40 000 aplicaciones.

Puntos clave

  • Google Cast — un protocolo y SDK para transmitir contenido desde dispositivos móviles a televisores y altavoces
  • Sender — la aplicación móvil que envía contenido a un dispositivo Cast
  • Receiver — la aplicación en el televisor (Chromecast) que recibe y reproduce contenido
  • CAF SDK — Cast Application Framework, una API simplificada para la integración de Cast (recomendada por Google)
  • Media Streams — streaming HLS, DASH y MP4 a través de Cast con control de reproducción

¿Qué es Google Cast?

Google Cast es un protocolo de transmisión inalámbrica de contenido multimedia desarrollado por Google para hacer streaming desde dispositivos móviles, portátiles y tabletas a televisores, altavoces y otras pantallas. A diferencia de AirPlay (Apple) o Miracast, Cast utiliza el modelo de “enviar URL” (send-to-device): la aplicación móvil envía una URL de contenido a Chromecast y el propio dispositivo carga y reproduce el stream sin sobrecargar el teléfono.

La ventaja clave de Google Cast sobre el streaming directo (screen mirroring) es la eficiencia energética. Una vez que comienza la reproducción, el teléfono actúa solo como un mando a distancia: el usuario puede minimizar la aplicación, bloquear la pantalla o cambiar a otra aplicación — el vídeo sigue reproduciéndose en el televisor. Según Google (2025), Cast consume un 80% menos de energía en el teléfono en comparación con las soluciones de mirroring.

Google Cast no solo es compatible con Chromecast, sino también con receptores Cast integrados en televisores de Sony, TCL, Philips, Hisense y otros fabricantes con Google TV o Android TV. Cast también es compatible con sistemas de audio (Nest Audio, Sonos con Cast) y Chromecast Audio. El protocolo Cast funciona a través de Wi-Fi (2.4/5 GHz) y requiere que el remitente y el receptor estén en la misma red.

Arquitectura de Cast: Sender, Receiver y protocolos

La arquitectura de Google Cast consta de tres componentes: Sender (aplicación móvil), Receiver (aplicación en Chromecast/TV) y el protocolo de transporte. El Sender utiliza el SDK de Cast para descubrir dispositivos en la red, establecer una conexión y enviar comandos de reproducción. El Receiver es una aplicación web (HTML5 + CSS + JavaScript) que se ejecuta en el navegador de Chromecast y carga y reproduce contenido.

El protocolo Google Cast se basa en DIAL (Discovery and Launch) para el descubrimiento de dispositivos y un protocolo propietario sobre WebSocket para el control de la reproducción. DIAL utiliza SSDP (Simple Service Discovery Protocol) para encontrar dispositivos Cast en la red local. Tras el descubrimiento, el Sender establece una conexión WebSocket con el Receiver en el puerto 8008 u 8009 y envía comandos en formato JSON: LOAD, PLAY, PAUSE, STOP, SEEK.

ComponentePlataformaTecnología
SenderAndroid / iOS / ChromeCast SDK (Java/Kotlin, Swift, JS)
Default ReceiverChromecast / Android TVIntegrado (configurado mediante Google Cast Console)
Custom ReceiverChromecast / Android TVAplicación web (HTML5, CAF Receiver JS)
ProtocoloRed Wi-Fi localWebSocket + JSON + DIAL/SSDP
Transporte multimediaInternetHLS, DASH, MP4 (carga directa de Chromecast)

Protocolo Cast v2 para control de reproducción

El Sender envía al Receiver no el contenido en sí, sino una URL (URL de medios) y metadatos (título, imagen, subtítulos). El Receiver carga el contenido de forma independiente desde la URL, lo que ahorra la batería del teléfono al no transmitir datos. Una vez que comienza la reproducción, el Sender puede enviar comandos de pausa, rebobinado, control de volumen y recibir el estado de reproducción a través de Cast Protocol v2.

Cast Application Framework (CAF): integración rápida

Cast Application Framework (CAF) es una API simplificada de Google para integrar Cast en aplicaciones móviles, presentada en 2018. CAF reemplaza el SDK de Cast heredado (CastCompanionLibrary) y proporciona componentes de interfaz de usuario listos para usar: Cast Button (icono de descubrimiento de dispositivos), Mini Controller (reproductor mini en la parte inferior de la pantalla) y Expanded Controller (control remoto de pantalla completa). CAF es compatible con Android, iOS, Flutter y React Native.

Para usar CAF, el desarrollador no necesita escribir su propio Receiver — Google proporciona un Default Receiver que carga y reproduce contenido automáticamente. El Default Receiver es compatible con HLS, DASH, MP4, WebM, MP3, imágenes y subtítulos. La configuración del Receiver se realiza en Google Cast Console — solo hay que especificar la URL del contenido y el Default Receiver se encargará de todo lo demás. Un Receiver personalizado solo es necesario para escenarios no estándar: interfaz de TV personalizada, soporte DRM, colas de reproducción.

kotlin
// Configuración de opciones de CAF Receiver
val receiverOptions = CastReceiverOptions.Builder(context)
    .setReceiverApplicationId(
        CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
    )
    .build()

// Conexión de Cast Context
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)

Cast Connect: pruebas sin dispositivo físico

CAF maneja automáticamente el ciclo de vida de la conexión: descubrimiento de dispositivos a través de Cast Button, establecimiento de conexión, carga de medios, pausa en caso de pérdida temporal de conexión y reconexión. CAF también admite colas de reproducción (media queues) para listas de reproducción y el botón Cast en la pantalla de bloqueo y el centro de notificaciones (Android). Versión mínima: Android 5.0 (API 21), iOS 14+.

Streaming multimedia: HLS, DASH y MP4 en Chromecast

Google Cast admite los principales formatos de streaming: HLS (HTTP Live Streaming) de Apple, DASH (Dynamic Adaptive Streaming over HTTP) y MP4 progresivo. Chromecast selecciona automáticamente la calidad de vídeo óptima según la velocidad de conexión a internet (bitrate adaptable). Para HLS y DASH, Chromecast cambia de stream en tiempo real sin detener la reproducción. HLS es compatible desde la versión de firmware de Chromecast 1.28+.

Para hacer streaming a través de Google Cast, el contenido debe ser accesible mediante una URL pública (HTTP/HTTPS) — Chromecast carga el contenido directamente desde el servidor, no desde el teléfono. DRM (Digital Rights Management) es compatible a través de Widevine: Chromecast admite Widevine L3 (todos los dispositivos) y L1 (algunos modelos, como Chromecast with Google TV). Trabajar con DRM requiere un Receiver personalizado con integración de Shaka Player o ExoPlayer. Según Google, Chromecast with Google TV admite 4K HDR con Widevine L1 para Netflix, Disney+ y otros servicios.

kotlin
// Carga de medios a Chromecast a través de CAF
val mediaInfo = MediaInfo.Builder(Uri.parse(videoUrl))
    .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
    .setContentType("video/mp4")
    .setMetadata(MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE)
        .putString(MediaMetadata.KEY_TITLE, title)
        .putString(MediaMetadata.KEY_SUBTITLE, subtitle))
    .build()

CastSession.RemoteMediaClient
    ?.load(mediaInfo, autoPlay = true)

Formatos de subtítulos: Chromecast admite TTML, WebVTT y CEA-608. Los subtítulos se transmiten como parte de MediaInfo a través de MediaTrack. Chromecast también admite la carga asíncrona de imágenes (fotos) con capacidad de deslizar entre imágenes mediante Cast Queue API. Para audio, Chromecast admite MP3, AAC, FLAC, WAV y OGG. El streaming de audio a través de Google Cast es compatible con Chromecast Audio y altavoces Cast.

Componentes UI de Cast: Cast Button y Mini Controller

Cast Button es un componente clave de la interfaz de usuario del SDK de Google Cast que muestra el icono de Cast y cambia automáticamente de estado: inactivo (sin dispositivos), disponible (dispositivos encontrados), conectado (sesión activa). Al hacer clic en Cast Button se abre un diálogo de selección de dispositivo. El componente está disponible a través de MediaRouteActionProvider (Android) o GCKUICastButton (iOS). El botón Cast solo debe ser visible cuando hay dispositivos Cast disponibles en la red — CAF oculta automáticamente el botón si no se encuentran dispositivos.

Mini Controller es un panel en la parte inferior de la pantalla que muestra el título del contenido, la carátula, los botones de reproducción/pausa y el botón de cierre de sesión. El Mini Controller aparece automáticamente cuando una sesión de Cast está activa y el usuario se encuentra en una pantalla no relacionada con la reproducción. CAF proporciona un MiniControllerFragment listo para Android que se integra en el layout. Por defecto, el Mini Controller se encuentra en la parte inferior de la pantalla, pero se puede colocar en cualquier posición.

kotlin
// Personalización de Mini Controller mediante estilos
// styles.xml
// <style name="CastMiniControllerStyle"
//     parent="Theme.GoogleCast">
//     <item name="castMiniBackgroundColor">#FF0000</item>
//     <item name="castShowImageThumbnail">true</item>
// </style>

// Control programático de Mini Controller
val miniController = findViewById<MiniControllerFragment>(
    R.id.miniController
)
miniController.setVisibility(
    isCastSessionActive()
)

Expanded Controller es un control de reproducción a pantalla completa en el televisor que se abre al hacer clic en el Mini Controller. El Expanded Controller muestra: título, descripción, carátula, barra de progreso con capacidad de búsqueda, botones de reproducción/pausa/parada, lista de pistas (si hay cola), control de volumen y botón de desconexión. CAF proporciona una ExpandedControllerActivity lista que se inicia automáticamente. Si se necesita una interfaz personalizada, extienda la ExpandedControllerActivity base.

Receiver personalizado: su propia interfaz en el televisor

Un Receiver personalizado es una aplicación web (HTML5 + CSS + JavaScript) que se carga en Chromecast cuando se inicia una sesión de Cast. A diferencia del Default Receiver, uno personalizado permite controlar completamente la apariencia del contenido en el televisor: imágenes de fondo, animaciones, controles personalizados, logotipo de la marca. El Receiver personalizado se registra en Google Cast Console y recibe un ID de aplicación único.

El desarrollo de un Receiver personalizado se realiza en JavaScript utilizando Cast Receiver Framework (CAF Receiver). CAF Receiver proporciona una API para manejar mensajes entrantes del Sender, gestionar el flujo multimedia, manejar colas e integrarse con DRM. El Receiver se ejecuta en un entorno de navegador aislado en Chromecast (WebKit) con acceso limitado al DOM. Requisitos mínimos: HTML5, CSS3, JavaScript ES6. El Receiver se aloja en un servidor HTTPS.

js
// Receiver personalizado básico en CAF
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    (loadData) => {
        // Manejo personalizado de carga de medios
        console.log("Loading media:", loadData.media.contentId)
        return loadData
    }
)

context.start()

// Manejo de mensajes personalizados del Sender
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
    console.log("Custom data:", event.data)
})

Desarrollo e implementación de un Receiver personalizado

Un Receiver personalizado debe probarse en un dispositivo real a través de Cast Developer Console. Google recomienda usar el Default Receiver para escenarios estándar y uno personalizado solo cuando se necesite una interfaz de TV personalizada, soporte DRM (Widevine) o colas de reproducción con lógica personalizada. El Receiver no tiene acceso al DOM de la página del Sender y no puede ejecutar JavaScript enviado desde el Sender (seguridad).

Ejemplo de código: integración de Google Cast en Android

Un ejemplo completo de integración de Google Cast en una aplicación Android usando CAF. La aplicación reproduce vídeo y permite transmitirlo a Chromecast a través del botón Cast. El código incluye la configuración de CastOptions, la inicialización de CastContext, la gestión de la conexión y la carga de medios en el dispositivo Cast.

kotlin
class CastPlayerActivity : AppCompatActivity() {

    private lateinit var castContext: CastContext

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setupCast()
        setContentView(R.layout.activity_player)
    }

    private fun setupCast() {
        CastOptions.Builder()
            .setReceiverApplicationId(
                CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
            )
            .build()
            .let {
                castContext = CastContext.getSharedInstance(this)
            }
    }

    fun castVideo(videoUrl: String, title: String) {
        val mediaInfo = MediaInfo.Builder(Uri.parse(videoUrl))
            .setContentType("video/mp4")
            .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
            .setMetadata(MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE)
                .putString(MediaMetadata.KEY_TITLE, title))
            .build()

        castContext.sessionManager.getCurrentCastSession()
            ?.remoteMediaClient
            ?.load(mediaInfo)
    }
}

Para probar Google Cast, use un dispositivo Cast virtual a través de Chrome DevTools (pestaña Cast) o un Chromecast físico. Google proporciona un ID de aplicación de prueba — CC1AD845 (Default Media Receiver). Antes de publicar, registre su aplicación en Google Cast Console y obtenga un ID de aplicación de producción. El SDK de Cast requiere Google Play Services 21.0.0+ y Android 5.0+.

Problemas comunes y depuración de Cast

El primer problema común — Cast Button no aparece. Causas: los dispositivos no están en la misma red Wi-Fi, Chromecast no admite DIAL (firmware obsoleto) o la detección Wi-Fi está desactivada en el teléfono. Solución: compruebe que el teléfono y Chromecast estén conectados a la misma red (2.4 GHz o 5 GHz). Google Cast no funciona en redes Wi-Fi de invitados, VPN o redes corporativas con aislamiento de clientes. Use Cast Connect para probar sin un dispositivo físico.

El segundo problema — la conexión se interrumpe durante la reproducción. Chromecast puede perder la conexión Wi-Fi debido a una señal débil, congestión del canal o interferencias de un microondas (2.4 GHz). Solución: coloque Chromecast más cerca del router, use 5 GHz (si es compatible), configure QoS para el tráfico de Chromecast. En la aplicación, maneje el callback onRemoteMediaPlayerStatusUpdated con estado IDLE y motivo de error — ante una pérdida de conexión, muestre una notificación y ofrezca reconectar.

El tercer problema — el contenido no se reproduce en Chromecast. Verifique: la URL del contenido es accesible desde internet (Chromecast carga el contenido directamente, no a través del teléfono), el formato es compatible con Chromecast y no hay bloqueo CORS (para .m3u8 y .mpd). Si usa el Default Receiver, asegúrese de que el ID de aplicación sea correcto. Para un Receiver personalizado, compruebe que la aplicación esté alojada en HTTPS. Use Cast SDK Logger para depurar: CastContext.getSharedInstance().setCastLogger(...).

Preguntas frecuentes

¿En qué se diferencia Google Cast de AirPlay y Miracast?

Google Cast utiliza el modelo de “enviar URL” — el teléfono envía a Chromecast un enlace al contenido, que se carga directamente. AirPlay (Apple) es un protocolo similar para el ecosistema Apple. Miracast es un mirroring directo de pantalla que sobrecarga el teléfono. Cast consume un 80% menos de batería del teléfono y permite minimizar la aplicación sin detener la reproducción.

¿Necesito Chromecast para que funcione Google Cast?

Google Cast funciona no solo en Chromecast, sino también en televisores con Google TV integrado, Android TV, así como en sistemas de audio con soporte Cast (Nest Audio, Sonos). Para desarrollo y pruebas, puede usar un dispositivo Cast virtual a través de Chrome DevTools. Para la integración de Cast en una aplicación no se requiere un dispositivo físico — use Cast Connect para emulación.

¿Google Cast admite 4K y HDR?

Sí, Chromecast with Google TV (2020) y modelos más recientes admiten 4K HDR con Dolby Vision, HDR10 y HDR10+. El Chromecast estándar (3ª generación) admite 1080p 60fps. Chromecast Ultra — 4K HDR. Para streaming en 4K se requiere una velocidad de internet de al menos 25 Mbps y soporte Widevine L1 para contenido DRM (Netflix, Disney+).

¿Cómo detener una sesión de Cast mediante programación?

Para detener una sesión, llame a CastSession.endSession(boolean stopCasting) con true si necesita detener la reproducción en el televisor, o false si solo desea desconectar el teléfono. También puede usar el método stop() en RemoteMediaClient. El usuario también puede detener la sesión a través del botón Cast o Mini Controller pulsando el botón de desconexión.

¿Puedo enviar datos personalizados a través de Google Cast?

Sí, a través de mensajes personalizados (custom messages). El Sender envía un mensaje a través de un namespace (por ejemplo, urn:x-cast:custom.namespace) con un objeto JSON arbitrario. El Receiver procesa el mensaje mediante addCustomMessageListener. Los mensajes personalizados solo son compatibles con un Receiver personalizado — el Default Receiver no maneja namespaces personalizados. El tamaño máximo del mensaje es de 64 KB.

Resumen

  • Google Cast — un protocolo de streaming de contenido desde dispositivos móviles a televisores a través de Chromecast y Android TV
  • Arquitectura — el Sender (aplicación) envía una URL de contenido, el Receiver (Chromecast) la carga y reproduce
  • CAF SDK — Cast Application Framework con componentes listos: Cast Button, Mini Controller y Expanded Controller
  • Formatos — HLS, DASH, MP4, WebM, MP3, AAC, FLAC con bitrate adaptable y subtítulos
  • Default Receiver — el receptor integrado de Google para integración rápida sin escribir código en el televisor
  • Receiver personalizado — una aplicación web en HTML5/JS para personalizar la interfaz y DRM en el televisor
  • Depuración — verifique la red Wi-Fi, la URL del contenido y el soporte de formatos; use Cast SDK Logger

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también