[{"data":1,"prerenderedAt":1904},["ShallowReactive",2],{"navigation_docs_es":3,"-es-how-tos-publish-to-object-storage":427,"-es-how-tos-publish-to-object-storage-surround":1899},[4,25,83,133,247,262,332,361,407],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Getting Started","\u002Fes\u002Fgetting-started","es\u002F1.getting-started",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introducción","\u002Fes\u002Fgetting-started\u002Fintroduction","es\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Quickstart","\u002Fes\u002Fgetting-started\u002Fquickstart","es\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Conceptos","\u002Fes\u002Fgetting-started\u002Fconcepts","es\u002F1.getting-started\u002F3.concepts","i-lucide-book-open",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Live Production","\u002Fes\u002Flive-production","es\u002F2.live-production",[30,35,55,69],{"title":31,"path":32,"stem":33,"icon":34},"On air","\u002Fes\u002Flive-production\u002Fon-air","es\u002F2.live-production\u002F1.on-air","i-lucide-radio",{"title":36,"path":37,"stem":38,"children":39,"page":24},"Live Streams","\u002Fes\u002Flive-production\u002Flive-streams","es\u002F2.live-production\u002F2.live-streams",[40,45,50],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Fes\u002Flive-production\u002Flive-streams\u002Foverview","es\u002F2.live-production\u002F2.live-streams\u002F1.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Options","\u002Fes\u002Flive-production\u002Flive-streams\u002Flive-stream-options","es\u002F2.live-production\u002F2.live-streams\u002F2.live-stream-options","i-lucide-file-text",{"title":51,"path":52,"stem":53,"icon":54},"Inicio y parada","\u002Fes\u002Flive-production\u002Flive-streams\u002Fstart-stop","es\u002F2.live-production\u002F2.live-streams\u002F3.start-stop","i-lucide-play-circle",{"title":56,"path":57,"stem":58,"children":59,"page":24},"Scheduler","\u002Fes\u002Flive-production\u002Fscheduler","es\u002F2.live-production\u002F3.scheduler",[60,64],{"title":41,"path":61,"stem":62,"icon":63},"\u002Fes\u002Flive-production\u002Fscheduler\u002Foverview","es\u002F2.live-production\u002F3.scheduler\u002F1.overview","i-lucide-calendar-clock",{"title":65,"path":66,"stem":67,"icon":68},"Planned actions","\u002Fes\u002Flive-production\u002Fscheduler\u002Fplanned-actions","es\u002F2.live-production\u002F3.scheduler\u002F2.planned-actions","i-lucide-alarm-clock",{"title":70,"path":71,"stem":72,"children":73,"page":24},"Recordings","\u002Fes\u002Flive-production\u002Frecordings","es\u002F2.live-production\u002F4.recordings",[74,78],{"title":41,"path":75,"stem":76,"icon":77},"\u002Fes\u002Flive-production\u002Frecordings\u002Foverview","es\u002F2.live-production\u002F4.recordings\u002F1.overview","i-lucide-circle-dot",{"title":79,"path":80,"stem":81,"icon":82},"Editor","\u002Fes\u002Flive-production\u002Frecordings\u002Feditor","es\u002F2.live-production\u002F4.recordings\u002F2.editor","i-lucide-scissors",{"title":84,"path":85,"stem":86,"children":87,"page":24},"Configuration","\u002Fes\u002Fconfiguration","es\u002F3.configuration",[88,102,107,120],{"title":89,"path":90,"stem":91,"children":92,"page":24},"Devices","\u002Fes\u002Fconfiguration\u002Fdevices","es\u002F3.configuration\u002F1.devices",[93,97],{"title":89,"path":94,"stem":95,"icon":96},"\u002Fes\u002Fconfiguration\u002Fdevices\u002Fdevices","es\u002F3.configuration\u002F1.devices\u002F1.devices","i-lucide-server",{"title":98,"path":99,"stem":100,"icon":101},"Groups","\u002Fes\u002Fconfiguration\u002Fdevices\u002Fgroups","es\u002F3.configuration\u002F1.devices\u002F2.groups","i-lucide-network",{"title":103,"path":104,"stem":105,"icon":106},"Sources","\u002Fes\u002Fconfiguration\u002Fsources","es\u002F3.configuration\u002F2.sources","i-lucide-cable",{"title":108,"path":109,"stem":110,"children":111,"page":24},"Encodings","\u002Fes\u002Fconfiguration\u002Fencodings","es\u002F3.configuration\u002F3.encodings",[112,116],{"title":108,"path":113,"stem":114,"icon":115},"\u002Fes\u002Fconfiguration\u002Fencodings\u002Fprofiles","es\u002F3.configuration\u002F3.encodings\u002F1.profiles","i-lucide-sliders-horizontal",{"title":98,"path":117,"stem":118,"icon":119},"\u002Fes\u002Fconfiguration\u002Fencodings\u002Fgroups","es\u002F3.configuration\u002F3.encodings\u002F2.groups","i-lucide-layers",{"title":121,"path":122,"stem":123,"children":124,"page":24},"Destinations","\u002Fes\u002Fconfiguration\u002Fdestinations","es\u002F3.configuration\u002F4.destinations",[125,129],{"title":121,"path":126,"stem":127,"icon":128},"\u002Fes\u002Fconfiguration\u002Fdestinations\u002Fdestinations","es\u002F3.configuration\u002F4.destinations\u002F1.destinations","i-lucide-send",{"title":98,"path":130,"stem":131,"icon":132},"\u002Fes\u002Fconfiguration\u002Fdestinations\u002Fpublishing-groups","es\u002F3.configuration\u002F4.destinations\u002F2.publishing-groups","i-lucide-share-2",{"title":134,"path":135,"stem":136,"children":137,"page":24},"Settings","\u002Fes\u002Fsettings","es\u002F4.settings",[138,151,156,172,188],{"title":139,"path":140,"stem":141,"children":142,"page":24},"Users","\u002Fes\u002Fsettings\u002Fusers","es\u002F4.settings\u002F1.users",[143,147],{"title":139,"path":144,"stem":145,"icon":146},"\u002Fes\u002Fsettings\u002Fusers\u002Fusers","es\u002F4.settings\u002F1.users\u002F1.users","i-lucide-user",{"title":98,"path":148,"stem":149,"icon":150},"\u002Fes\u002Fsettings\u002Fusers\u002Fuser-groups","es\u002F4.settings\u002F1.users\u002F2.user-groups","i-lucide-users",{"title":152,"path":153,"stem":154,"icon":155},"Security","\u002Fes\u002Fsettings\u002Fsecurity","es\u002F4.settings\u002F2.security","i-lucide-shield",{"title":157,"icon":158,"path":159,"stem":160,"children":161,"page":24},"Assets","i-lucide-image","\u002Fes\u002Fsettings\u002Fassets","es\u002F4.settings\u002F3.assets",[162,167],{"title":163,"path":164,"stem":165,"icon":166},"Logos","\u002Fes\u002Fsettings\u002Fassets\u002Flogos","es\u002F4.settings\u002F3.assets\u002F1.logos","i-lucide-images",{"title":168,"path":169,"stem":170,"icon":171},"Files","\u002Fes\u002Fsettings\u002Fassets\u002Ffiles","es\u002F4.settings\u002F3.assets\u002F2.files","i-lucide-clapperboard",{"title":173,"icon":174,"path":175,"stem":176,"children":177,"page":24},"External Storage","i-lucide-folder-cog","\u002Fes\u002Fsettings\u002Fexternal-storage","es\u002F4.settings\u002F4.external-storage",[178,183],{"title":179,"path":180,"stem":181,"icon":182},"Remote Folders","\u002Fes\u002Fsettings\u002Fexternal-storage\u002Fremote-folders","es\u002F4.settings\u002F4.external-storage\u002F1.remote-folders","i-lucide-folder-archive",{"title":184,"path":185,"stem":186,"icon":187},"Target Folders","\u002Fes\u002Fsettings\u002Fexternal-storage\u002Ftarget-folders","es\u002F4.settings\u002F4.external-storage\u002F2.target-folders","i-lucide-folder-up",{"title":189,"path":190,"stem":191,"children":192,"page":24},"Integrations","\u002Fes\u002Fsettings\u002Fintegrations","es\u002F4.settings\u002F5.integrations",[193,197,202,216],{"title":41,"path":194,"stem":195,"icon":196},"\u002Fes\u002Fsettings\u002Fintegrations\u002Foverview","es\u002F4.settings\u002F5.integrations\u002F1.overview","i-lucide-plug",{"title":198,"path":199,"stem":200,"icon":201},"MediaCopilot","\u002Fes\u002Fsettings\u002Fintegrations\u002Fmediacopilot","es\u002F4.settings\u002F5.integrations\u002F2.mediacopilot","i-lucide-sparkles",{"title":203,"icon":204,"path":205,"stem":206,"children":207,"page":24},"C21 Live Cloud","i-lucide-cloud","\u002Fes\u002Fsettings\u002Fintegrations\u002Fc21livecloud","es\u002F4.settings\u002F5.integrations\u002F3.c21livecloud",[208,211],{"title":41,"path":209,"stem":210,"icon":204},"\u002Fes\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Foverview","es\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F1.overview",{"title":212,"path":213,"stem":214,"icon":215},"Accounts","\u002Fes\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Faccounts","es\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F2.accounts","i-lucide-key-round",{"title":217,"icon":155,"path":218,"stem":219,"children":220,"page":24},"DRM Providers","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm","es\u002F4.settings\u002F5.integrations\u002F4.drm",[221,225,229,233,237,242],{"title":41,"path":222,"stem":223,"icon":224},"\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Foverview","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F1.overview","i-lucide-shield-check",{"title":226,"path":227,"stem":228,"icon":155},"Widevine","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fwidevine","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F2.widevine",{"title":230,"path":231,"stem":232,"icon":155},"PlayReady","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fplayready","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F3.playready",{"title":234,"path":235,"stem":236,"icon":155},"FairPlay","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Ffairplay","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F4.fairplay",{"title":238,"path":239,"stem":240,"icon":241},"Providers","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fproviders","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F5.providers","i-lucide-shield-half",{"title":243,"path":244,"stem":245,"icon":246},"Workflow","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fworkflow","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F6.workflow","i-lucide-workflow",{"title":248,"path":249,"stem":250,"children":251,"page":24},"System Status","\u002Fes\u002Fsystem-status","es\u002F5.system-status",[252,257],{"title":253,"path":254,"stem":255,"icon":256},"Commands","\u002Fes\u002Fsystem-status\u002Fcommands","es\u002F5.system-status\u002F1.commands","i-lucide-square-terminal",{"title":258,"path":259,"stem":260,"icon":261},"Logs","\u002Fes\u002Fsystem-status\u002Flogs","es\u002F5.system-status\u002F2.logs","i-lucide-scroll-text",{"title":263,"path":264,"stem":265,"children":266,"page":24},"How Tos","\u002Fes\u002Fhow-tos","es\u002F6.how-tos",[267,272,277,282,286,291,296,300,304,309,313,318,323,328],{"title":268,"path":269,"stem":270,"icon":271},"Arrancar y detener un Live stream","\u002Fes\u002Fhow-tos\u002Fstart-stream-via-api","es\u002F6.how-tos\u002F1.start-stream-via-api","i-lucide-terminal",{"title":273,"path":274,"stem":275,"icon":276},"Ingestar una emisión de YouTube Live","\u002Fes\u002Fhow-tos\u002Fingest-youtube-live","es\u002F6.how-tos\u002F10.ingest-youtube-live","i-lucide-youtube",{"title":278,"path":279,"stem":280,"icon":281},"Source Synchronized Encoding (SSE) — redundancia bit-idéntica","\u002Fes\u002Fhow-tos\u002Fsource-synchronized-encoding","es\u002F6.how-tos\u002F11.source-synchronized-encoding","i-lucide-copy-check",{"title":283,"path":284,"stem":285,"icon":34},"Emitir radio como vídeo","\u002Fes\u002Fhow-tos\u002Fbroadcast-radio-as-video","es\u002F6.how-tos\u002F12.broadcast-radio-as-video",{"title":287,"path":288,"stem":289,"icon":290},"Real Time streaming hacia Dolby Millicast","\u002Fes\u002Fhow-tos\u002Freal-time-streaming","es\u002F6.how-tos\u002F13.real-time-streaming","i-lucide-zap",{"title":292,"path":293,"stem":294,"icon":295},"Publicar en almacenamiento de objetos (S3, Azure Blob)","\u002Fes\u002Fhow-tos\u002Fpublish-to-object-storage","es\u002F6.how-tos\u002F14.publish-to-object-storage","i-lucide-database",{"title":297,"path":298,"stem":299,"icon":224},"Proteger un Live stream con multi-DRM","\u002Fes\u002Fhow-tos\u002Fmulti-drm-destination","es\u002F6.how-tos\u002F2.multi-drm-destination",{"title":301,"path":302,"stem":303,"icon":63},"Programar una emisión semanal recurrente","\u002Fes\u002Fhow-tos\u002Fweekly-recurring-broadcast","es\u002F6.how-tos\u002F3.weekly-recurring-broadcast",{"title":305,"path":306,"stem":307,"icon":308},"Cortar un clip en el Editor y enviarlo a MediaCopilot","\u002Fes\u002Fhow-tos\u002Fexport-recording-to-mediacopilot","es\u002F6.how-tos\u002F4.export-recording-to-mediacopilot","i-lucide-upload-cloud",{"title":310,"path":311,"stem":312,"icon":158},"Aplicar un logo a un Live stream en emisión","\u002Fes\u002Fhow-tos\u002Fapply-logo-overlay","es\u002F6.how-tos\u002F5.apply-logo-overlay",{"title":314,"path":315,"stem":316,"icon":317},"Hacer blackout o sustituir el programa de un Live stream","\u002Fes\u002Fhow-tos\u002Fbroadcast-blackout","es\u002F6.how-tos\u002F6.broadcast-blackout","i-lucide-square",{"title":319,"path":320,"stem":321,"icon":322},"Cambiar la fuente de un Live stream en emisión","\u002Fes\u002Fhow-tos\u002Fruntime-source-switch","es\u002F6.how-tos\u002F7.runtime-source-switch","i-lucide-repeat-2",{"title":324,"path":325,"stem":326,"icon":327},"Activar \u002F desactivar un Publishing en mitad de la emisión","\u002Fes\u002Fhow-tos\u002Ftoggle-publishing-mid-broadcast","es\u002F6.how-tos\u002F8.toggle-publishing-mid-broadcast","i-lucide-toggle-right",{"title":329,"path":330,"stem":331,"icon":34},"Contribuir una señal en directo a MediaCopilot Live","\u002Fes\u002Fhow-tos\u002Fcontribute-to-mediacopilot-live","es\u002F6.how-tos\u002F9.contribute-to-mediacopilot-live",{"title":333,"path":334,"stem":335,"children":336,"page":24},"Installation","\u002Fes\u002Finstallation","es\u002F7.installation",[337,342,347,352,357],{"title":338,"path":339,"stem":340,"icon":341},"Preparar el host","\u002Fes\u002Finstallation\u002Fprepare-host","es\u002F7.installation\u002F1.prepare-host","i-lucide-server-cog",{"title":343,"path":344,"stem":345,"icon":346},"Instalar C21 Live Control","\u002Fes\u002Finstallation\u002Fcontrol","es\u002F7.installation\u002F2.control","i-lucide-cloud-download",{"title":348,"path":349,"stem":350,"icon":351},"Instalar C21 Live Encoder","\u002Fes\u002Finstallation\u002Fencoder","es\u002F7.installation\u002F3.encoder","i-lucide-cpu",{"title":353,"path":354,"stem":355,"icon":356},"Actualizaciones","\u002Fes\u002Finstallation\u002Fupdates","es\u002F7.installation\u002F4.updates","i-lucide-refresh-cw",{"title":358,"path":359,"stem":360,"icon":215},"Licencias","\u002Fes\u002Finstallation\u002Flicenses","es\u002F7.installation\u002F5.licenses",{"title":362,"path":363,"stem":364,"children":365,"page":24},"Developers","\u002Fes\u002Fdevelopers","es\u002F8.developers",[366,370,388],{"title":41,"path":367,"stem":368,"icon":369},"\u002Fes\u002Fdevelopers\u002Foverview","es\u002F8.developers\u002F1.overview","i-lucide-code",{"title":371,"icon":369,"path":372,"stem":373,"children":374,"page":24},"API","\u002Fes\u002Fdevelopers\u002Fapi","es\u002F8.developers\u002F2.api",[375,378,383],{"title":41,"path":376,"stem":377,"icon":369},"\u002Fes\u002Fdevelopers\u002Fapi\u002Foverview","es\u002F8.developers\u002F2.api\u002F1.overview",{"title":379,"path":380,"stem":381,"icon":382},"Autenticación","\u002Fes\u002Fdevelopers\u002Fapi\u002Fauthentication","es\u002F8.developers\u002F2.api\u002F2.authentication","i-lucide-key",{"title":384,"path":385,"stem":386,"icon":387},"Paginación y errores","\u002Fes\u002Fdevelopers\u002Fapi\u002Fpagination-errors","es\u002F8.developers\u002F2.api\u002F3.pagination-errors","i-lucide-list-ordered",{"title":389,"icon":390,"path":391,"stem":392,"children":393,"page":24},"MCP Server","i-lucide-bot","\u002Fes\u002Fdevelopers\u002Fmcp-server","es\u002F8.developers\u002F3.mcp-server",[394,397,402],{"title":41,"path":395,"stem":396,"icon":390},"\u002Fes\u002Fdevelopers\u002Fmcp-server\u002Foverview","es\u002F8.developers\u002F3.mcp-server\u002F1.overview",{"title":398,"path":399,"stem":400,"icon":401},"Tools","\u002Fes\u002Fdevelopers\u002Fmcp-server\u002Ftools","es\u002F8.developers\u002F3.mcp-server\u002F2.tools","i-lucide-wrench",{"title":403,"path":404,"stem":405,"icon":406},"Examples","\u002Fes\u002Fdevelopers\u002Fmcp-server\u002Fexamples","es\u002F8.developers\u002F3.mcp-server\u002F3.examples","i-lucide-play",{"title":408,"path":409,"stem":410,"children":411,"page":24},"Resources","\u002Fes\u002Fresources","es\u002F9.resources",[412,417,422],{"title":413,"path":414,"stem":415,"icon":416},"Enlaces","\u002Fes\u002Fresources\u002Flinks","es\u002F9.resources\u002F1.links","i-lucide-link",{"title":418,"path":419,"stem":420,"icon":421},"Release Notes","\u002Fes\u002Fresources\u002Frelease-notes","es\u002F9.resources\u002F2.release-notes","i-lucide-clipboard-list",{"title":423,"path":424,"stem":425,"icon":426},"Glosario","\u002Fes\u002Fresources\u002Fglossary","es\u002F9.resources\u002F3.glossary","i-lucide-book-a",{"id":428,"title":292,"body":429,"description":1892,"extension":1893,"links":1894,"meta":1895,"navigation":1896,"path":293,"seo":1897,"stem":294,"__hash__":1898},"docs_es\u002Fes\u002F6.how-tos\u002F14.publish-to-object-storage.md",{"type":430,"value":431,"toc":1868},"minimark",[432,440,455,460,463,469,481,485,535,539,599,603,897,901,907,969,1127,1145,1156,1166,1169,1172,1218,1221,1225,1229,1232,1475,1481,1485,1488,1503,1510,1514,1524,1528,1535,1545,1549,1552,1672,1675,1679,1686,1690,1714,1718,1721,1818,1824,1828,1864],[433,434,435,439],"p",{},[436,437,438],"strong",{},"Available in:"," UI · API",[433,441,442,443,446,447,450,451,454],{},"Usa esta how-to para enviar la salida segmentada de un Live stream a almacenamiento de objetos en lugar de a un ingest de CDN. Lo cubren dos providers: ",[436,444,445],{},"S3"," para cualquier bucket compatible S3 y ",[436,448,449],{},"Azure Blob Storage"," para un container de Azure. Ambos son ",[452,453,121],"a",{"href":126}," normales — no hay formulario aparte ni entidad extra que crear.",[456,457,459],"h2",{"id":458},"cuándo-usar-esto","Cuándo usar esto",[433,461,462],{},"Cuando quieres ser dueño del origen. El bucket guarda los manifests y segmentos que produce el Encoder, un CDN por delante sirve a la audiencia, y la factura de almacenamiento sustituye al contrato de ingest del CDN. Es también el camino más corto hacia un archivo que un reproductor puede leer directamente, y hacia un origen self-hosted en las instalaciones del cliente.",[433,464,465,468],{},[436,466,467],{},"S3 no es específico de AWS."," La misma superficie de subida firmada funciona contra AWS S3, MinIO, Ceph RGW, Wasabi, Backblaze B2, DigitalOcean Spaces y Cloudflare R2, incluidos endpoints en un puerto no estándar.",[470,471,472,475,476,480],"callout",{"icon":295},[436,473,474],{},"Un bucket no es un CDN."," El almacenamiento de objetos es un origen: no tiene caché ni distribución geográfica, y factura cada petición. Servir la reproducción directamente desde el bucket funciona, pero pon un CDN por delante y entrega a los reproductores la URL del CDN a través del campo ",[477,478,479],"em",{},"Playback URL"," del Destination.",[456,482,484],{"id":483},"prerrequisitos","Prerrequisitos",[486,487,488,499,514,523,529],"ul",{},[489,490,491,494,495,498],"li",{},[436,492,493],{},"Un bucket o container ya creado."," ",[436,496,497],{},"C21 Live Control"," no lo crea. Para S3, anota el endpoint regional, el nombre del bucket y el prefijo de clave bajo el que quieres que viva la salida; para Azure, el endpoint de la cuenta y el container.",[489,500,501,504,505,508,509,513],{},[436,502,503],{},"Credenciales acotadas a ese prefijo."," Para S3, un Access Key ID y un Secret Access Key de una identidad que pueda escribir y borrar bajo el prefijo. Para Azure, un token SAS ",[436,506,507],{},"de container"," (",[510,511,512],"code",{},"sr=c",") con permiso de creación y escritura.",[489,515,516,519,520,522],{},[436,517,518],{},"Un CDN por delante del bucket"," — recomendado para cualquier cosa que vaya a ver una audiencia. Su URL pública es la que va en ",[477,521,479],{},".",[489,524,525,528],{},[436,526,527],{},"Un Live stream configurado"," cuyo Encoding produzca salida HLS \u002F TS, DASH o CMAF.",[489,530,531,534],{},[436,532,533],{},"Rol necesario."," System Administrator para registrar el Destination; Operator (o System Administrator) para enlazarlo a un Live stream y emitir.",[456,536,538],{"id":537},"restricciones-a-tener-en-cuenta","Restricciones a tener en cuenta",[486,540,541,559,569,575,581,587,593],{},[489,542,543,546,547,550,551,554,555,558],{},[436,544,545],{},"Solo formatos segmentados."," Los Destinations de almacenamiento de objetos aceptan ",[510,548,549],{},"HLS \u002F TS",", ",[510,552,553],{},"DASH"," y ",[510,556,557],{},"CMAF",". El provider no se ofrece en RTMP, Enhanced RTMP, SRT, STREAM, SDIOUT ni Record.",[489,560,561,564,565,522],{},[436,562,563],{},"En S3 no hay campo de región, por diseño."," La región de firma se deriva del endpoint y se corrige automáticamente — consulta ",[452,566,568],{"href":567},"#regi%C3%B3n-s3","Región (S3)",[489,570,571,574],{},[436,572,573],{},"No se soportan credenciales temporales STS."," Usa claves de larga duración.",[489,576,577,580],{},[436,578,579],{},"No se soportan claves SSE-KMS por objeto."," El cifrado por defecto a nivel de bucket (SSE-S3 o SSE-KMS) se aplica de forma transparente y no requiere nada aquí.",[489,582,583,586],{},[436,584,585],{},"La storage class es la del bucket."," Usa una regla de ciclo de vida para transicionar los objetos a una clase más barata.",[489,588,589,592],{},[436,590,591],{},"El Encoder no purga Azure Blob Storage."," Los segmentos antiguos permanecen en el container hasta que una regla de ciclo de vida de Azure los expire.",[489,594,595,598],{},[436,596,597],{},"DASH y CMAF dejan huérfanos los objetos de una sesión en cada reinicio del Encoder."," Sus nombres de segmento llevan un timestamp de sesión, así que un reinicio empieza una sesión de nombres nueva y los objetos de la anterior se quedan atrás — nada en el producto los sigue después. Una regla de ciclo de vida sobre el prefijo es obligatoria, no opcional. HLS no se ve afectado: sus segmentos son un contador continuo bajo una ruta fija, así que la ventana sigue rodando entre reinicios.",[456,600,602],{"id":601},"vía-ui","Vía UI",[604,605,606,611,642,648,748,752,825,829,832,842,855,869,873,887,891],"steps",{},[607,608,610],"h3",{"id":609},"crear-el-destination","Crear el Destination",[433,612,613,614,617,618,621,622,508,625,550,627,629,630,632,633,636,637,629,639,641],{},"Navega: ",[436,615,616],{},"Destinations → Add destination",". Rellena ",[477,619,620],{},"Name",", elige el ",[477,623,624],{},"Type",[436,626,549],{},[436,628,553],{}," o ",[436,631,557],{},") y pon ",[477,634,635],{},"Provider"," en ",[436,638,445],{},[436,640,449],{},". El resto del formulario se reetiqueta según el provider.",[433,643,644,645,647],{},"Para ",[436,646,445],{},":",[649,650,651,667],"table",{},[652,653,654],"thead",{},[655,656,657,661,664],"tr",{},[658,659,660],"th",{},"Etiqueta UI",[658,662,663],{},"Campo API",[658,665,666],{},"Valor",[668,669,670,689,704,719,734],"tbody",{},[655,671,672,678,683],{},[673,674,675],"td",{},[477,676,677],{},"Endpoint and bucket",[673,679,680],{},[510,681,682],{},"settings_common.urls.primary_server",[673,684,685,686,522],{},"Endpoint, bucket y prefijo de clave en una sola URL, por ejemplo ",[510,687,688],{},"https:\u002F\u002Fs3.eu-west-1.amazonaws.com\u002Fmy-bucket\u002Flive",[655,690,691,696,701],{},[673,692,693],{},[477,694,695],{},"Stream name",[673,697,698],{},[510,699,700],{},"settings_common.stream",[673,702,703],{},"Se añade al prefijo — pasa a ser el siguiente segmento de la clave.",[655,705,706,711,716],{},[673,707,708],{},[477,709,710],{},"Access Key ID",[673,712,713],{},[510,714,715],{},"settings_common.username",[673,717,718],{},"El identificador de la clave de acceso.",[655,720,721,726,731],{},[673,722,723],{},[477,724,725],{},"Secret Access Key",[673,727,728],{},[510,729,730],{},"settings_common.password",[673,732,733],{},"El secreto correspondiente. Se almacena cifrado; las lecturas devuelven el sentinel.",[655,735,736,740,745],{},[673,737,738],{},[477,739,479],{},[673,741,742],{},[510,743,744],{},"settings_common.urls.player",[673,746,747],{},"La URL del CDN que deben usar los reproductores.",[433,749,644,750,647],{},[436,751,449],{},[649,753,754,764],{},[652,755,756],{},[655,757,758,760,762],{},[658,759,660],{},[658,761,663],{},[658,763,666],{},[668,765,766,782,795,813],{},[655,767,768,773,777],{},[673,769,770],{},[477,771,772],{},"Primary server",[673,774,775],{},[510,776,682],{},[673,778,779,522],{},[510,780,781],{},"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\u002F\u003Ccontainer>\u002F\u003Cprefix>",[655,783,784,788,792],{},[673,785,786],{},[477,787,695],{},[673,789,790],{},[510,791,700],{},[673,793,794],{},"Se añade al prefijo, igual que arriba.",[655,796,797,802,806],{},[673,798,799],{},[477,800,801],{},"SAS token",[673,803,804],{},[510,805,730],{},[673,807,808,809,812],{},"El SAS de container. Con o sin el ",[510,810,811],{},"?"," inicial — se aceptan ambos. No hay usuario: el SAS es toda la autorización.",[655,814,815,819,823],{},[673,816,817],{},[477,818,479],{},[673,820,821],{},[510,822,744],{},[673,824,747],{},[607,826,828],{"id":827},"acertar-con-la-url","Acertar con la URL",[433,830,831],{},"Los dos estilos de direccionamiento de S3 se aceptan y no hace falta nada para distinguirlos:",[833,834,840],"pre",{"className":835,"code":837,"language":838,"meta":839},[836],"language-text","path-style            https:\u002F\u002Fs3.eu-west-1.amazonaws.com\u002Fmy-bucket\u002Flive\nvirtual-hosted-style  https:\u002F\u002Fmy-bucket.s3.eu-west-1.amazonaws.com\u002Flive\nself-hosted           https:\u002F\u002Fminio.example.com:9000\u002Fmy-bucket\u002Flive\n","text","",[510,841,837],{"__ignoreMap":839},[433,843,844,845,494,847,850,851,854],{},"Con ",[477,846,695],{},[510,848,849],{},"channel-1",", la primera forma escribe ",[510,852,853],{},"my-bucket\u002Flive\u002Fchannel-1\u002Findex.m3u8"," y sus segmentos al lado.",[433,856,857,860,861,864,865,868],{},[436,858,859],{},"Usa un endpoint regional."," El global ",[510,862,863],{},"s3.amazonaws.com"," responde con una redirección a la región propia del bucket, y una petición redirigida ya no cuadra con su firma. El editor avisa de esto bajo el campo, y también de un endpoint que no sea ",[510,866,867],{},"https"," o que no lleve bucket en la ruta. Los avisos no bloquean el guardado.",[607,870,872],{"id":871},"enlazar-el-destination-a-un-live-stream","Enlazar el Destination a un Live stream",[433,874,875,876,879,880,882,883,886],{},"Abre el Live stream de destino en el ",[452,877,878],{"href":42},"editor de Live streams"," y añade el nuevo Destination bajo ",[477,881,121],{}," — directamente o a través de un ",[452,884,885],{"href":130},"Destination group",". Guarda.",[607,888,890],{"id":889},"arrancar-el-live-stream","Arrancar el Live stream",[433,892,893,894,896],{},"Arranca la emisión desde ",[452,895,31],{"href":32},". El Destination pasa a activo en el indicador por Destination de la fila on-air, y los objetos empiezan a aparecer bajo el prefijo.",[456,898,900],{"id":899},"vía-api","Vía API",[433,902,903,904,522],{},"Todas las llamadas usan la cabecera bearer estándar ",[510,905,906],{},"Authorization: Bearer \u003CYOUR_API_TOKEN>",[649,908,909,922],{},[652,910,911],{},[655,912,913,916,919],{},[658,914,915],{},"Acción",[658,917,918],{},"Método + path",[658,920,921],{},"operationId",[668,923,924,939,954],{},[655,925,926,929,934],{},[673,927,928],{},"Listar el catálogo de providers",[673,930,931],{},[510,932,933],{},"GET \u002Fc21apiv2\u002Fpublishing\u002Fproviders",[673,935,936],{},[510,937,938],{},"getPublishingProviders",[655,940,941,944,949],{},[673,942,943],{},"Crear un Destination",[673,945,946],{},[510,947,948],{},"POST \u002Fc21apiv2\u002Fpublishings",[673,950,951],{},[510,952,953],{},"addPublishing",[655,955,956,959,964],{},[673,957,958],{},"Actualizar un Destination",[673,960,961],{},[510,962,963],{},"PUT \u002Fc21apiv2\u002Fpublishings\u002F{publishingId}",[673,965,966],{},[510,967,968],{},"updatePublishing",[833,970,974],{"className":971,"code":972,"language":973,"meta":839,"style":839},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fpublishings\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"Origin bucket — Channel 1\",\n    \"type\": \"HLS \u002F TS\",\n    \"settings_common\": {\n      \"provider\": \"S3\",\n      \"stream\": \"channel-1\",\n      \"username\": \"\u003CAccess Key ID>\",\n      \"password\": \"\u003CSecret Access Key>\",\n      \"urls\": {\n        \"primary_server\": \"https:\u002F\u002Fs3.eu-west-1.amazonaws.com\u002Fmy-bucket\u002Flive\",\n        \"player\": \"https:\u002F\u002Fcdn.example.com\u002Flive\u002Fchannel-1\u002Findex.m3u8\"\n      }\n    }\n  }'\n","bash",[510,975,976,1006,1020,1034,1046,1052,1058,1064,1070,1076,1082,1088,1094,1100,1106,1112,1118],{"__ignoreMap":839},[977,978,981,985,989,992,996,999,1002],"span",{"class":979,"line":980},"line",1,[977,982,984],{"class":983},"sBMFI","curl",[977,986,988],{"class":987},"sfazB"," -X",[977,990,991],{"class":987}," POST",[977,993,995],{"class":994},"sMK4o"," \"",[977,997,998],{"class":987},"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fpublishings",[977,1000,1001],{"class":994},"\"",[977,1003,1005],{"class":1004},"sTEyZ"," \\\n",[977,1007,1009,1012,1014,1016,1018],{"class":979,"line":1008},2,[977,1010,1011],{"class":987},"  -H",[977,1013,995],{"class":994},[977,1015,906],{"class":987},[977,1017,1001],{"class":994},[977,1019,1005],{"class":1004},[977,1021,1023,1025,1027,1030,1032],{"class":979,"line":1022},3,[977,1024,1011],{"class":987},[977,1026,995],{"class":994},[977,1028,1029],{"class":987},"Content-Type: application\u002Fjson",[977,1031,1001],{"class":994},[977,1033,1005],{"class":1004},[977,1035,1037,1040,1043],{"class":979,"line":1036},4,[977,1038,1039],{"class":987},"  -d",[977,1041,1042],{"class":994}," '",[977,1044,1045],{"class":987},"{\n",[977,1047,1049],{"class":979,"line":1048},5,[977,1050,1051],{"class":987},"    \"name\": \"Origin bucket — Channel 1\",\n",[977,1053,1055],{"class":979,"line":1054},6,[977,1056,1057],{"class":987},"    \"type\": \"HLS \u002F TS\",\n",[977,1059,1061],{"class":979,"line":1060},7,[977,1062,1063],{"class":987},"    \"settings_common\": {\n",[977,1065,1067],{"class":979,"line":1066},8,[977,1068,1069],{"class":987},"      \"provider\": \"S3\",\n",[977,1071,1073],{"class":979,"line":1072},9,[977,1074,1075],{"class":987},"      \"stream\": \"channel-1\",\n",[977,1077,1079],{"class":979,"line":1078},10,[977,1080,1081],{"class":987},"      \"username\": \"\u003CAccess Key ID>\",\n",[977,1083,1085],{"class":979,"line":1084},11,[977,1086,1087],{"class":987},"      \"password\": \"\u003CSecret Access Key>\",\n",[977,1089,1091],{"class":979,"line":1090},12,[977,1092,1093],{"class":987},"      \"urls\": {\n",[977,1095,1097],{"class":979,"line":1096},13,[977,1098,1099],{"class":987},"        \"primary_server\": \"https:\u002F\u002Fs3.eu-west-1.amazonaws.com\u002Fmy-bucket\u002Flive\",\n",[977,1101,1103],{"class":979,"line":1102},14,[977,1104,1105],{"class":987},"        \"player\": \"https:\u002F\u002Fcdn.example.com\u002Flive\u002Fchannel-1\u002Findex.m3u8\"\n",[977,1107,1109],{"class":979,"line":1108},15,[977,1110,1111],{"class":987},"      }\n",[977,1113,1115],{"class":979,"line":1114},16,[977,1116,1117],{"class":987},"    }\n",[977,1119,1121,1124],{"class":979,"line":1120},17,[977,1122,1123],{"class":987},"  }",[977,1125,1126],{"class":994},"'\n",[433,1128,1129,1130,1133,1134,1137,1138,1141,1142,522],{},"La variante Azure es la misma llamada con ",[510,1131,1132],{},"\"provider\": \"Azure Blob Storage\"",", la URL del container en ",[510,1135,1136],{},"primary_server",", el token SAS en ",[510,1139,1140],{},"password"," y sin ",[510,1143,1144],{},"username",[433,1146,1147,1148,1151,1152,1155],{},"Las credenciales son write-only. Toda ruta de lectura devuelve el sentinel ",[510,1149,1150],{},"••••••••"," cuando hay un valor almacenado y una cadena vacía cuando no lo hay; reenviar el sentinel en una escritura preserva el valor almacenado, así que un ",[510,1153,1154],{},"PUT"," que solo cambia el stream name no necesita tener el secreto a mano.",[433,1157,1158,1159,1162,1163,1165],{},"Consulta ",[452,1160,1161],{"href":376},"API → Overview"," para el envelope estándar y ",[452,1164,384],{"href":385}," para el manejo de errores.",[456,1167,568],{"id":1168},"región-s3",[433,1170,1171],{},"SigV4 ata una firma a una región, y el Encoder la deduce en vez de pedir algo que el propio endpoint puede declarar. En este orden:",[1173,1174,1175,1181,1204,1212],"ol",{},[489,1176,1177,1180],{},[436,1178,1179],{},"La respuesta del propio endpoint."," Un sondeo sin firmar sobre el bucket devuelve la región junto con su denegación, así que esto resuelve correctamente incluso con credenciales que solo puedan escribir objetos.",[489,1182,1183,1186,1187,550,1190,550,1193,554,1196,1199,1200,1203],{},[436,1184,1185],{},"El hostname",", para los proveedores que la codifican en una etiqueta — ",[510,1188,1189],{},"s3.\u003Cregion>.amazonaws.com",[510,1191,1192],{},"s3.\u003Cregion>.wasabisys.com",[510,1194,1195],{},"\u003Cregion>.digitaloceanspaces.com",[510,1197,1198],{},"*.r2.cloudflarestorage.com"," (que firma como ",[510,1201,1202],{},"auto",").",[489,1205,1206,1211],{},[436,1207,1208],{},[510,1209,1210],{},"us-east-1",", que es lo que acepta una implementación S3 sin región configurada.",[489,1213,1214,1217],{},[436,1215,1216],{},"Corrección."," Si el almacenamiento rechaza la petición por cabecera de autorización malformada, su respuesta nombra la región que espera; el Encoder la adopta, registra la corrección y vuelve a firmar. Una región mal configurada cuesta por tanto una petición, no una caída.",[433,1219,1220],{},"La región en uso se reporta en el log del Encoder cuando arranca la publicación.",[456,1222,1224],{"id":1223},"preparar-el-bucket","Preparar el bucket",[607,1226,1228],{"id":1227},"política-iam-aws-s3","Política IAM (AWS S3)",[433,1230,1231],{},"Dale al Destination su propia identidad, con nada más que los verbos que usa y acotada al prefijo que escribe. No reutilices una clave administrativa.",[833,1233,1237],{"className":1234,"code":1235,"language":1236,"meta":839,"style":839},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Sid\": \"PublishSegments\",\n      \"Effect\": \"Allow\",\n      \"Action\": [\"s3:PutObject\", \"s3:DeleteObject\"],\n      \"Resource\": \"arn:aws:s3:::my-bucket\u002Flive\u002F*\"\n    },\n    {\n      \"Sid\": \"RegionDiscovery\",\n      \"Effect\": \"Allow\",\n      \"Action\": \"s3:GetBucketLocation\",\n      \"Resource\": \"arn:aws:s3:::my-bucket\"\n    }\n  ]\n}\n","json",[510,1238,1239,1243,1266,1280,1285,1306,1326,1360,1379,1384,1388,1407,1425,1444,1461,1465,1470],{"__ignoreMap":839},[977,1240,1241],{"class":979,"line":980},[977,1242,1045],{"class":994},[977,1244,1245,1248,1252,1254,1256,1258,1261,1263],{"class":979,"line":1008},[977,1246,1247],{"class":994},"  \"",[977,1249,1251],{"class":1250},"spNyl","Version",[977,1253,1001],{"class":994},[977,1255,647],{"class":994},[977,1257,995],{"class":994},[977,1259,1260],{"class":987},"2012-10-17",[977,1262,1001],{"class":994},[977,1264,1265],{"class":994},",\n",[977,1267,1268,1270,1273,1275,1277],{"class":979,"line":1022},[977,1269,1247],{"class":994},[977,1271,1272],{"class":1250},"Statement",[977,1274,1001],{"class":994},[977,1276,647],{"class":994},[977,1278,1279],{"class":994}," [\n",[977,1281,1282],{"class":979,"line":1036},[977,1283,1284],{"class":994},"    {\n",[977,1286,1287,1290,1293,1295,1297,1299,1302,1304],{"class":979,"line":1048},[977,1288,1289],{"class":994},"      \"",[977,1291,1292],{"class":983},"Sid",[977,1294,1001],{"class":994},[977,1296,647],{"class":994},[977,1298,995],{"class":994},[977,1300,1301],{"class":987},"PublishSegments",[977,1303,1001],{"class":994},[977,1305,1265],{"class":994},[977,1307,1308,1310,1313,1315,1317,1319,1322,1324],{"class":979,"line":1054},[977,1309,1289],{"class":994},[977,1311,1312],{"class":983},"Effect",[977,1314,1001],{"class":994},[977,1316,647],{"class":994},[977,1318,995],{"class":994},[977,1320,1321],{"class":987},"Allow",[977,1323,1001],{"class":994},[977,1325,1265],{"class":994},[977,1327,1328,1330,1333,1335,1337,1340,1342,1345,1347,1350,1352,1355,1357],{"class":979,"line":1060},[977,1329,1289],{"class":994},[977,1331,1332],{"class":983},"Action",[977,1334,1001],{"class":994},[977,1336,647],{"class":994},[977,1338,1339],{"class":994}," [",[977,1341,1001],{"class":994},[977,1343,1344],{"class":987},"s3:PutObject",[977,1346,1001],{"class":994},[977,1348,1349],{"class":994},",",[977,1351,995],{"class":994},[977,1353,1354],{"class":987},"s3:DeleteObject",[977,1356,1001],{"class":994},[977,1358,1359],{"class":994},"],\n",[977,1361,1362,1364,1367,1369,1371,1373,1376],{"class":979,"line":1066},[977,1363,1289],{"class":994},[977,1365,1366],{"class":983},"Resource",[977,1368,1001],{"class":994},[977,1370,647],{"class":994},[977,1372,995],{"class":994},[977,1374,1375],{"class":987},"arn:aws:s3:::my-bucket\u002Flive\u002F*",[977,1377,1378],{"class":994},"\"\n",[977,1380,1381],{"class":979,"line":1072},[977,1382,1383],{"class":994},"    },\n",[977,1385,1386],{"class":979,"line":1078},[977,1387,1284],{"class":994},[977,1389,1390,1392,1394,1396,1398,1400,1403,1405],{"class":979,"line":1084},[977,1391,1289],{"class":994},[977,1393,1292],{"class":983},[977,1395,1001],{"class":994},[977,1397,647],{"class":994},[977,1399,995],{"class":994},[977,1401,1402],{"class":987},"RegionDiscovery",[977,1404,1001],{"class":994},[977,1406,1265],{"class":994},[977,1408,1409,1411,1413,1415,1417,1419,1421,1423],{"class":979,"line":1090},[977,1410,1289],{"class":994},[977,1412,1312],{"class":983},[977,1414,1001],{"class":994},[977,1416,647],{"class":994},[977,1418,995],{"class":994},[977,1420,1321],{"class":987},[977,1422,1001],{"class":994},[977,1424,1265],{"class":994},[977,1426,1427,1429,1431,1433,1435,1437,1440,1442],{"class":979,"line":1096},[977,1428,1289],{"class":994},[977,1430,1332],{"class":983},[977,1432,1001],{"class":994},[977,1434,647],{"class":994},[977,1436,995],{"class":994},[977,1438,1439],{"class":987},"s3:GetBucketLocation",[977,1441,1001],{"class":994},[977,1443,1265],{"class":994},[977,1445,1446,1448,1450,1452,1454,1456,1459],{"class":979,"line":1102},[977,1447,1289],{"class":994},[977,1449,1366],{"class":983},[977,1451,1001],{"class":994},[977,1453,647],{"class":994},[977,1455,995],{"class":994},[977,1457,1458],{"class":987},"arn:aws:s3:::my-bucket",[977,1460,1378],{"class":994},[977,1462,1463],{"class":979,"line":1108},[977,1464,1117],{"class":994},[977,1466,1467],{"class":979,"line":1114},[977,1468,1469],{"class":994},"  ]\n",[977,1471,1472],{"class":979,"line":1120},[977,1473,1474],{"class":994},"}\n",[433,1476,1477,1478,1480],{},"En la práctica ",[510,1479,1354],{}," no es opcional: sin él la ventana en directo no se purga nunca y el bucket crece mientras el canal siga emitiendo. Un borrado rechazado se reporta en el log del Encoder.",[607,1482,1484],{"id":1483},"acceso-público","Acceso público",[433,1486,1487],{},"No se envía ninguna cabecera de ACL, así que los objetos son privados y cómo se sirven es una decisión del bucket:",[486,1489,1490,1496],{},[489,1491,1492,1495],{},[436,1493,1494],{},"Recomendado:"," mantener el bucket privado y poner CloudFront por delante con Origin Access Control.",[489,1497,1498,1499,1502],{},"Como alternativa, una política de bucket que conceda ",[510,1500,1501],{},"s3:GetObject"," sobre el prefijo.",[433,1504,1505,1506,1509],{},"Los buckets creados desde abril de 2023 tienen las ACL deshabilitadas, así que una ACL ",[510,1507,1508],{},"public-read"," sería rechazada de plano — por eso no se envía ninguna.",[607,1511,1513],{"id":1512},"cors","CORS",[433,1515,1516,1517,554,1520,1523],{},"La reproducción en navegador necesita CORS en el bucket, o en el CDN. Una política mínima permite ",[510,1518,1519],{},"GET",[510,1521,1522],{},"HEAD"," desde el origen del reproductor.",[607,1525,1527],{"id":1526},"regla-de-ciclo-de-vida","Regla de ciclo de vida",[433,1529,1530,1531,1534],{},"La ventana en directo la mantiene el propio Encoder: según cada segmento sale de la ventana, se borra del bucket. Eso mantiene acotado un canal en marcha — medido en un canal de referencia en 81 objetos ",[510,1532,1533],{},".ts"," estables, planos en el tiempo.",[433,1536,1537,1538,1541,1542,1544],{},"Aun así, una regla de ciclo de vida sobre el prefijo es obligatoria para ",[436,1539,1540],{},"DASH y CMAF",", cuyos nombres de segmento por sesión dejan huérfanos los objetos de la sesión anterior en cada reinicio, y para ",[436,1543,449],{},", que el Encoder no purga nunca. Expira el prefijo a los pocos días; además sale más barato que un borrado por objeto.",[456,1546,1548],{"id":1547},"qué-lleva-cada-objeto","Qué lleva cada objeto",[433,1550,1551],{},"El almacenamiento de objetos conserva exactamente lo que declaró la subida y lo sirve así durante toda la vida del objeto, de modo que el tipo de medio y la caducidad de caché se fijan en el momento de subir:",[649,1553,1554,1567],{},[652,1555,1556],{},[655,1557,1558,1561,1564],{},[658,1559,1560],{},"Objeto",[658,1562,1563],{},"Content-Type",[658,1565,1566],{},"Cache-Control",[668,1568,1569,1586,1602,1618,1640,1656],{},[655,1570,1571,1576,1581],{},[673,1572,1573],{},[510,1574,1575],{},".m3u8",[673,1577,1578],{},[510,1579,1580],{},"application\u002Fvnd.apple.mpegurl",[673,1582,1583],{},[510,1584,1585],{},"no-cache, max-age=1",[655,1587,1588,1593,1598],{},[673,1589,1590],{},[510,1591,1592],{},".mpd",[673,1594,1595],{},[510,1596,1597],{},"application\u002Fdash+xml",[673,1599,1600],{},[510,1601,1585],{},[655,1603,1604,1608,1613],{},[673,1605,1606],{},[510,1607,1533],{},[673,1609,1610],{},[510,1611,1612],{},"video\u002FMP2T",[673,1614,1615],{},[510,1616,1617],{},"public, max-age=31536000, immutable",[655,1619,1620,1631,1636],{},[673,1621,1622,550,1625,550,1628],{},[510,1623,1624],{},".m4s",[510,1626,1627],{},".mp4",[510,1629,1630],{},".cmfv",[673,1632,1633],{},[510,1634,1635],{},"video\u002Fmp4",[673,1637,1638],{},[510,1639,1617],{},[655,1641,1642,1647,1652],{},[673,1643,1644],{},[510,1645,1646],{},".cmfa",[673,1648,1649],{},[510,1650,1651],{},"audio\u002Fmp4",[673,1653,1654],{},[510,1655,1617],{},[655,1657,1658,1663,1668],{},[673,1659,1660],{},[510,1661,1662],{},".vtt",[673,1664,1665],{},[510,1666,1667],{},"text\u002Fvtt",[673,1669,1670],{},[510,1671,1617],{},[433,1673,1674],{},"Los manifests se reescriben en cada segmento y no deben cachearse. Los segmentos y los init segments son inmutables — sus nombres llevan el número de segmento o el timestamp de sesión — así que esa caducidad larga es lo que hace asequible la combinación bucket más CDN.",[456,1676,1678],{"id":1677},"coste","Coste",[433,1680,1681,1682,1685],{},"Cada segmento de cada rendition es una subida, y cada segmento que sale de la ventana es un borrado. Con segmentos de 2 s y cinco renditions eso son aproximadamente ",[436,1683,1684],{},"9.000 subidas por hora y Destination",", escalando linealmente con el número de renditions. En un hyperscaler son céntimos por hora, pero son recurrentes — dimensiónalo antes de apuntar un canal 24\u002F7 a un bucket. Segmentos más largos lo reducen proporcionalmente.",[456,1687,1689],{"id":1688},"verificar","Verificar",[486,1691,1692,1699,1705,1711],{},[489,1693,1694,1695,1698],{},"Los objetos aparecen bajo ",[510,1696,1697],{},"\u003Cprefijo>\u002F\u003Cstream name>\u002F"," en una o dos duraciones de segmento desde el arranque.",[489,1700,1701,1702,1704],{},"El número de objetos se estabiliza en vez de crecer sin límite: en un canal de referencia, 81 objetos ",[510,1703,1533],{}," en HLS y 351 por rendition en DASH, planos en el tiempo.",[489,1706,1707,1708,1710],{},"El manifest es accesible por la URL de CDN guardada en ",[477,1709,479],{},", y un reproductor abierto sobre esa URL reproduce el live edge.",[489,1712,1713],{},"Parar el Live stream detiene las subidas; los objetos ya escritos permanecen hasta que la regla de ciclo de vida los expire.",[456,1715,1717],{"id":1716},"resolución-de-problemas","Resolución de problemas",[433,1719,1720],{},"El código de error del propio proveedor de almacenamiento se refleja en el log del Encoder, en vez de un estado HTTP a secas.",[649,1722,1723,1733],{},[652,1724,1725],{},[655,1726,1727,1730],{},[658,1728,1729],{},"Síntoma",[658,1731,1732],{},"Causa",[668,1734,1735,1745,1755,1765,1773,1783,1796,1807],{},[655,1736,1737,1742],{},[673,1738,1739],{},[510,1740,1741],{},"403 SignatureDoesNotMatch",[673,1743,1744],{},"Secret Access Key incorrecto.",[655,1746,1747,1752],{},[673,1748,1749],{},[510,1750,1751],{},"403 AccessDenied",[673,1753,1754],{},"La clave es válida; la política no permite escribir en ese prefijo.",[655,1756,1757,1762],{},[673,1758,1759],{},[510,1760,1761],{},"404 NoSuchBucket",[673,1763,1764],{},"Nombre de bucket incorrecto, o a la ruta de la URL le falta el segmento del bucket.",[655,1766,1767,1770],{},[673,1768,1769],{},"Una corrección de región registrada",[673,1771,1772],{},"Informativo: la región de firma se corrigió automáticamente en la primera petición.",[655,1774,1775,1778],{},[673,1776,1777],{},"El bucket crece y se registran fallos de borrado",[673,1779,1780,1781,522],{},"A la política le falta ",[510,1782,1354],{},[655,1784,1785,1791],{},[673,1786,1787,1788],{},"Azure: todas las subidas devuelven ",[510,1789,1790],{},"404 ResourceNotFound",[673,1792,1793,1794,1203],{},"El SAS llegó truncado, o tiene alcance de blob en vez de container (",[510,1795,512],{},[655,1797,1798,1801],{},[673,1799,1800],{},"Los objetos llegan pero la reproducción falla",[673,1802,1803,1804,1806],{},"Revisa CORS en el bucket o en el CDN, y que ",[477,1805,479],{}," apunte al CDN.",[655,1808,1809,1812],{},[673,1810,1811],{},"La reproducción sirve un manifest obsoleto",[673,1813,1814,1815,1817],{},"Una caché por delante del bucket está ignorando el ",[510,1816,1566],{}," del manifest.",[433,1819,1820,1821,1823],{},"Un SAS de container de Azure llega a unos 160 caracteres y su firma es lo último que lleva, así que cualquier truncamiento por el camino elimina en silencio justo la parte que autoriza la petición — y todas las subidas responden ",[510,1822,1790],{},". Pégalo entero.",[456,1825,1827],{"id":1826},"faq","FAQ",[1829,1830,1831,1849,1853,1860],"accordion",{},[1832,1833,1835,1836,554,1838,1840,1841,1844,1845,1848],"accordion-item",{"label":1834},"¿Es lo mismo que External Storage?","No. ",[452,1837,184],{"href":185},[452,1839,179],{"href":180}," entregan ",[477,1842,1843],{},"grabaciones y clips"," — ficheros terminados, a posteriori. Un Destination de almacenamiento de objetos publica la salida ",[477,1846,1847],{},"en directo",", manifest y segmentos, mientras la emisión está en marcha.",[1832,1850,1852],{"label":1851},"¿Puede el mismo Live stream publicar a un bucket y a un CDN a la vez?","Sí. Añade un segundo Destination con otro provider y enlaza ambos al Live stream, directamente o a través de un Destination group. Cada Destination se monitoriza de forma independiente en la fila on-air.",[1832,1854,1856,1857,1859],{"label":1855},"¿Por qué no hay campo de región para S3?","Porque el endpoint puede declararla. El Encoder sondea el bucket, cae al hostname y después a ",[510,1858,1210],{},", y si el almacenamiento rechaza la firma nombrando otra región, la adopta y vuelve a firmar. Una suposición errónea cuesta una petición.",[1832,1861,1863],{"label":1862},"¿Tengo que poner un CDN por delante?","Técnicamente no — un bucket público sirve la reproducción. Pero el almacenamiento de objetos no tiene caché ni distribución geográfica, y factura cada petición, así que una audiencia en directo leyendo directamente del bucket resulta lenta y cara.",[1865,1866,1867],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":839,"searchDepth":1008,"depth":1008,"links":1869},[1870,1871,1872,1873,1879,1880,1881,1887,1888,1889,1890,1891],{"id":458,"depth":1008,"text":459},{"id":483,"depth":1008,"text":484},{"id":537,"depth":1008,"text":538},{"id":601,"depth":1008,"text":602,"children":1874},[1875,1876,1877,1878],{"id":609,"depth":1022,"text":610},{"id":827,"depth":1022,"text":828},{"id":871,"depth":1022,"text":872},{"id":889,"depth":1022,"text":890},{"id":899,"depth":1008,"text":900},{"id":1168,"depth":1008,"text":568},{"id":1223,"depth":1008,"text":1224,"children":1882},[1883,1884,1885,1886],{"id":1227,"depth":1022,"text":1228},{"id":1483,"depth":1022,"text":1484},{"id":1512,"depth":1022,"text":1513},{"id":1526,"depth":1022,"text":1527},{"id":1547,"depth":1008,"text":1548},{"id":1677,"depth":1008,"text":1678},{"id":1688,"depth":1008,"text":1689},{"id":1716,"depth":1008,"text":1717},{"id":1826,"depth":1008,"text":1827},"Publica la salida HLS \u002F TS, DASH o CMAF de un Live stream directamente en un bucket compatible S3 o en un container de Azure Blob, con un CDN por delante.","md",null,{},{"icon":295},{"title":292,"description":1892},"wH1uEiYftxqy7PBt8s32Q_X6dlrmcyjwTExAhICN-Lo",[1900,1902],{"title":287,"path":288,"stem":289,"description":1901,"icon":290,"children":-1},"Emite con latencia extremo a extremo inferior al segundo — Real time encoding en el Live stream, contribución RTMP o Enhanced RTMP y distribución WebRTC de Dolby Millicast.",{"title":297,"path":298,"stem":299,"description":1903,"icon":224,"children":-1},"Registra un DRM provider y asócialo a un Publishing — desde la UI, desde la API o ambas.",1789032161163]