{"id":1027,"date":"2026-06-19T07:53:28","date_gmt":"2026-06-19T07:53:28","guid":{"rendered":"https:\/\/googlecumbia.metricavisual.com\/en-vivo\/"},"modified":"2026-09-12T03:37:46","modified_gmt":"2026-09-12T03:37:46","slug":"en-vivo-radio-tv","status":"publish","type":"page","link":"https:\/\/googlecumbia.metricavisual.com\/?page_id=1027","title":{"rendered":"En Vivo"},"content":{"rendered":"\n<style>\n\/* ==========================================\n   REPRODUCTOR HLS GOOGLE CUMBIA\n========================================== *\/\n\n.gcp-tv-player,\n.gcp-tv-player * {\n    box-sizing: border-box;\n}\n\n.gcp-tv-player {\n    --gcp-accent: #ff5a00;\n    --gcp-bg: #090909;\n    --gcp-panel: #171717;\n\n    width: 100%;\n    max-width: 1200px;\n    margin: 24px auto;\n    padding: 18px;\n    overflow: hidden;\n    background:\n        radial-gradient(circle at top, rgba(255, 90, 0, 0.12), transparent 42%),\n        var(--gcp-panel);\n    border: 1px solid rgba(255, 255, 255, 0.08);\n    border-radius: 20px;\n    color: #fff;\n    font-family: Arial, sans-serif;\n    box-shadow: 0 16px 45px rgba(0, 0, 0, 0.35);\n}\n\n.gcp-tv-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 15px;\n    margin-bottom: 15px;\n}\n\n.gcp-tv-heading {\n    min-width: 0;\n}\n\n.gcp-tv-heading h2 {\n    margin: 0;\n    color: #fff;\n    font-size: clamp(20px, 3vw, 30px);\n    line-height: 1.2;\n}\n\n.gcp-tv-status {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin: 7px 0 0;\n    color: #bbb;\n    font-size: 14px;\n}\n\n.gcp-tv-status-dot {\n    width: 9px;\n    height: 9px;\n    flex: 0 0 9px;\n    background: #777;\n    border-radius: 50%;\n}\n\n.gcp-tv-status.is-live .gcp-tv-status-dot {\n    background: #21c45a;\n    box-shadow: 0 0 0 5px rgba(33, 196, 90, 0.14);\n}\n\n.gcp-tv-live-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    flex: 0 0 auto;\n    padding: 8px 12px;\n    background: #d90000;\n    border-radius: 999px;\n    color: #fff;\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 0.7px;\n    text-transform: uppercase;\n}\n\n.gcp-tv-live-badge::before {\n    content: \"\";\n    width: 8px;\n    height: 8px;\n    background: #fff;\n    border-radius: 50%;\n    animation: gcp-live-pulse 1.3s ease-in-out infinite;\n}\n\n.gcp-tv-screen {\n    position: relative;\n    width: 100%;\n    overflow: hidden;\n    background: #000;\n    border-radius: 16px;\n    aspect-ratio: 16 \/ 9;\n}\n\n.gcp-tv-video {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: #000;\n    object-fit: contain;\n}\n\n\/* Capa inicial y errores *\/\n.gcp-tv-overlay {\n    position: absolute;\n    inset: 0;\n    z-index: 5;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 24px;\n    background:\n        linear-gradient(rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.78));\n    text-align: center;\n    transition:\n        opacity 0.25s ease,\n        visibility 0.25s ease;\n}\n\n.gcp-tv-overlay.is-hidden {\n    visibility: hidden;\n    opacity: 0;\n    pointer-events: none;\n}\n\n.gcp-tv-overlay-content {\n    width: min(100%, 520px);\n}\n\n.gcp-tv-overlay-icon {\n    display: block;\n    margin-bottom: 12px;\n    font-size: 48px;\n}\n\n.gcp-tv-overlay-title {\n    margin: 0 0 8px;\n    color: #fff;\n    font-size: clamp(21px, 4vw, 30px);\n}\n\n.gcp-tv-overlay-message {\n    margin: 0 0 18px;\n    color: #d4d4d4;\n    font-size: 15px;\n    line-height: 1.6;\n}\n\n.gcp-tv-start-button,\n.gcp-tv-retry-button {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 9px;\n    min-height: 48px;\n    padding: 12px 22px;\n    border: 0;\n    border-radius: 999px;\n    background: var(--gcp-accent);\n    color: #fff;\n    font-size: 15px;\n    font-weight: 800;\n    cursor: pointer;\n    transition:\n        transform 0.2s ease,\n        filter 0.2s ease;\n}\n\n.gcp-tv-start-button:hover,\n.gcp-tv-retry-button:hover {\n    transform: translateY(-2px);\n    filter: brightness(1.08);\n}\n\n\/* Cargando *\/\n.gcp-tv-loader {\n    display: none;\n    position: absolute;\n    inset: 0;\n    z-index: 4;\n    align-items: center;\n    justify-content: center;\n    pointer-events: none;\n}\n\n.gcp-tv-loader.is-visible {\n    display: flex;\n}\n\n.gcp-tv-spinner {\n    width: 52px;\n    height: 52px;\n    border: 5px solid rgba(255, 255, 255, 0.2);\n    border-top-color: var(--gcp-accent);\n    border-radius: 50%;\n    animation: gcp-spinner 0.8s linear infinite;\n}\n\n\/* Barra inferior informativa *\/\n.gcp-tv-info {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    margin-top: 14px;\n    padding: 12px 14px;\n    background: rgba(255, 255, 255, 0.04);\n    border-radius: 12px;\n}\n\n.gcp-tv-info-text {\n    min-width: 0;\n}\n\n.gcp-tv-info strong {\n    display: block;\n    margin-bottom: 4px;\n    color: #fff;\n}\n\n.gcp-tv-info small {\n    display: block;\n    overflow: hidden;\n    color: #aaa;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.gcp-tv-actions {\n    display: flex;\n    flex: 0 0 auto;\n    gap: 8px;\n}\n\n.gcp-tv-action {\n    min-height: 40px;\n    padding: 9px 13px;\n    border: 1px solid rgba(255, 255, 255, 0.14);\n    border-radius: 10px;\n    background: rgba(255, 255, 255, 0.06);\n    color: #fff;\n    font-weight: 700;\n    cursor: pointer;\n}\n\n.gcp-tv-action:hover {\n    background: rgba(255, 255, 255, 0.12);\n}\n\n@keyframes gcp-spinner {\n    to {\n        transform: rotate(360deg);\n    }\n}\n\n@keyframes gcp-live-pulse {\n    0%,\n    100% {\n        opacity: 1;\n    }\n\n    50% {\n        opacity: 0.35;\n    }\n}\n\n@media (max-width: 700px) {\n    .gcp-tv-player {\n        margin: 14px auto;\n        padding: 10px;\n        border-radius: 14px;\n    }\n\n    .gcp-tv-screen {\n        border-radius: 10px;\n    }\n\n    .gcp-tv-header {\n        align-items: flex-start;\n    }\n\n    .gcp-tv-info {\n        align-items: stretch;\n        flex-direction: column;\n    }\n\n    .gcp-tv-actions {\n        width: 100%;\n    }\n\n    .gcp-tv-action {\n        flex: 1;\n    }\n}\n<\/style>\n\n<section class=\"gcp-tv-player\" id=\"gcpTvPlayer\">\n    <div class=\"gcp-tv-header\">\n        <div class=\"gcp-tv-heading\">\n            <h2>Televisi\u00f3n en vivo<\/h2>\n\n            <p class=\"gcp-tv-status\" id=\"gcpTvStatus\">\n                <span class=\"gcp-tv-status-dot\"><\/span>\n                <span id=\"gcpTvStatusText\">Preparando se\u00f1al\u2026<\/span>\n            <\/p>\n        <\/div>\n\n        <span class=\"gcp-tv-live-badge\">En vivo<\/span>\n    <\/div>\n\n    <div class=\"gcp-tv-screen\" id=\"gcpTvScreen\">\n        <video\n            class=\"gcp-tv-video\"\n            id=\"gcpHlsVideo\"\n            controls\n            playsinline\n            preload=\"metadata\"\n            crossorigin=\"anonymous\"\n        ><\/video>\n\n        <div class=\"gcp-tv-loader\" id=\"gcpTvLoader\">\n            <span class=\"gcp-tv-spinner\"><\/span>\n        <\/div>\n\n        <div class=\"gcp-tv-overlay\" id=\"gcpTvOverlay\">\n            <div class=\"gcp-tv-overlay-content\">\n                <span class=\"gcp-tv-overlay-icon\" id=\"gcpTvOverlayIcon\">\u25b6<\/span>\n\n                <h3 class=\"gcp-tv-overlay-title\" id=\"gcpTvOverlayTitle\">\n                    Se\u00f1al de televisi\u00f3n\n                <\/h3>\n\n                <p class=\"gcp-tv-overlay-message\" id=\"gcpTvOverlayMessage\">\n                    Pulsa el bot\u00f3n para iniciar la transmisi\u00f3n en vivo.\n                <\/p>\n\n                <button\n                    type=\"button\"\n                    class=\"gcp-tv-start-button\"\n                    id=\"gcpTvStartButton\"\n                >\n                    \u25b6 Ver transmisi\u00f3n\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"gcp-tv-info\">\n        <div class=\"gcp-tv-info-text\">\n            <strong>Canal en vivo<\/strong>\n            <small id=\"gcpTvTechnicalStatus\">HLS \u00b7 Calidad autom\u00e1tica<\/small>\n        <\/div>\n\n        <div class=\"gcp-tv-actions\">\n            <button\n                type=\"button\"\n                class=\"gcp-tv-action\"\n                id=\"gcpTvReload\"\n            >\n                \u21bb Recargar\n            <\/button>\n\n            <button\n                type=\"button\"\n                class=\"gcp-tv-action\"\n                id=\"gcpTvFullscreen\"\n            >\n                \u26f6 Pantalla completa\n            <\/button>\n        <\/div>\n    <\/div>\n<\/section>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/hls.js@1\/dist\/hls.min.js\"><\/script>\n\n<script>\n(function () {\n    \"use strict\";\n\n    const STREAM_URL =\n        \"https:\/\/canaletaplus.com:3922\/live\/cosmoslive.m3u8\";\n\n    const video = document.getElementById(\"gcpHlsVideo\");\n    const playerContainer = document.getElementById(\"gcpTvPlayer\");\n    const screen = document.getElementById(\"gcpTvScreen\");\n    const overlay = document.getElementById(\"gcpTvOverlay\");\n    const overlayIcon = document.getElementById(\"gcpTvOverlayIcon\");\n    const overlayTitle = document.getElementById(\"gcpTvOverlayTitle\");\n    const overlayMessage = document.getElementById(\"gcpTvOverlayMessage\");\n    const startButton = document.getElementById(\"gcpTvStartButton\");\n    const loader = document.getElementById(\"gcpTvLoader\");\n    const status = document.getElementById(\"gcpTvStatus\");\n    const statusText = document.getElementById(\"gcpTvStatusText\");\n    const technicalStatus = document.getElementById(\"gcpTvTechnicalStatus\");\n    const reloadButton = document.getElementById(\"gcpTvReload\");\n    const fullscreenButton = document.getElementById(\"gcpTvFullscreen\");\n\n    let hls = null;\n    let started = false;\n    let recoveryAttempts = 0;\n    const MAX_RECOVERY_ATTEMPTS = 3;\n\n    function setLoading(isLoading) {\n        loader.classList.toggle(\"is-visible\", isLoading);\n    }\n\n    function setStatus(message, isLive) {\n        statusText.textContent = message;\n        status.classList.toggle(\"is-live\", Boolean(isLive));\n    }\n\n    function hideOverlay() {\n        overlay.classList.add(\"is-hidden\");\n    }\n\n    function showOverlay(options) {\n        const config = Object.assign(\n            {\n                icon: \"\u26a0\",\n                title: \"No se pudo reproducir\",\n                message: \"La se\u00f1al no est\u00e1 disponible temporalmente.\",\n                button: \"Reintentar\"\n            },\n            options || {}\n        );\n\n        overlayIcon.textContent = config.icon;\n        overlayTitle.textContent = config.title;\n        overlayMessage.textContent = config.message;\n        startButton.textContent = config.button;\n        startButton.className = \"gcp-tv-retry-button\";\n        overlay.classList.remove(\"is-hidden\");\n    }\n\n    function destroyCurrentStream() {\n        if (hls) {\n            hls.destroy();\n            hls = null;\n        }\n\n        video.pause();\n        video.removeAttribute(\"src\");\n        video.load();\n    }\n\n    function tryPlay() {\n        const playPromise = video.play();\n\n        if (playPromise && typeof playPromise.catch === \"function\") {\n            playPromise.catch(function () {\n                \/*\n                 * El navegador puede bloquear el autoplay.\n                 * El usuario podr\u00e1 iniciar la reproducci\u00f3n con los controles.\n                 *\/\n                setStatus(\"Pulsa reproducir para comenzar\", false);\n                technicalStatus.textContent =\n                    \"La se\u00f1al est\u00e1 lista \u00b7 Autoplay bloqueado\";\n            });\n        }\n    }\n\n    function loadNativeHls() {\n        technicalStatus.textContent = \"HLS nativo \u00b7 Calidad autom\u00e1tica\";\n        video.src = STREAM_URL;\n\n        video.addEventListener(\n            \"loadedmetadata\",\n            function () {\n                setLoading(false);\n                setStatus(\"Se\u00f1al conectada\", true);\n                hideOverlay();\n                tryPlay();\n            },\n            { once: true }\n        );\n\n        video.addEventListener(\n            \"error\",\n            function () {\n                setLoading(false);\n                showOverlay({\n                    title: \"Error de reproducci\u00f3n\",\n                    message:\n                        \"El navegador no pudo abrir la se\u00f1al HLS nativa.\",\n                    button: \"Volver a intentar\"\n                });\n                setStatus(\"Se\u00f1al no disponible\", false);\n            },\n            { once: true }\n        );\n    }\n\n    function loadWithHlsJs() {\n        hls = new Hls({\n            enableWorker: true,\n            lowLatencyMode: true,\n            backBufferLength: 60,\n            maxBufferLength: 30,\n            maxMaxBufferLength: 60\n        });\n\n        technicalStatus.textContent =\n            \"hls.js \u00b7 Detectando calidad autom\u00e1ticamente\";\n\n        hls.loadSource(STREAM_URL);\n        hls.attachMedia(video);\n\n        hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) {\n            recoveryAttempts = 0;\n            setLoading(false);\n            setStatus(\"Se\u00f1al conectada\", true);\n            hideOverlay();\n\n            const levels = data && data.levels ? data.levels.length : 0;\n\n            technicalStatus.textContent = levels > 1\n                ? \"HLS \u00b7 \" + levels + \" calidades disponibles\"\n                : \"HLS \u00b7 Calidad autom\u00e1tica\";\n\n            tryPlay();\n        });\n\n        hls.on(Hls.Events.LEVEL_SWITCHED, function (event, data) {\n            const level = hls.levels[data.level];\n\n            if (level && level.height) {\n                technicalStatus.textContent =\n                    \"HLS \u00b7 \" + level.height + \"p \u00b7 En vivo\";\n            }\n        });\n\n        hls.on(Hls.Events.ERROR, function (event, data) {\n            if (!data.fatal) {\n                return;\n            }\n\n            recoveryAttempts += 1;\n\n            if (recoveryAttempts > MAX_RECOVERY_ATTEMPTS) {\n                setLoading(false);\n                setStatus(\"Se\u00f1al interrumpida\", false);\n\n                showOverlay({\n                    title: \"Transmisi\u00f3n no disponible\",\n                    message:\n                        \"La se\u00f1al no respondi\u00f3 despu\u00e9s de varios intentos. Puede estar fuera de l\u00ednea o bloqueando la reproducci\u00f3n externa.\",\n                    button: \"Reintentar se\u00f1al\"\n                });\n\n                destroyCurrentStream();\n                return;\n            }\n\n            switch (data.type) {\n                case Hls.ErrorTypes.NETWORK_ERROR:\n                    setStatus(\"Reconectando se\u00f1al\u2026\", false);\n                    technicalStatus.textContent =\n                        \"Error de red \u00b7 Intentando reconectar\";\n                    hls.startLoad();\n                    break;\n\n                case Hls.ErrorTypes.MEDIA_ERROR:\n                    setStatus(\"Recuperando video\u2026\", false);\n                    technicalStatus.textContent =\n                        \"Error multimedia \u00b7 Recuperando\";\n                    hls.recoverMediaError();\n                    break;\n\n                default:\n                    destroyCurrentStream();\n                    startStream();\n                    break;\n            }\n        });\n    }\n\n    function startStream() {\n        destroyCurrentStream();\n\n        started = true;\n        recoveryAttempts = 0;\n\n        setLoading(true);\n        setStatus(\"Conectando con la se\u00f1al\u2026\", false);\n        technicalStatus.textContent = \"Cargando transmisi\u00f3n HLS\u2026\";\n\n        \/*\n         * Safari y algunos dispositivos Apple reproducen HLS\n         * directamente mediante la etiqueta video.\n         *\/\n        if (video.canPlayType(\"application\/vnd.apple.mpegurl\")) {\n            loadNativeHls();\n            return;\n        }\n\n        \/*\n         * Chrome, Edge, Firefox y muchos dispositivos Android\n         * utilizan hls.js mediante Media Source Extensions.\n         *\/\n        if (window.Hls && Hls.isSupported()) {\n            loadWithHlsJs();\n            return;\n        }\n\n        setLoading(false);\n        setStatus(\"Navegador incompatible\", false);\n\n        showOverlay({\n            icon: \"!\",\n            title: \"Navegador no compatible\",\n            message:\n                \"Este navegador no permite reproducir transmisiones HLS.\",\n            button: \"Intentar nuevamente\"\n        });\n    }\n\n    startButton.addEventListener(\"click\", function () {\n        startStream();\n    });\n\n    reloadButton.addEventListener(\"click\", function () {\n        startStream();\n    });\n\n    fullscreenButton.addEventListener(\"click\", function () {\n        if (document.fullscreenElement) {\n            document.exitFullscreen();\n            return;\n        }\n\n        if (screen.requestFullscreen) {\n            screen.requestFullscreen();\n        } else if (video.webkitEnterFullscreen) {\n            video.webkitEnterFullscreen();\n        }\n    });\n\n    video.addEventListener(\"waiting\", function () {\n        if (started) {\n            setLoading(true);\n            setStatus(\"Almacenando se\u00f1al\u2026\", false);\n        }\n    });\n\n    video.addEventListener(\"playing\", function () {\n        setLoading(false);\n        setStatus(\"Transmitiendo en vivo\", true);\n        hideOverlay();\n    });\n\n    video.addEventListener(\"pause\", function () {\n        if (!video.ended && video.currentTime > 0) {\n            setStatus(\"Transmisi\u00f3n pausada\", false);\n        }\n    });\n\n    video.addEventListener(\"ended\", function () {\n        setStatus(\"La transmisi\u00f3n termin\u00f3\", false);\n    });\n\n    window.addEventListener(\"beforeunload\", function () {\n        destroyCurrentStream();\n    });\n})();\n<\/script>\n\n\n\n<div id=\"bfm-player-wrap\" style=\"max-width:560px;width:100%;margin:0 auto;background:#0f1216;border-radius:16px;overflow:hidden;font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;box-shadow:0 10px 30px rgba(0,0,0,0.55);position:relative;\">\n  <div style=\"background:linear-gradient(90deg,#001a2c,#003355);padding:10px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #00c6ff;\">\n    <span style=\"color:#fff;font-weight:800;font-size:0.95rem;text-transform:uppercase;letter-spacing:1px;\">pri TV CREA MASTER<\/span>\n    <span style=\"display:flex;align-items:center;gap:6px;color:#ff3355;font-size:0.7rem;font-weight:700;\"><span style=\"width:8px;height:8px;border-radius:50%;background:#ff0055;box-shadow:0 0 8px rgba(255,0,85,0.9);animation:bfmPulse 1.6s infinite;\"><\/span>EN VIVO<\/span>\n  <\/div>\n  <div style=\"position:relative;aspect-ratio:16\/9;background:#000;\">\n    <video id=\"bfm-video\" style=\"width:100%;height:100%;object-fit:contain;background:#000;display:block;\" muted playsinline autoplay><\/video>\n    <div id=\"bfm-overlay\" style=\"position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(10,13,17,0.55);cursor:pointer;text-align:center;padding:16px;z-index:10;\">\n      <div style=\"width:62px;height:62px;border-radius:50%;background:linear-gradient(135deg,#00c6ff,#0072ff);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,114,255,0.5);\">\n        <svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"#fff\"><path d=\"M8 5v14l11-7z\"><\/path><\/svg>\n      <\/div>\n      <div id=\"bfm-status\" style=\"margin-top:12px;color:#fff;font-size:0.85rem;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,0.8);\">Toca para reproducir<\/div>\n      <div style=\"margin-top:4px;color:#9fb3c8;font-size:0.72rem;\">Transmisi\u00f3n en vivo<\/div>\n    <\/div>\n  <\/div>\n  <div style=\"display:flex;align-items:center;gap:10px;padding:10px 14px;background:#151a22;\">\n    <!-- BOT\u00d3N PLAY \/ PAUSA -->\n    <button id=\"bfm-toggle-play\" type=\"button\" title=\"Reproducir \/ Pausar\" style=\"background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;\">\n      <svg id=\"bfm-icon-play\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#c8d6e5\" style=\"display:none;\"><path d=\"M8 5v14l11-7z\"><\/path><\/svg>\n      <svg id=\"bfm-icon-pause\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#c8d6e5\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"><\/path><\/svg>\n    <\/button>\n\n    <!-- BOT\u00d3N SILENCIAR \/ AUDIO -->\n    <button id=\"bfm-mute\" type=\"button\" title=\"Silenciar\/Activar sonido\" style=\"background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;\">\n      <svg id=\"bfm-sound\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#c8d6e5\" style=\"display:none;\"><path d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"><\/path><\/svg>\n      <svg id=\"bfm-mute-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#c8d6e5\"><path d=\"M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.9 8.9 0 0 0 21 12a9 9 0 0 0-6.03-8.49v2.09A7 7 0 0 1 19 12zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06a8.99 8.99 0 0 0 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"><\/path><\/svg>\n    <\/button>\n\n    <div style=\"flex:1;display:flex;align-items:center;gap:8px;\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#00c6ff\"><path d=\"M8 5v14l11-7z\"><\/path><\/svg>\n      <span style=\"color:#e8eef5;font-size:0.82rem;font-weight:700;white-space:nowrap;\">SE\u00d1AL EN VIVO<\/span>\n    <\/div>\n\n    <div style=\"width:8px;height:8px;border-radius:50%;background:#ff0055;box-shadow:0 0 8px rgba(255,0,85,0.9);animation:bfmPulse 2s infinite;\"><\/div>\n\n    <!-- BOT\u00d3N PANTALLA COMPLETA -->\n    <button id=\"bfm-fullscreen\" type=\"button\" title=\"Pantalla completa\" style=\"background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;\">\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#c8d6e5\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"><\/path><\/svg>\n    <\/button>\n  <\/div>\n<\/div>\n\n<style>\n  @keyframes bfmPulse { 0% { opacity: 1; } 50% { opacity: 0.35; } 100% { opacity: 1; } }\n  #bfm-player-wrap:-webkit-full-screen { width: 100% !important; height: 100% !important; max-width: none !important; }\n  #bfm-player-wrap:-moz-full-screen { width: 100% !important; height: 100% !important; max-width: none !important; }\n  #bfm-player-wrap:fullscreen { width: 100% !important; height: 100% !important; max-width: none !important; }\n<\/style>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/hls.js@latest\"><\/script>\n<script>\n  document.addEventListener('DOMContentLoaded', function () {\n    var URL_STREAM = 'https:\/\/live20.bozztv.com\/akamaissh101\/ssh101\/tv1251master\/chunks.m3u8';\n    var video = document.getElementById('bfm-video');\n    if (!video) return;\n\n    var container = document.getElementById('bfm-player-wrap');\n    var overlay = document.getElementById('bfm-overlay');\n    var statusEl = document.getElementById('bfm-status');\n    var soundIcon = document.getElementById('bfm-sound');\n    var muteIcon = document.getElementById('bfm-mute-icon');\n    var muteBtn = document.getElementById('bfm-mute');\n    var togglePlayBtn = document.getElementById('bfm-toggle-play');\n    var iconPlay = document.getElementById('bfm-icon-play');\n    var iconPause = document.getElementById('bfm-icon-pause');\n    var fullscreenBtn = document.getElementById('bfm-fullscreen');\n\n    var hls = null;\n\n    function setStatus(t) { if (statusEl) statusEl.innerText = t; }\n    function ocultarOverlay() { overlay.style.display = 'none'; }\n    function mostrarOverlay() { overlay.style.display = 'flex'; }\n\n    function cargarHls() {\n      if (window.Hls && Hls.isSupported()) {\n        hls = new Hls({ lowLatencyMode: true });\n        hls.loadSource(URL_STREAM);\n        hls.attachMedia(video);\n        hls.on(Hls.Events.MANIFEST_PARSED, function () {\n          video.play().catch(function () {\n            setStatus('Toca para reproducir');\n            mostrarOverlay();\n          });\n        });\n      } else if (video.canPlayType('application\/vnd.apple.mpegurl')) {\n        video.src = URL_STREAM;\n        video.addEventListener('loadedmetadata', function () {\n          video.play().catch(function () {});\n        });\n      } else {\n        setStatus('Navegador no compatible');\n      }\n    }\n\n    function reproducir() {\n      ocultarOverlay();\n      video.muted = false; \/\/ Intentar desmutear al interactuar\n      if (soundIcon) soundIcon.style.display = 'block';\n      if (muteIcon) muteIcon.style.display = 'none';\n      \n      var p = video.play();\n      if (p && typeof p.catch === 'function') {\n        p.catch(function () {\n          setStatus('Toca para reproducir');\n          mostrarOverlay();\n        });\n      }\n    }\n\n    function alternarPlayPausa() {\n      if (video.paused) {\n        reproducir();\n      } else {\n        video.pause();\n        setStatus('Pausado');\n        mostrarOverlay();\n      }\n    }\n\n    function alternarPantallaCompleta() {\n      if (!document.fullscreenElement && !document.webkitFullscreenElement) {\n        if (container.requestFullscreen) {\n          container.requestFullscreen();\n        } else if (container.webkitRequestFullscreen) {\n          container.webkitRequestFullscreen();\n        } else if (video.webkitEnterFullscreen) {\n          video.webkitEnterFullscreen();\n        }\n      } else {\n        if (document.exitFullscreen) {\n          document.exitFullscreen();\n        } else if (document.webkitExitFullscreen) {\n          document.webkitExitFullscreen();\n        }\n      }\n    }\n\n    if (overlay) overlay.addEventListener('click', reproducir);\n    if (togglePlayBtn) togglePlayBtn.addEventListener('click', alternarPlayPausa);\n    if (fullscreenBtn) fullscreenBtn.addEventListener('click', alternarPantallaCompleta);\n\n    if (muteBtn) muteBtn.addEventListener('click', function () {\n      video.muted = !video.muted;\n      if (soundIcon) soundIcon.style.display = video.muted ? 'none' : 'block';\n      if (muteIcon) muteIcon.style.display = video.muted ? 'block' : 'none';\n    });\n\n    video.addEventListener('play', function () {\n      if (iconPlay) iconPlay.style.display = 'none';\n      if (iconPause) iconPause.style.display = 'block';\n    });\n\n    video.addEventListener('pause', function () {\n      if (iconPlay) iconPlay.style.display = 'block';\n      if (iconPause) iconPause.style.display = 'none';\n    });\n\n    video.addEventListener('playing', function () {\n      ocultarOverlay();\n      setStatus('En vivo');\n    });\n\n    video.addEventListener('waiting', function () { setStatus('Cargando...'); });\n\n    cargarHls();\n  });\n<\/script>\n\n\n\n<iframe loading=\"lazy\" src=\"https:\/\/lbgo.bozztv.com\/ssh101\/ssh101\/1234giannalu\/chunks.m3u8?lb_backend_hint=6\" frameborder=\"0\" scrolling=\"no\" align=\"middle\" width=\"852\" height=\"480\" webkitallowfullscreen=\"\" mozallowfullscreen=\"\" allowfullscreen=\"\"><\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\">cosmos tv cine<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Televisi\u00f3n en vivo Preparando se\u00f1al\u2026 En vivo \u25b6 Se\u00f1al de televisi\u00f3n Pulsa el bot\u00f3n para iniciar la transmisi\u00f3n en vivo. \u25b6 Ver transmisi\u00f3n Canal en vivo HLS \u00b7 Calidad autom\u00e1tica&#8230; dale Clik<\/p>\n","protected":false},"author":1,"featured_media":29,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1027","page","type-page","status-publish","has-post-thumbnail","hentry"],"magazineBlocksPostFeaturedMedia":{"thumbnail":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/la-voz-peru-logo-oficial-150x150.png","medium":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/la-voz-peru-logo-oficial-300x300.png","medium_large":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/la-voz-peru-logo-oficial.png","large":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/la-voz-peru-logo-oficial.png","1536x1536":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/la-voz-peru-logo-oficial.png","2048x2048":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/la-voz-peru-logo-oficial.png"},"magazineBlocksPostAuthor":{"name":"Rabi","avatar":"https:\/\/secure.gravatar.com\/avatar\/f801d06501b4b5f3b6f1dd296f2be2e92a3c3f2195efe2eba5a72ee5bdd2e8be?s=96&d=mm&r=g"},"magazineBlocksPostCommentsNumber":"0","magazineBlocksPostExcerpt":"Televisi\u00f3n en vivo Preparando se\u00f1al\u2026 En vivo \u25b6 Se\u00f1al de televisi\u00f3n Pulsa el bot\u00f3n para iniciar la transmisi\u00f3n en vivo. \u25b6 Ver transmisi\u00f3n Canal en vivo HLS \u00b7 Calidad autom\u00e1tica... dale Clik","magazineBlocksPostCategories":[],"magazineBlocksPostViewCount":0,"magazineBlocksPostReadTime":1,"_links":{"self":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages\/1027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1027"}],"version-history":[{"count":5,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages\/1027\/revisions"}],"predecessor-version":[{"id":36520,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages\/1027\/revisions\/36520"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/media\/29"}],"wp:attachment":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}