Escuela
Polit
écnic
a S
uperior
de L
inare
s
GENERACIÓN DE UN TRANSPORT
STREAM DE TELEVISIÓN
INTERACTIVA.
Alumna: María de los Ángeles Mateos Moreno
Tutor: Prof. D. Luis Ramón López López
Tutor: Prof. D. Raúl Mata Campos
Depto.: Ingeniería de Telecomunicación
Febrero, 2019
Febrero, 2019
UNIVERSIDAD DE JAÉN Escuela Politécnica Superior de Linares
Trabajo Fin de Grado
______
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
1
UNIVERSIDAD DE JAÉN
Escuela Politécnica Superior de Linares
Grado en Ingeniería de Tecnologías de Telecomunicación
TRABAJO FIN DE GRADO
Generación de un Transport Stream de televisión interactiva.
Alumno: María de los Ángeles Mateos Moreno.
Fdo.____________________________________
Tutor: Luis Ramón López López.
Fdo.____________________________________
Tutor: Raúl Mata Campos.
Fdo.____________________________________
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
2
ÍÍÍNNNDDDIIICCCEEE DDDEEE CCCOOONNNTTTEEENNNIIIDDDOOOSSS
RESUMEN ........................................................................................................................... 6
INTRODUCCIÓN ............................................................................................................... 7
OBJETIVOS ........................................................................................................................ 9
CAPÍTULO 1:
TELEVISIÓN INTERACTIVA ....................................................................................... 10
1.1. Introducción a los servicios interactivos ........................................................... 10
1.2. Comparativas tecnologías interactivas ............................................................. 12
1.3. HbbTV (Hybrid Broadcast Broadband TV) .................................................... 14
1.3.1. Tipos de aplicaciones..................................................................................... 17
1.3.2. Entrada del usurario Key Events ................................................................... 18
1.3.3. Pantalla acompañante .................................................................................... 19
1.3.4. Transporte de las aplicaciones ....................................................................... 19
1.4. Especificaciones de HbbTV ................................................................................ 20
1.4.1. OIPF (Open IPTV Forum) ............................................................................. 21
1.4.2. CEA-2014: CE-HTML .................................................................................. 21
1.4.3. W3C: XHTML, CCS y JavaScript ................................................................ 21
1.4.4. DVB (Digital Vídeo Broadcasting) ............................................................... 23
1.4.5. MPEG DASH ................................................................................................ 23
CAPÍTULO 2:
DESARROLLO DE LA APLICACIÓN INTERACTIVA EN HbbTV ....................... 25
2.1. Identificación de una aplicación interactiva en HbbTV ................................ 25
2.1.1. DOCTYPE ..................................................................................................... 25
2.1.2. MIME ............................................................................................................ 25
2.2. Ciclo de vida de la aplicación ............................................................................. 26
2.3. Event listeners ..................................................................................................... 28
2.4. Key events ............................................................................................................ 29
2.5. Señalización de aplicaciones HbbTV broadcast .............................................. 30
2.6. Entorno de trabajo .............................................................................................. 31
2.7. Funcionamiento de la aplicación ....................................................................... 32
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
3
CAPÍTULO 3:
TELEVISIÓN DIGITAL TERRESTRE ......................................................................... 33
3.1. Introducción a la Televisión Digital Terrestre ................................................. 33
3.2. Estándares de Televisión Digital ....................................................................... 34
3.3. Estándar Europeo DVB-T .................................................................................. 35
3.3.1. Características técnicas del estándar DVB-T ................................................ 37
CAPÍTULO 4:
TRANSPORT STREM ..................................................................................................... 40
4.1. MPEG-2 Transport Stream ............................................................................... 40
4.2. Transport Stream ............................................................................................... 42
4.2.1. Composición TS ............................................................................................ 42
4.3. Pautas de implementación para la difusión de datos ....................................... 44
4.4. DSM-CC .............................................................................................................. 46
4.4.1. Data carousel ................................................................................................. 46
4.4.2. Object carousel .............................................................................................. 47
4.5. Tablas PSI/SI ....................................................................................................... 49
4.5.1. NIT ................................................................................................................ 52
4.5.2. PAT ................................................................................................................ 55
4.5.3. PMT ............................................................................................................... 56
4.5.4. SDT ................................................................................................................ 60
4.5.5. Tiempos de repeticionde las tablas PSI/SI .................................................... 62
4.5.6. MPEG-2 Descriptors - DSMCC .................................................................... 63
4.6. Señalización y transporte de aplicaciones y servicios interactivos ................. 66
4.6.1. Transmisión de señalización de aplicaciones ................................................ 66
4.6.2. AIT ................................................................................................................ 66
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
4
CAPÍTULO 5:
GENERACIÓN DE UN TRANSPORT STREAM PARA DVB-T INCLUYENDO LA
APLICACIÓN INTERACTIVA ...................................................................................... 72
5.1. OpenCaster .......................................................................................................... 72
5.1.1. Instalación de OpenCaster ............................................................................. 72
5.1.2. Python ............................................................................................................ 74
5.1.3. Comandos OpenCaster .................................................................................. 74
5.1.4. ffmpeg ............................................................................................................ 75
5.1.5. Tovid .............................................................................................................. 75
5.2. Codificación del audio y el vídeo en formato TS .............................................. 76
5.2.1. Generación del archivo video.ts .................................................................... 77
5.2.2. Archivo de audio ........................................................................................... 80
5.3. Generación de carrusel de objetos DSMCC ..................................................... 83
5.4. Generación de Tablas PSI/SI ............................................................................. 84
5.4.1. Cabecera y datos ............................................................................................ 84
5.4.2. Tabla NIT ...................................................................................................... 85
5.4.3. Tabla PAT ..................................................................................................... 86
5.4.4. Tabla PMT ..................................................................................................... 87
5.4.5. Tabla SDT ..................................................................................................... 89
5.4.6. Tabla AIT ...................................................................................................... 90
5.4.7. Generación de tablas ...................................................................................... 91
5.4.8. Generación de Transport Stream final ........................................................... 92
CAPÍTULO 6:
TRANSMISIÓN DEL TRANSPORT STREAM GENERADO ................................... 95
6.1. Configuración TV ................................................................................................... 99
6.2. Visualización del Transport Stream generado y funcionamiento de la
aplicación interactiva HbbTV .................................................................................... 101
CONCLUSIONES – LÍNEAS DE FUTURO ................................................................ 105
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
5
ANEXO A:
Implementación de una aplicación HbbTV .................................................................. 107
Fases del proceso .......................................................................................................... 107
Selección del tema principal de la aplicación ............................................................ 107
Composición de la pantalla y navegación por la aplicación ...................................... 107
Programación aplicación ........................................................................................... 107
Aplicación en el servidor FileZilla ............................................................................ 126
Emulación .................................................................................................................. 127
ANEXO B:
Análisis del Transport Stream generado ....................................................................... 129
ÍNDICE DE TABLAS ..................................................................................................... 137
ÍNDICE DE FIGURAS ................................................................................................... 139
ABREVIATURAS·ACRÓNIMOS ................................................................................ 141
BIBLIOGRAFÍA ............................................................................................................. 143
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
6
RREESSUUMMEENN
En este TFG se plantea la generación de un Transport Stream que incluya una
aplicación interactiva para el estándar DVB.
Analizando las diferentes tecnologías, se ha elegido HbbTV para la creación de la
aplicación interactiva. Esta tecnología usa estándares existentes y tecnología web.
Para el desarrollo de la aplicación interactiva se ha utilizado el software Sublime
Text 3. La aplicación interactiva estará ubicada en un servidor para posteriormente ser
ejecutada en un emulador (Opera TV). Para usar el emulador se necesita una máquina
virtual (Oracle VM Virtual Box) e incluir en la programación de la aplicación los códigos
del mando a distancia para su correcto funcionamiento.
Con el software libre OpenCaster (ejecutado en Linux) se genera un Transport
Stream para el estándar DVB-T que incluirá, además del vídeo y audio procesado, la
aplicación interactiva. Para la generación del TS se utilizará el código ofrecido por
OpenCaster para la creación de las tablas PSI/SI (en lenguaje Python), que se puede
modificar según las necesidades de la aplicación interactiva. En las tablas PSI/SI se
introducirá toda la información del servicio que se va a transmitir.
Se utiliza el analizador de Transport Stream DemuxToy Middleware Analyzer para
comprobar la correcta composición del Transport Stream ya multiplexado con la aplicación
interactiva.
Por último, se transmite el Transport Stream a través de un sistema de difusión de
señal DVB-T, utilizando el material del departamento para comprobar la correcta
generación e inclusión de la aplicación interactiva y su correcto funcionamiento al ser
transmitido.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
7
IINNTTRROODDUUCCCCIIÓÓNN
La televisión es uno de los medios de comunicación más importante y con un gran
alcance de difusión.
La televisión terrestre analógica nació en España en 1956 con emisiones de
Televisión Española (TVE) por VHF1 solo en Madrid y a comienzos de los años 60
comenzó a extenderse a las capitales de provincia. En 1966 nació el segundo canal de TVE
llamado UHF por sus emisiones en la banda UHF2. En los años 70 la televisión comenzó a
verse en color y con el paso de los años fueron aprobándose leyes para la emisión de más
canales y la televisión privada. En 1999 se inició el despliegue de la Televisión Digital
Terrestre (TDT) en España, pero no fue hasta el 2000 cuando comenzaron oficialmente sus
emisiones. En 2010 se produce definitivamente el apagón analógico. [1]
Algunas ventajas de la Televisión Digital frente a la analógica:
Mejor calidad de audio y vídeo debido a que se transmiten las señales de
forma digital.
Mayor oferta del número de canales.
Posibilidad de servicios interactivos y de contenido adicional, etc.
La Televisión Digital es un conjunto de tecnologías de transmisión y recepción de
sonido e imagen a través de señales digitales. [2]
Para la transmisión de TDT en Europa se utiliza el estándar DVB-T (Digital Vídeo
Broadcasting) y gracias a los diferentes formatos de compresión de señales es posible
transmitir varias señales en un mismo canal, además de la creación de aplicaciones
interactivas a través de canales de retorno entre el consumidor y el proveedor de
contenidos. [2]
La Televisión Digital nos permite crear interactividad entre el usuario y lo que se
emite, para ello debe existir un sistema intermedio o middleware (MHP, HbbTV, etc.) que
realice la comunicación entre los servicios adicionales y la televisión.
1 VHF: Banda del espectro electromagnético en el rango de frecuencias de 30 MHz a 300 MHz.
2 UHF: Banda del espectro electromagnético en el rango de frecuencias de 300 MHz a 3 GHz.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
8
En TDT se pueden mezclar un número determinado de canales de vídeo, audio y
datos en un solo flujo de transporte, denominado Transport Stream. Para la creación de
servicios, las señales (audio, vídeo y datos) junto con la aplicación pasan por una serie de
procesos (codificación, generación de tablas PSI/SI, multiplexación, etc.) generando
finalmente un flujo de MPEG-2 Transport Stream que se le aplicará una técnica de
modulación digital según el medio de transmisión (terrestre, satélite, cable) para
trasmitirlo. Una vez llega al receptor, este realiza el proceso inverso para que se pueda
mostrar en la televisión.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
9
OOBBJJEETTIIVVOOSS
Generar una aplicación interactiva para televisión:
Se implementará la aplicación interactiva en tecnología HbbTV mediante
código HTML, CSS y JavaScript utilizando Sublime Text 3.
Ejecutar la aplicación en emuladores:
Simulación de la aplicación interactiva en tecnología HbbTV en el Emulador
Opera TV mediante la máquina virtual Oracle VM Virtual Box, teniendo en cuenta en
el código anterior los códigos del mando a distancia. Para ello se necesita tener la
aplicación en un servidor.
Determinar las herramientas software y hardware necesarios para la generación
de un Transport Stream:
Se utilizará el software OpenCaster para la generación de un flujo único de
paquetes de transporte (TS) para un servicio con aplicación interactiva. Se utilizará el
código libre ofrecido por OpenCaster para la creación de las tablas PSI/SI y para
separar el vídeo en ES de vídeo y audio y encapsularlos en PES vídeo y audio para
convertirlos en archivos .ts que serán multiplexados con las tablas generadas.
Generar un Transport Stream de DVB-T que incluya la aplicación interactiva:
Modificación de las tablas PSI/SI añadiendo información para que el
Transport Stream contenga la aplicación interactiva.
Transmitir la señal de DVB-T que contenga la aplicación.
Estudio del equipamiento disponible del departamento para la generación y
transmisión de las señales moduladas de DVB-T.
Montaje de un sistema de difusión para la transmisión de la señal DVB-T.
Documentar.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
10
CCAAPPÍÍTTUULLOO 11:: TTEELLEEVVIISSIIÓÓNN IINNTTEERRAACCTTIIVVAA
11..11.. IInnttrroodduucccciióónn aa llooss sseerrvviicciiooss iinntteerraaccttiivvooss
El teletexto se puede considerar como un servicio interactivo que ya se
ofrecía con la televisión analógica.
En la televisión digital tuvo comienzo la televisión interactiva (TVi) con las
Smart TV, que son capaces de conectarse a internet y permitir descargar Apps.
Actualmente, la TVi ofrece al usuario disfrutar de contenidos y servicios
adicionales con la posibilidad de decidir si quiere verlos o no.
Se define interactividad como la capacidad de ofrecer contenidos
adicionales a los programas de televisión, permitiendo al usuario ver informaciones
asociadas al contenido que se emite e incluso participar en ellos con el mando a
distancia, es decir, permite al usuario la posibilidad de personalizar el contenido
que muestra su televisión. [3]
Según [3], se distinguen dos escenarios de interactividad:
Interactividad local:
El usuario interactúa con la información que esta almacenada
en el receptor pudiendo acceder a contenidos interactivos, pero no
enviar datos de vuelta.
Interactividad remota:
El usuario interactúa con un proveedor de servicios exterior, al
que se conecta mediante un canal de retorno (canal bidireccional). La
interactividad con canal de retorno permite no solo ver contenidos
adicionales sino también enviar respuestas por parte de los usuarios e
incluso comunicarse con otros usuarios (participar en concurso, votar,
enviar mensajes, etc.).
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
11
Los servicios interactivos se pueden agrupar en tres categorías, según [3]:
Servicios de información:
Ofrecen una información independiente del programa que se
está emitiendo.
Servicios relacionados con la programación:
Complementan el programa que se está emitiendo con
contenido adicional.
Servicios transaccionales:
Permiten enviar y recibir información de forma personalizada y
exclusiva.
Los servicios interactivos se implementan por medio de aplicaciones
interactivas, que se definen como programas adicionales a los contenidos de
televisión a los que puede accederse y puede ejecutar un descodificador interactivo.
El usario decide si quiere ver o no la aplicaciones interactivas pulsando algun botón
del mando a distancia cuando se muestra el menú interactivo que indica que esta
disponible una o varias aplicaciones interactivas. [3]
Según [3], las aplicaciones interactivas se clasifican en función del
servicio que ofrecen:
Servicios públicos:
- Servicios de información (tiempo, teléfonos de interés, etc.)
- Servicios avanzados (cita en servicios sanitarios, gestión de
impuestos, etc.)
Servicios comerciales o de entretenimiento:
- Concursos, votaciones, compra de entadas a eventos…
- Informaciones sobre los personajes de los programas, pueden ser
independientes del contenido o integradas y sincronizas con el
mismo.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
12
11..22.. CCoommppaarraattiivvaass tteeccnnoollooggííaass iinntteerraaccttiivvaass
La primera forma de interacción la tuvieron las televisiones inteligentes,
Smart TV, que se centran en los medios interactivos en línea, en la televisión
conectada a Internet y en otros servicios como televisión a la carta. El principal
problema es que se basa en un modelo cerrado de aplicación donde cada marca es
la que crea la aplicación.
Por ello surgió la televisión híbrida, que es una especificación de televisión
interactiva que integra TDT e Internet ofreciéndole al usuario: televisión a la carta
desde el canal de TDT, interactividad, más información sobre la programación, etc.
Para ello se necesitan sistemas intermediarios o middleware y una API:
Middleware o lógica de intercambio de información entre
aplicaciones (interlogical):
"Un middleware es un software que asiste a una aplicación para
interactuar o comunicarse con otras aplicaciones, o paquetes de
programas, redes, hardware y/o sistemas operativos. El middleware
simplifica el trabajo de los programadores en la compleja tarea de
generar las conexiones y sincronizaciones que son necesarias en los
sistemas distribuidos" [4], esto mejora la calidad del servicio, la
seguridad, etc. El middleware proporciona una API para facilitar la
programación y el manejo de aplicaciones distribuidas. [4]
API (Interfaz de Programación de Aplicaciones – Application
Programming Interface):
"Las API son conjuntos de herramientas, definiciones y
protocolos para diseñar software de aplicaciones que permiten que un
servicio se comunique con otros servicios sin necesidad de saber cómo
están implementados." [5]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
13
Los estándares competidores en España para impulsar la televisión híbrida
interactiva son MHP y HbbTV:
MHP (Plataforma Multimedia para el Hogar - Multimedia Home
Platform):
MHP fue el primer estándar abierto de middleware,
desarrollado por DVB y estandarizado por la ETSI. MHP-DVB utiliza
el lenguaje de programación Java para sus aplicaciones y define la
plataforma DVB-J, basada en la Máquina Virtual de Java (JVM), que
es la principal característica de la que tendrían que disponer los
terminales MHP, pero por su complejidad no existen apenas
aplicaciones. [6]
MHP fue un intento fallido por lo que se comenzó a desarrollar
otros estándares como es HbbTV. A pesar de esto, MHP aún se sigue
utilizando en países de la Unión Europea como es Italia.
HbbTV (Hybrid Broadcast Broadband TV):
HbbTV fue una iniciativa europea para crear una plataforma de
tecnología abierta y neutral para las televisiones híbridas. Proporciona
un escenario técnico uniforme que conecta los servicios y funciones de
Internet con los de la radiodifusión utilizando tecnologías HTML. [7]
HbbTV tiene mayor aceptación en el mercado ya que dispone
de un mayor número de aplicaciones y servicios híbridos, por su
flexibilidad, las bases sobre estándares existentes y tecnologías web y
el apoyo de grupos de la industria, como la EBU (European
Broadcasting Union - Unión Europea de Radiodifusión) [8], que es un
consorcio formado por cadenas de televisión y fabricantes de equipos
para establecer un formato estándar que ofrezca contenido online
combinado con la programación.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
14
11..33.. HHbbbbTTVV ((HHyybbrriidd BBrrooaaddccaasstt BBrrooaaddbbaanndd TTVV))
El consorcio de la HbbTV es una iniciativa lanzada en 2009 por EBU con el
fin de crear una norma mundial para servicios de entretenimiento híbrido. En 2010
fue aprobada la versión 1.1.1 por la ETSI como ETSI TS 102 706 (2010-06). En
2011 comenzaron las primeras pruebas piloto en España y en 2012 se publicó la
versión 1.5, incorporando la compatibilidad con el estándar para streaming MPEG
DASH. La última versión 2.0.2 fue publicada el 16 de Febrero de 2018. [9]
Figura 1. Logo HbbTV. [10]
En España, en 2013, fue cuando se produjo el lanzamiento de la aplicación
HbbTV "Botón Rojo" de la Red de Televisión Española (RTVE), ofreciendo a sus
usuarios servicios de televisión a la carta donde se encuentra toda su programación.
Figura 2. Botón rojo RTVE. [11]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
15
Actualmente, ya lo usan también Atresmedia y Mediaset España a través de
la plataforma conjunta LovesTV.
Figura 3. LovesTV España. [12]
El terminal HbbTV está basado en la Web Hybrid Broadcast Broadband y
proporciona la descarga y ejecución de aplicaciones que se definen como una
colección de documentos que constituyen un servicio mejorado o interactivo
independiente.
Según [13], HbbTV está diseñada para terminales híbridos que tienen la
capacidad de conectarse a dos redes en paralelo, es decir, combina los servicios de
radiodifusión (broadcast) e Internet (broadband), que se definen:
Broadcast:
Por la red DVB del terminal híbrido, sus funciones:
o El terminar recibe datos de aplicación y eventos de transmisión
mediante datos AIT.
o Para la transmisión se utiliza carrusel de objetos DSM-CC.
o El administrador de aplicaciones evalúa el AIT para controlar el
ciclo de vida de una aplicación interactiva.
o El navegador es responsable de presentar y ejecutar una
aplicación interactiva.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
16
o Recepción de las señales de televisión, radio y servicios de
datos.
o Señalización y transporte de aplicaciones broadcast-related.
o Sincronización de las aplicaciones interactivas con los servicios
de TV, radio y datos asociados.
Broadband:
Conexión a Internet por una interfaz de banda ancha, sus funciones:
o Transporte de servicios bajo demanda.
o Comunicación bidireccional entre las aplicaciones y los
servidores.
o Transporte de aplicaciones broascast-releated y broadcast-
independent y sus datos asociados.
La estructura de cómo funciona la comunicación de un terminal híbrido
HbbTV se muestra en el siguiente figura.
Figura 4. Arquitectura de un sistema de Televisión Híbrida. [13]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
17
11..33..11.. TTiippooss ddee aapplliiccaacciioonneess
Broadcast-independent:
Son aplicaciones independientes de la difusión, es decir, no
están asociadas a ningún servicio de difusión. No están señalizadas o
están señalizadas con un archivo XML AIT que será descargado por
HTTP. Se descargan y se acceden a todos sus datos a través de vía
broadband. [13]
Broadcast-related:
Son aplicaciones relacionadas con la difusión, es decir, están
asociadas con uno o más servicios de difusión o uno o más eventos
dentro de un servicio que puede iniciarse automáticamente
("AUTOSTART") o por acción del usuario ("PRESENT"). Van
señalizadas en la tabla AIT del canal broadcast y siguen ciclos de vida.
Se descargan y se acceden a todos sus datos por vía broadband o
broadcast. [13]
Se puede considerar un caso típico de uso de la tecnología
HbbTV cuando la emisora pone a disposición del usuario una
"aplicación relacionada con la transmisión" (aplicación interactiva), el
usuario observará una "llamada a la acción" en alguna parte de la
pantalla (por ejemplo, un botón rojo) informando de que la aplicación
se mostrará cuando se presione ese botón. [10]
Figura 5. Servicio con aplicación interactiva "Botón Rojo". [13]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
18
11..33..22.. EEnnttrraaddaa ddeell uussuurraarriioo KKeeyy EEvveennttss
El usuario controla las aplicaciones interactivas utilizando un mando
a distancia o un dispositivo de entrada alternativo. La siguiente tabla
enumera los botones o eventos clave (Key Events) para el usuario final en el
uso de aplicaciones interactivas:
Tabla 1. Botones de control remoto (Key Events). [13]
Una aplicación broadcast-independent se inicia con el botón
WEBTV o un botón compatible y finaliza con el botón EXIT.
El botón rojo y EXIT son botones necesarios para las aplicaciones
del tipo broadcast-related.
El botón rojo muestra u oculta una aplicación de inicio
automático "AUTOSTART".
El botón EXIT finaliza la aplicación y regresa al último servicio
de difusión seleccionado.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
19
11..33..33.. PPaannttaallllaa aaccoommppaaññaannttee
HbbTV también posibilita la comunicación multidispositivo, donde
hay un dispositivo principal denominado Main Screen (MS) y uno (o varios)
dispositivos secundarios como puede ser un dispositivo móvil iOS o
Android denominado Companion Screen (CS) o pantalla acompañante.
Todos los dispositivos deben estar conectados a la misma red local. El MS
consume contenidos MPEG2-TS recibidos vía broadcast (DVB), sobre un
evento específico, en una TV principal conectada (terminal híbrido). Este
flujo broadcast, además, contiene información insertada (metadatos) que
permite que los CS activos puedan consumir contenidos multimedia
adicionales relacionados distribuidos vía broadband (DASH). [14]
Figura 6. HbbTV combinada con Companion Screen. [14]
11..33..44.. TTrraannssppoorrttee ddee llaass aapplliiccaacciioonneess
La aplicación se envía en la tabla AIT (incluida en las tablas PSI/SI)
y es el receptor quien tiene que descargase la aplicación mediante dos
procedimientos:
HTTP sobre TLS a traves de banda ancha.
El terminal realizará una solicitud HTTP GET para
descargar el paquete de aplicación cifrado desde la URI
definida en el "location descriptor" de la tabla AIT. [15]
Resumiendo, la aplicación se descarga desde un servidor
mediante la URI indicada en la tabla AIT.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
20
Carrusel de objetos DSM-CC sobre emisión.
El terminal usará "simple application location
descriptor" en la tabla AIT para descargar el paquete de la
aplicación cifrada. Una vez descargado el terminal lo descifrará
y verificará. Si no se pude acceder al objeto DSM-CC el
terminal debe continuar intentando realizar la descarga. [15]
Resumiendo, la aplicación va incluida en la emisión
pero tiene que ser indicada en la tabla AIT para que el terminal
la pueda descargar.
11..44.. EEssppeecciiffiiccaacciioonneess ddee HHbbbbTTVV
HbbTV se basa elementos de estándares existentes y tecnologías web que
incluye OIPF (Open IPTV Forum), CEA-2014 (CE-HTML), W3C (HTML, CSS,
etc.), DVB Application Signalling Specification (ETSI TS 102 809) y DASH para
trasmitir aplicaciones y servicios en entornos híbridos. [10]
Figura 7. Relación de HbbTV con otros estándares. [13]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
21
11..44..11.. OOIIPPFF ((OOppeenn IIPPTTVV FFoorruumm))
Open IPTV Forum es una asociación creada en el 2007 por el sector
a la televisión por IP (IPTV). OIPF y HbbTV anunciaron una iniciativa
conjunta para pruebas y certificación en 2014 y terminaron fusionándose en
Junio de 2014. [16]
OIPF pretende dar soporte a los proveedores de sistemas IPTV para
conseguir un mercado global, proporcionando especificaciones, perfiles,
pruebas, ensayos y certificaciones para promover esta tecnología. [17]
OIPF establece los formatos de audio y vídeo, proporciona APIs de
JavaScript para entornos de televisión y modifica el CE-HTML. [18]
11..44..22.. CCEEAA--22001144:: CCEE--HHTTMMLL
CEA-2014 está basado en web para las interfaces de usuario remoto
en las redes UPnP3 e Internet, define los mecanismos necesarios para
permitir que una interfaz de usuario se visualice y controle remotamente
mediante dispositivos o puntos de control. [19]
CE-HTML es parte del estándar CEA-2014 y es un estándar basado
en W3C. Es una definición del lenguaje HTML para dispositivos de
electrónica de consumo que usa: ECMAScript, XHTML, CCS, AJAX
(XMLhttpRequest) y DOM 2.0, define las funciones básicas que debe
soportar el dispositivo remoto sobre el que se ejecutan las aplicaciones. [20]
11..44..33.. WW33CC:: XXHHTTMMLL,, CCCCSS yy JJaavvaaSSccrriipptt
W3C (World Wide Consortium) es una organización internacional
que desarrolla las especificaciones técnicas y recomendaciones para el
desarrollo web. Los estándares W3C definen una plataforma web abierta
para el desarrollo de aplicaciones, son lenguajes web, protocolos, pautas y
tecnologías creadas con la finalidad de que la web alcance su máximo
potencial. [21]
3 UPnP: Es un conjunto de protocolos de comunicación que permite a periféricos en red descubrir la
presencia de otros dispositivos en red y establecer servicios de red de comunicación, compartiendo datos y
entretenimiento. [19]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
22
Una Web se estructura: HTML (contenidos y estructura), CSS
(apariencia y presentación) y JavaScript (interactividad de la página). Estos
documentos deben ser archivos de texto sin formato para que los servidores
web los entiendan.
Figura 8. Estándares web de W3C. [21]
HTML (Hyper Text Markup Languaje):
HTML define una estructura básica y un código para el contenido de
páginas web (texto, imágenes, formularios, publicación de documentos,
etc.). HTML se escribe utilizando etiquetas que permiten diferenciar los
diferentes elementos de forma individual o colectiva al código donde se
definen.
Al diseñar un documento Web, se indica un código denominado
DOCTYPE que se sitúa al inicio del documento HTML o XHTML, al
cargar los documentos los terminales deben usar <!DOCTYPE html…>
para determinar el tipo de documentos al que están accediendo. [21]
CSS (Cascading Style Sheets - Hojas de estilo en cascada):
CSS es el lenguaje de composición estándar para la Web que define
la apariencia (colores, diseño, fuentes, etc.) de los documentos en HTML o
derivados. Se puede adjuntar en los archivos HTML o pueden ir
independientes.
En CE-HTML se habla de CSS TV Profile 1.0 que son hojas de
estilo configuradas para cumplir un perfil de conformidad para dispositivos
de TV, identificando un conjunto mínimo de propiedades, valores,
selectores y reglas en cascada. [23]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
23
JavaScript y AJAX:
JavaScript es un lenguaje de programación interpretado, dialecto del
estándar ECMAScript, para crear páginas web dinámicas (efectos,
animaciones, etc). JavaScript se define como orientado a objetos, basado en
prototipos, imperativo, débilmente tipado y dinámico. Se utiliza
principalmente del lado del cliente implementado como parte de un
navegador web permitiendo mejoras en la interfaz de usuario y páginas web
dinámicas. También se usa en aplicaciones externas a la web ya que se
compone de programas escritos (script) que se pueden ejecutar directamente
en un navegador sin necesidad de procesos intermedios. [24]
AJAX es una técnica de desarrollo web para crear aplicaciones
interactivas que se ejecutan en el cliente y mediante una comunicación
asíncrona se comunican con el servidor en segundo plano sin intervenir en
lo que se emite. Para la llamada a funciones de AJAX se usa JavaScript y el
acceso a los datos se realiza mediante el objeto de JavaScript
XMLHttpRequest. [25]
11..44..44.. DDVVBB ((DDiiggiittaall VVííddeeoo BBrrooaaddccaassttiinngg))
DVB es el estándar para la transmisión de televisión digital terrestre,
satélite, cable, etc. Todos los datos se transmiten en flujos de transporte
MPEG-2 (Transport Stream MPEG-2).
DVB-T es el estándar para transmisión terrestre y se estudiará con
más detalle en el Capítulo 3.
11..44..55.. MMPPEEGG DDAASSHH
DASH (Dynamic Adaptative Streaming over HTTP – Transmisión
Adaptativa Dinámica a través de HTTP) es un estándar introducido por
MPEG para solucionar las complejidades de la distribución de contenido a
múltiples dispositivos con un estándar común unificado. [26]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
24
MPEG-DASH es una técnica de transmisión donde el cliente solicita
información a través del protocolo HTTP al servidor web.
La siguiente figura muestra un escenario de transmisor entre un
servidor HTTP y un cliente DASH.
Figura 9. Estándar MPEG DASH. [27]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
25
CCAAPPÍÍTTUULLOO 22:: DDEESSAARRRROOLLLLOO DDEE LLAA AAPPLLIICCAACCIIÓÓNN
IINNTTEERRAACCTTIIVVAA EENN HHbbbbTTVV
El estándar HbbTV define una plataforma de presentación, señalización y
transporte de aplicaciones interactivas ejecutada en terminales híbridos mediante una
conexión a un canal broadcast (por DVB) y una conexión broadband para Internet.
Se va a estudiar el desarrollo técnico de HbbTV v2.0.2 Specification - ETSI TS 102
796 v1.4.1. [13] para el desarrollo de aplicaciones broadcast-related HbbTV mediante
emisión broadcast DVB.
22..11.. IIddeennttiiffiiccaacciióónn ddee uunnaa aapplliiccaacciióónn iinntteerraaccttiivvaa eenn HHbbbbTTVV
22..11..11.. DDOOCCTTYYPPEE
Toda aplicación HbbTV tiene que incluir en todos sus documentos
HTML y XHTML la correcta identificación de la aplicación, mediante
DOCTYPE definido para HTML5 según el perfil de OIPF Web Standards
TV Profile y que los terminales deberán soportar:
<!DOCTYPE html PUBLIC "-//HbbTV//1.1.1//EN"
"http://www.hbbtv.org/dtd/HbbTV-1.1.1.dtd">
22..11..22.. MMIIMMEE
Todos los documentos de una aplicación HbbTV se deben servir con
uno de los MIME definidos para HTML5. Los terminales deberán soportar
el siguiente MIME: application/vnd.hbbtv.xhtml+xml
Se incluye en <head> del documento HTML.
<head>
<meta http-equiv="content-type"
content="application/vnd.hbbtv.xhtml+xml; charset=utf-8"/>
…
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
26
22..22.. CCiicclloo ddee vviiddaa ddee llaa aapplliiccaacciióónn
Según [13], el ciclo de vida de una aplicación se puede llevar a cabo de las
siguientes formas:
Una aplicación puede iniciarse:
Por el usuario final mediante el uso de algún botón del mando a
distancia o un menú equivalente proporcionado por el terminal.
En respuesta a la señalización en un servicio de difusión, por ejemplo,
iniciar automáticamente una aplicación broadcast-related
AUTOSTART.
Por una aplicación ya en ejecución, a través del método JavaScript
createApplication().
Por una pantalla complementaria.
Una aplicación puede detenerse:
En respuesta a los cambios de señalización (AIT).
Llamando a Application.destroyApplication().
Por el terminal, bajo ciertas condiciones de error.
Directamente por el usuario final manualmente pulsando el mecanismo
"EXIT o botón similar".
En el cuerpo de la aplicación se tienen que definir dos objetos específicos de
HbbTV y que un navegador web estándar no sabe interpretar, como se indica en
[28]:
application/oipfApplicationManager:
Es el objeto principal de una aplicación HbbTV, controla el
ciclo de vida de la aplicación:
<object type="application/oipfApplicationManager"
id="appMgr"></object>
El objeto se crea en CE-HTML, pero se gestiona en JavaScript
mediante funciones para controlar el ciclo de vida aplicación.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
27
Si se quieren crear aplicaciones hijas o hermanas y añadirlas al
árbol de aplicaciones se usa el siguiente método:
createApplication() (String uri, Boolean createChild)
Recibe como parámetros la URI de la aplicación a crear y un
valor booleano que será true si es una aplicación hija (es un nodo
secundario de la aplicación principal) y false si es una aplicación
hermana (se crea una nueva aplicación adicional a la principal). Si
termina la aplicación principal todas sus aplicaciones hijas terminarán
también.
Una vez creada la aplicación se muestra mediante el método
show(). Para esconder la aplicación se usa el método hide() y para
salir de ella se usa el método destroyApplication(), quitándola del
árbol de aplicaciones4.
application/oipfApplicationConfiguration:
Permite cambiar los parámetros de cada usuario y dispositivo
(idioma audio y subtítulos, acceso a EPG, relación de aspecto, etc.).
<object type="application/oipfConfiguration"
id="appConfig"> </object>
Según [28]:
Las aplicaciones que se crean a través de una notificación externa y no a
través de createApplication se deben crear como aplicaciones hijas del nodo raíz.
Las aplicaciones broadcast-independent se crean inicialmente como
visibles y no tienen que llamar a ningún método.
Las aplicaciones broadcast-related y las relacionadas con el proveedor
de servicios se crean inicialmente como invisibles. Una vez cargadas (a
través de un controlador de eventos onload), la aplicación llama a
show() de su objeto de aplicación principal (oipfApplicationManager).
4 Árbol de aplicaciones: Cuando se admite la ejecución simultánea de más de una aplicación, las aplicaciones
se organizan en una estructura de árbol.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
28
Se tiene que establecer el color de fondo de la aplicación como:
body{
background-color: transparent;
}
permitiendo que el vídeo subyacente se muestre para áreas de la pantalla
que se vean ocultas por la superposición no transparente de hijos del
elemento [13] [28].
Para acceder a la URL de la aplicación HbbTV se usa la
propiedad window.location.href o window.location.replace
[13].
22..33.. EEvveenntt lliisstteenneerrss
Las aplicaciones que usan DOM manejadores de evento (event handlers)
deben llamar al método addEventListener() en el objeto
Application/oipfApplicationManager, mediante los siguientes eventos:
keypress: Se genera cuando una tecla ha sido presionada por el
usuario o se mantiene presionada durante una repetición de tecla.
keyup: Se genera cuando una tecla presionada por el usuario ha sido
liberada.
keydown: Se genera cuando el usuario pulsa una tecla.
Un ejemplo de uso de addEventListener() es la creación de la pulsación del
"Botón rojo" para acceder a la aplicación HbbTV:
document.addEventListener ("keydown", function (e){
switch(e.keyCode){
case VK_RED:
document.getElementaryByID("boton_rojo".focus();
window.location.replace("app.html");
break;
}
}, false);
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
29
22..44.. KKeeyy eevveennttss
Se estable una clase de objetos que permite a las aplicaciones definir que
eventos clave (key events) quiere recibir, denominada keyset.
Para establecer los key event se tiene que usar el método setValue, al cual se
le pasa el valor de las teclas (valor) que se desea recibir, por ejemplo:
App.privateData.keyset.setValue(valor);
A la aplicación se le pasa los siguientes valores de las teclas:
valor=0x1+0x2+0x4+0x8+0x10+0x20+0x40+0x80+0x100;
Las aplicaciones AUTOSTART se activan por el terminal cuando se lanzan,
en cambio las aplicaciones PRESENT cuando reciben un key events.
Se definen las siguientes constantes y su identificación con el mando a
distancia a la hora de programar:
Tabla 2. Key events. [28]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
30
22..55.. SSeeññaalliizzaacciióónn ddee aapplliiccaacciioonneess HHbbbbTTVV bbrrooaaddccaasstt
Los terminales deben admitir subtablas AIT de las tablas PSI/SI para
aplicaciones interactivas HbbTV:
Application types application_type = 0x0010 (HbbTV)
Application control
codes
0x01 AUTOSTARTT
0x02 PRESENT
0x04 KILL
0x07 DISABLED
Platform profile
application_profile = 0x0000 perfil básico
0x0001 función de descarga de contenido A/V
0x0002 Característica PVR
Campos de la versión:
versión_major = 1
versión_minor = 1
versión_micro = 1
Application visibility VISIBLE_ALL
Application priority
Program specific
information
Application
Information Table
Se utiliza un máximo de un PID por servicio para llevar la
subtabla AIT definida por el tipo de aplicación HbbTV.
Se transmitirá al menos 1 vez por segundo.
Application
signalling descriptor
Se señaliza un flujo PMT para un descriptor
application_signalling_descriptor para el flujo que
contiene el AIT para la aplicación HbbTV incluyendo
application_type = 0x0010
Data broadcast id
descriptor
El valor para el campo data_broadcast_id del
data_broadcast_id_descriptor para los carruseles HbbTV
será 0x0123.
Application
descriptor
Simple application
location descriptor
Transport protocol
descriptor
protocol_id
0x0001 Carrusel de objetos sobre canal broadcast.
0x0003 HTTP sobre canal broadband.
Tabla 3. Funciones de señalización de aplicaciones HbbTV. [13]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
31
22..66.. EEnnttoorrnnoo ddee ttrraabbaajjoo
Herramientas para el desarrollo y transmisión de la aplicación interactiva
HbbTV:
- Editor de texto:
Se ha utilizado Sublime Text 3, pero se podría realizar con
cualquier editor de programación, se han creado los diferentes archivos
de código HTML, CSS, JavaScript, etc.
- Emulador:
Con el Emulador Opera TV (existen otros como por ejemplo
FireHbbTV) usado a través de la Máquina Virtual Oracle VM
VirtualBox se comprobará el correcto funcionamiento de la aplicación.
El emulador de Opera TV proporciona un entorno de prueba para
las aplicaciones HbbTV. Funciona como una máquina virtual emulando
el comportamiento de un navegador web en un receptor con HbbTV.
- Servidor Web:
En el servidor web se tiene almacenada la aplicación y para
poder ejecutarla en el emulador. Se ha creado un dominio en vzplanet y
con un cliente FTP (ejemplo FileZilla) se va actualizando el contenido.
- Sistema de difusión DVB-T:
Mediante el sistema de difusión DVB-T creado en el laboratorio
se emite el Transport Stream que se va a generar, el cual incluirá la
aplicación interactiva. El Transport Stream se emite mediante tarjetas
moduladoras y de conversión de señal para poder visualizarlo en el la
televisión.
Se comprueba así la correcta generación del Transport Stream y
el correcto funcionamiento de la aplicación
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
32
22..77.. FFuunncciioonnaammiieennttoo ddee llaa aapplliiccaacciióónn
La aplicación tiene un funcionamiento y una navegación sencilla, todo
mediante los botones de colores y los botones up y down del mando a distancia
para desplazar los scroll de información (más información en ANEXO A).
Figura 10. Diagrama de flujo del funcionamiento de la aplicación. [Edición propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
33
CCAAPPÍÍTTUULLOO 33:: TTEELLEEVVIISSIIÓÓNN DDIIGGIITTAALL TTEERRRREESSTTRREE
33..11.. IInnttrroodduucccciióónn aa llaa TTeelleevviissiióónn DDiiggiittaall TTeerrrreessttrree
La Televisión Digital Terrestre (TDT) aporta muchos beneficios a los
usuarios y a la calidad de la televisión.
La señal de televisión se transmite mediante ondas hertzianas terrestres por
la atmosfera sin necesidad de cable o satélite y se recibe por medio de las antenas
UHF convencionales. [2]
La capacidad del espectro que necesita la Televisión Digital es mucho
menor que el que necesitaba la televisión analógica, permitiendo que la utilización
del espectro radioeléctrico sea mucho más eficiente, dando lugar a un mayor
número de canales de televisión y servicios como radio, teletexto digital, guía
electrónica de programas, servicios interactivos, etc.
La digitalización de la información ofrece una televisión sin ruidos,
interferencias, ni doble imagen permitiendo así la emisión en formato panorámico
16:9. Respecto al sonido, la Televisión Digital da la posibilidad de que los
programas se reciban en estéreo, con sonido envolvente o en múltiples idiomas.
[29]
En transmisión digital, como la señal esta codificada (formato MPEG-2), se
recibe la imagen completa, pero cuando la señal no es suficiente para los
decodificadores se pierde completamente la recepción y se producen fallos
(pixelación o congelamiento). [30]
Una característica importante de la TDT es la transmisión múltiple o
multicasting que permite que el usuario pueda recibir de una misma estación varios
canales al mismo tiempo y por la misma interfaz.
El tipo de Televisión Digital en la que nos centraremos es la Televisión
Interactiva (por DVB-T), en la cual el espectador puede interactuar con el programa
que se está emitiendo si lo desea.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
34
33..22.. EEssttáánnddaarreess ddee TTeelleevviissiióónn DDiiggiittaall
Los estándares desarrollados para la transmisión de Televisión Digital son
los siguientes y así están distribuidos alrededor del mundo:
DVB (Digital Vídeo Broadcasting): Estándar Europeo.
ATSC (Advanced Television Systems Committee): Estándar
Americano.
ISDB (Integrated Services Digital Broadcasting): Estándar Japonés.
DTMB (Digital Terrestrial / Television Multimedia Broadcast): Estándar
Chino.
Figura 11. Estándares de Televisión Digital alrededor del mundo. [31]
Estos estándares de Televisión Digital son incompatibles entre sí, es decir, si
se quiere ofrecer televisión en abierto para todos los lugares del mundo el
transmisor y el receptor tienen que tener el mismo estándar y como se puede
comprobar no es así.
Todos los estándares tienen en común que se basan en el uso de Transport
Stream del tipo MPEG-2 (paquetes de información que contienen vídeo, audio y
datos). Las diferencias entre estándares se deben principalmente al método de
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
35
conversión que transforma el Transport Stream en una señal de radiodifusión y
también al formato de codificación y el formato de audio. [31]
ATSC DVB-T ISDB-T DMB-T
Estándares Americano Europeo Japonés Chino
Interactividad Si Si Si Si
Alta definición Si Si Si Si
Movilidad No Si Si Si
Compresión de
vídeo MPEG-2
MPEG-2
MPEG-4 AVC MPEG-2 MPEG-4 AVC
Compresión de
audio Dolby AC3
MPEG-1 L-II
AC3 MPEG-2 ACC MPEG-4 ACC
Transporte MPEG-2 MPEG-2 MPEG-2 MPEG-2
Modulación 8-VSB COFDM BST-OFDM TDS-OFDM
Tabla 4. Comparativa de estándares de televisión digital. [32]
33..33.. EEssttáánnddaarr EEuurrooppeeoo DDVVBB--TT
El estándar de televisión digital europeo (DVB-T) fue creado por la
organización europea Digital Vídeo Broadcasting (DVB) y establecido por el
European Telecommunications Standards Institute (ETSI) en los años 90, a día de
hoy es el estándar más extendido. [33]
DVB incluye especificaciones sobre aspecto como servicios interactivos
mediante canales de retorno sobre varios medios y protocolos, acceso a contenidos
de pago, etc. [33]
DVB tiene varios estándares:
DVB-T: Estándar para televisión digital terrestre.
DVB-S: Estándar para la transmisión de señal por satélite.
DVB-C: Estándar para la transmisión de señal por cable.
DVB-H: Estándar para la televisión digital terrestre para dispositivos
móviles.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
36
En un sistema DVB la información pasa por una serie de procesos de
codificación, multiplexación y modulación hasta ser transmitida:
Figura 12. Diagrama sistema DVB.
DVB-T transmite información de vídeo, audio y otros datos a través de un
flujo MPEG-2 Transport Stream, utilizando multiplexación COFDM.
El estándar DVB-T ha ido mejorando evolucionando dando lugar a la
segunda generación, DVB-T2, pero no son totalmente compatibles entre ellos.
DVB-T2 ofrece una mejora en la eficiencia, cambio de formato MPEG-4
AVC (H.264), permite modulación 256QAM y más opciones para el intervalo de
guarda. Conclusión, el estándar DVB-T2 puede ofrecer un mayor flujo de datos que
DVB-T y una mayor robustez en la señal. [32]
Tabla 5. Comparativa de DVB-T y DVB-T2. [34]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
37
33..33..11.. CCaarraacctteerrííssttiiccaass ttééccnniiccaass ddeell eessttáánnddaarr DDVVBB--TT
Las señales de vídeo y audio para DVB son comprimidas y
codificadas según la norma MPEG-2.
El estándar DVB-T utiliza modulación COFDM (Coded Orthogonal
Frecuency Division Multiplexing):
COFDM es una técnica de modulación de banda ancha usada para
transmitir información digital. COFDM consiste en dividir la información
en un número de portadoras (diferentes modos de transmisión), 2k (2048
portadoras) o 8k (8192 portadoras), es decir, consiste en dividir los datos en
partes que se envían por separado e insertar bandas de seguridad entre ellos
que permitan a los receptores diferenciar mejor la información de ruido.
[35]
Cada portadora es modulada (QPSK, 16QAM o 64QAM) con una
tasa binaria baja para que el tiempo de símbolo sea mayor que la dispersión
temporal del canal. [35]
Intervalo de guarda de 1/4, 1/8, 1/16 y 1/32 del largo del símbolo.
El DVB-T sistema introduce un intervalo de guarda para protegerse contra
el multitrayecto y evitar la interferencia de intersímbolo. [35]
La transmisión DVB-T de TV digital permite un bitrate según la
modulación, la tasa de código, el intervalo de guarda y en ancho de banda
del canal 6, 7 u 8 MHz (con vídeo a 50-60 Hz):
Tabla 6. Bitrate útil (Mbits/s), canal con ancho de banda 6 MHz. [36]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
38
Tabla 7. Bitrate útil (Mbits/s), canal con ancho de banda 7 MHz. [36]
Tabla 8. Bitrate útil (Mbits/s), canal con ancho de banda 8 MHz. [36]
Dos flujos de datos se modulan en un solo flujo DVB-T. Un flujo
denominado HP (High Priority) está integrado dentro de un flujo LP (Low
Priority). Los receptores con "buenas condiciones" de recepción pueden
recibir ambas transmisiones, mientras que los que tienen condiciones más
deficientes solo pueden recibir la transmisión de HP. [36]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
39
DVB soporta diferentes resoluciones de pantalla y de trama:
Líneas
Verticales Pixeles
Razón de
Aspecto Frecuencia de Tramas
1080 1920 16:9 50P (HDTV)
1080 1920,1440 16:9 , 4:3 25I, 25P (HDTV)
720 1280 16:9, 4:3 25P, 50P (HDTV)
1080 1920,1440 16:9 , 4:3 60I, 30P, 24P (SDTV)
720 1280,960 16:9 , 4:3 60P, 30P, 24P (SDTV)
576 720, 704, 544, 480, 352 16:9 , 4:3 25I, 25P (SDTV)
480 720, 640, 544, 480, 352 16:9 , 4:3 60P, 60I, 30P, 24P (SDTV)
288 352 16:9 , 4:3 25P (SDTV)
240 352 16:9 , 4:3 24P, 30P (SDTV)
Tabla 9. Resolución de pantalla. [37]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
40
CCAAPPÍÍTTUULLOO 44:: TTRRAANNSSPPOORRTT SSTTRREEMM
El estándar DVB se basa en MPEG-2 Transport Stream (TS), se define como un
flujo de transporte de audio, vídeo y datos que al ser multiplexados da lugar a un servicio.
44..11.. MMPPEEGG--22 TTrraannssppoorrtt SSttrreeaamm
MPEG (Moving Picture Expert Group) es un estándar de compresión de
audio y video.
El primer estándar introducido por MPEG fue MPEG-1. MPEG-2 es similar
a MPEG-1, las siguientes tablas muestran una comparativa de los formatos
contenedores de vídeo y audio de MPEG-1 y MPEG-2:
Tabla 10. Comparación MPEG-1 y MPEG-2. [38]
MPEG-2 Transport Stream está especificado en el ISO/IEC 13818-1 y es un
formato estandarizado para la transmisión y almacenamiento de flujos de audio,
vídeo y datos y es utilizado por el sistema de transmisión DVB en la señal de
entrada y salida.
Cuando se genera flujo se pueden obtener dos tipos de formato de señal
multiplex en MPEG-2, según [39]:
Program Stream:
- Es compatible con MPEG-1.
- Se usa en aplicaciones de almacenamiento como DVD.
- Paquetes de longitud variable.
- Contiene solo un canal o programa.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
41
Transport Stream:
- Se usa para la transmisión digital (Broadcasting), es decir, para
enviar los flujos multimedia a través de canales de
comunicación (radiodifusión DVB y redes IP) en forma de
paquetes.
- Paquetes de longitud fija: 188 bytes (4 bytes de cabecera y 184
de carga útil).
- Contiene uno o más canales o programas.
Figura 13. Sistema MPEG-2. Clases de sistema multiplex. [39]
Para que la información contenida en los TS pueda ser recibida
correctamente por los decodificadores se necesita incluir en el TS unas tablas de
datos (tablas PSI/SI5) las cuales posibilitan la sintonización automática de los
mismos, la localización de programas, etc. [40]
5 PSI/SI: Estructura el TS, contiene la información de cada flujo asociado al servicio, etc.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
42
44..22.. TTrraannssppoorrtt SSttrreeaamm
MPEG-2 revolucionó la industria de las telecomunicaciones con el
contenedor Transport Stream (TS) que resultó un paso importante en las
comunicaciones.
Un TS equivale a un stream MPEG-2 que contiene uno o varios servicios
(canales de televisión en DVB). Un servicio se define mediante tablas PSI/SI que
apuntan a los flujos elementales (audio, vídeo, datos, aplicaciones…) que se
multiplexan al TS.
44..22..11.. CCoommppoossiicciióónn TTSS
Un Transport Stream (TS) es un protocolo de comunicación
específico del estándar MPEG-2 para audio, vídeo y otros datos. Cada
servicio de televisión tiene un flujo de datos digitales de audio y vídeo, los
cuales se comprimen independientemente formando una "corriente
elemental" (ES - Elementary Stream). Cada ES se encapsulan en paquetes
de bytes dando lugar a PES (Packetized Elementary Stream) independientes.
Cada uno de los PES de audio y vídeo junto con otros datos de un servicio,
tablas PSI/SI y/o carruseles se multiplexan en un solo tren binario
convirtiéndose en un TS. [42]
Figura 14. Composición de un TS. [39]
Según [43], la multiplexación de un TS consiste en numerosos
paquetes PES de longitud constante 188 bytes, de los cuales 4 bytes son
para la cabecera y 184 bytes para carga útil (payload):
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
43
La cabecera contiene información importante para la transmisión y
sincronización.
- Byte de sincronización: El primer byte de la cabecera se
denomina "Sync Byte" y siempre tiene un valor de 0x47. Sync
byte aparece siempre cada 188 bytes dentro del TS lo que facilita
a los decodificadores encontrar el comienzo de cada paquete de
transporte y permite la sincronización de la transmisión.
- Transport error indicator: Indica si el paquete tiene errores
durante la transmisión. Tiene valor 1 si al menos 1 bits es
erróneo y 0 en caso contrario.
- Payload Unit Start Indicators: Se pone a 1 para indicar el
primer byte del payload del paquete de transporte que es el
primer byte de un PES.
- PID (Packet Identifier): Un TS puede contener muchos
programas diferentes por lo que se emplea el campo PID para
poder distinguir los paquetes de transporte asociados a un
determinado flujo elemental.
- Transport priority: Tiene valor un 1 cuando el paquete que
transporta tiene mayor prioridad que los demás paquetes con un
mismo PID.
- Trasnport scrambling control: indica si el contenido del
paquete está cifrado.
- Adaptation field control: Dentro de este campo se encuentra el
PCR (Program Clock Reference) que sirve para que exista una
correcta sincronización en la decodificación.
- Continuity counter: Es un contador que se incrementa por cada
paquete que se envía con igual PID.
La carga útil (payload) contiene el contenido de audio, vídeo o datos
de servicio que componen el TS.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
44
La siguiente figura muestra la estructura de la cabecera de un TS y la carga
útil:
Figura 15. Estructura de la cabecera de un TS. [43]
44..33.. PPaauuttaass ddee iimmpplleemmeennttaacciióónn ppaarraa llaa ddiiffuussiióónn ddee ddaattooss
La siguiente figura muestra una visión general sobre el uso de la
especificación de datos DVB:
Figura 16. Transmisión de datos dentro de un MPEG-TS [44].
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
45
Según [44], la información de datos puede ser transportada dentro de un
MPEG-2 Transport Stream (TS) por medio de áreas de aplicación:
- Data piping (Canalización de datos).
- Data streaming (Transmisión de datos).
- Multiprotocol encapsulation (Encapsulación multiprotocolo).
- Data carousel (Carrusel de datos).
Este carrusel es utilizado por la especificación de protocolos independientes
de red para servicios interactivos (Network Independent Protocols for Interactive
Services ETS 300 802). [44]
DVB permite registrar implementaciones privadas para servicios de
transmisión de datos (Anexo A de EN 301 192). [44]
Como se ha dicho anteriormente, ISO ha estandarizado MPEG-2 TS en
ISO/IEC 13818-1 y también ha estandarizado DSM-CC en ISO/IEC 13818-6. [44]
DVB ha especificado, dentro de la especificación de transmisión de datos
EN 301 192, la canalización de datos DVB, la transmisión de datos DVB, la
encapsulación multiprotocolo DVB, el carrusel de datos DVB y el carrusel de
objetos DVB. La especificación de transmisión de datos se basa en los paquetes
PES definidos en MPEG-2 ISO/IEC 13818-1. [44]
Todas las especificaciones de encapsulación multiprotocolo, carrusel de
datos y área de aplicación del carrusel de objetos se construyen utilizando DSM-CC
de MPEG-2 ISO/IEC 13818-6. Se basa en secciones privadas MPEG-2 como se
define en MPEG-2 ISO/IEC 13818-1. DVB ha agregado información específica
para que funcione en el entorno DVB, especialmente junto con la especificación de
información de servicio (SI) EN 300 468. [44]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
46
44..44.. DDSSMM--CCCC
En el estándar MPEG-2 ISO/IEC 13818-6 están las especificaciones de
DSM-CC (Digital Storage Media Command and Control – Medios de
almacenamiento digital: Comando y control) que es un estándar desarrollado para
prestación de servicios de banda ancha multimedia.
DSM-CC es independiente de la capa de transporte y el cliente y el servidor
utilizan un kit de herramientas que facilita la transmisión y el control de flujos de
transporte MPEG. [44]
En DVB los carruseles de datos y objetos ofrecen funcionalidad
comparable. Mientras que el carrusel de datos admite solo la transmisión cíclica de
archivos, el carrusel de objetos también puede llevar directorios, flujos de archivos
y otros eventos, resumidos como objetos.
Los directorios proporcionan una lista de objetos asociados comparables a
los directorios del ordenador. En caso de que la información tenga que ser unida a
un flujo específico en la transmisión, se puede transmitir una referencia en el
carrusel. El transporte de objetos es similar al que proporciona el carrusel de datos.
44..44..11.. DDaattaa ccaarroouusseell
El carrusel de datos (data carousel) es un mecanismo de transporte
que permite a un servidor presentar un conjunto de módulos de datos
distintos a un decodificador al repetir cíclicamente el contenido del carrusel
una o más veces. [44]
El uso de transactionId en el carrusel de datos DVB se hereda de su
uso como se define en la especificación DSM-CC y tiene una función doble:
proporciona mecanismos de identificación y control de versiones para los
mensajes de control de descarga, es decir, DownloadInfoIndication y
mensajes DownloadServerInitiate. El transactionId debe identificar de forma
única el mensaje de control de descarga dentro de un carrusel de datos. [44]
Si se hace referencia al transactionId de cualquier mensaje de control
en el campo data_broadcast_descriptor en SI (EN 300 468), se puede utilizar
el valor 0xFFFFFFFF para indicar que cualquier mensaje de control de nivel
superior es válido. [44]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
47
La encapsulación de los mensajes de control de descarga dentro de
MPEG-2 Transport Stream se define en la especificación DSM-CC. [44]
La siguiente tabla muestra la codificación de los campos de
encabezado de sección para los diferentes tipos de mensajes.
Tabla 11. Codificación de los campos de sección DSM-CC. [44]
Los mensajes DSI tienen un valor de 0x0000 o 0x0001 para los dos
bytes LSB6. Esto permite a los receptores arrancar el carrusel configurando
los filtros de sección para table_id = 0x3B (DownloadControlMessages) y
table_id_extension = 0x0000 o 0x0001. Una vez que se haya adquirido el
mensaje DSI, el receptor puede configurar el filtro de sección para escuchar
el otro valor de los dos bytes LSB del transaction_id. Esto activará el
receptor inmediatamente una vez que el contenido del carrusel se esté
actualizando. [44]
44..44..22.. OObbjjeecctt ccaarroouusseell
Un carrusel de objetos DSM-CC facilita la transmisión de un grupo
estructurado de objetos desde un servidor de difusión a receptores (Clientes)
de difusión utilizando objetos de directorio, objetos de archivo y objetos de
secuencia.
El carrusel de objetos forma parte de un servicio DVB como se
muestra en la siguiente figura.
6 LSB (Least Significant Bit – Bit menos significativo)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
48
Figura 17. Ejemplo de carrusel de objetos en servicios DVB. [44]
El directorio y el contenido (implementaciones de objetos) se
encuentran en el servidor. El servidor inserta repetidamente los objetos
mencionados en el flujo de transporte MPEG-2 compatible con DVB
utilizando el protocolo de carrusel de objetos. Los objetos en el carrusel
DSM-CC ofrecen a los Clientes una forma de acceder a las aplicaciones y al
contenido utilizado por estas aplicaciones, más o menos como si hubiera
una conexión interactiva con un servidor. [44]
La especificación de carrusel de objetos es independiente de la
plataforma y es compatible con la especificación DSM-CC User-to-User
(Usuario a Usuario – U-U) ISO / IEC 13818-6 y con el marco de ORB7.
En el entorno del sistema de U-U DSM-CC, un grupo estructurada
de objetos se denomina Service Domain (dominio de servicio). Service
Domain tiene una Service Gateway (puerta de enlace de servicio) que es el
directorio de nivel superior del grupo estructurado de objetos. Una Service
Gateway puede ubicarse en un servidor en una red interactiva, así como en
un servidor en una red de difusión. En este último caso, los objetos dentro
del Service Domain se transmiten por medio de un carrusel de objetos. [44]
7 ORB (Object Request Broker – Agente de Solicitud de Objetos)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
49
La especificación de carrusel de objetos en ISO / IEC 13818-6
DSMCC es independiente de la red y es aplicable a cualquier tipo de red de
transmisión. La independencia de la red se logra usando el concepto Taps.
[44]
Los Taps son identificadores que se refieren a una o más
transmisiones en la red de transmisión, es decir, facilita una referencia a una
conexión de red particular mediante una etiqueta de asociación (association
tag). [44]
Los clientes deben asociar los Taps para transmitir las conexiones de
red, por tanto, los clientes necesitan unas tablas de asociación que
establezcan las relaciones entre los Taps y las conexiones de la red de
transmisión. [44]
DSM-CC ha definido Taps que se utilizan de manera similar a las
etiquetas de los componentes en DVB-SI. Un Tap consiste, según [44], en:
id: Este campo es para uso privativo (se establecerá en 0 si no
se utiliza).
use: Campo que indica el uso del Tap.
association_tag (etiqueta de asociación); para asociar el Tap
con un Elementary Stream particular.
selector: Para seleccionar los datos asociados en el Elementary
Stream. La presencia del selector dependerá del campo de uso y
es opcional.
44..55.. TTaabbllaass PPSSII//SSII
PSI (Program Specific Information - Información Específica de Programas):
Definidas por MPEG-2 para la capa de sistema. MPEG-PSI define las tablas
que constituyen la información específica de los programas, según [45]:
PAT (Program Association Table – Tabla de Asociación de Programa)
PMT (Program Map Table – Tabla de Mapa de Programa)
CAT (Conditional Access Table – Tabla de Acceso Conditional)
TSDT (Transport Stream Description Table – Tabla de Descripción de
Flujo de Transporte)
NIT (Network Information Table – Tabla de Información de Red)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
50
Cada tabla está formada por paquetes de datos que son reconocidos por un
identificador de paquete (PID), como se muestra en la siguiente tabla:
Tabla 12. Tablas PSI. [45]
SI (Service Information – Información del Servicio):
Definidas por DVB y relativas al flujo de transporte, funcionan como
complemento de las tablas PSI y proporcionan al usuario y al decodificador
facilidades para navegar a través de la cadena de servicios ofrecidos, según [46].
Las tablas principales son:
NIT (Network Information Table)
SDT (Service Description Table)
EIT (Event Information Table)
TDT (Time and Date Table)
Las tablas adicionales son:
BAT (Bouquet Association Table)
RST (Running Status Table)
ST (Stuffing Table)
TOT (Time offset Table)
DIT (Discontinuity Information Table)
SIT (Selection Information Table)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
51
Figura 18. Tablas PSI/SI y PID especificados por DVB-SI. [46]
Codificacion de los campos table_id y PID:
Las tablas PSI/SI se localizan mediante el valor de los campos table_id y
PID asignados a cada tabla:
Tabla 13. Valor de table_id de las tablas PSI/SI. [46]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
52
Tabla 14. Valor de PID de las tablas PSI/SI. [46]
Tabla para apliaciones:
Se define una tabla denominada AIT que sirve para la señalización de
apliaciones interactivas.
Generación de tablas:
Las tablas PSI/SI que se van a utilizar para el servicio que se va a crear son
NIT, PAT, PMT, SDT y AIT, se van a proceder a explicar los campos y
descriptores utilizados y el carrusel de objetos que contiene a la aplicación para
generación del TS, según se indica en [45] [46] [47] [48] [49]:
44..55..11.. NNIITT
La NIT es la tabla de información de la red. Cualquier sección que
forma parte de una NIT se transmitirá en paquetes TS con un valor PID =
0x0010 y table_id = 0x40.
La combinación de original_network_id y de transport_stream_id
permite que cada TS se identifique de forma única en toda el área de
aplicación.
A las redes se les asignan valores individuales de network_id, que
sirven como códigos de identificación únicos para redes. network_id y
original_network_id pueden tomar el mismo valor.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
53
Tabla 15. Network Information Table (NIT). [46]
network_id: Sirve como etiqueta para identificar el sistema de
entrega, sobre el cual informa NIT, de cualquier otro sistema de
entrega.
transport_stream_id: Sirve como una etiqueta para la identificación
de este TS de cualquier otro multiplex dentro del sistema de entrega.
original_network_id: Proporciona la etiqueta que identifica el
network_id de sistema de entrega de origen.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
54
Service list descriptor:
Tabla 16. Service list descriptor. [46]
service_id: identifica de forma unica un servicio dentro de un TS.
service_id es el mismo que program_number en el correspondiente
program_map_section.
service_type: especifica el tipo de servicio.
Tabla 17. service_type para Service descriptor. [46]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
55
44..55..22.. PPAATT
La PAT es la tabla de asociación de programas, siendo un directorio
raíz para el TS, es decir, nos da información sobre todos los programas
presentes en el TS. Esta tabla proporciona la correspondencia entre un
program_number y el valor PID de los paquetes del tren de transporte que
llevan la definición del servicio DVB.
La PAT siempre se entrega en ES con el PID = 0x0000 y será única
para cada flujo de transporte.
Tabla 18. Program Association Section (PAT). [45]
transport_stream_id: Sirve como una etiqueta para la
identificación de este TS de cualquier otro multiplex dentro del
sistema de entrega.
program_number: específica el programa al que se aplica el
program_map_PID. Cuando se establece en 0x0000 la siguiente
referencia de PID será el PID de network_PID = 0x0010.
Para la codificación de vídeo y audio en aplicaciones de transmisión
basadas en el flujo de transporte MPEG-2 se recomienda que todas las
secciones de PAT se transmitan al menos una vez cada 100 ms.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
56
44..55..33.. PPMMTT
La PMT es la tabla de mapa de programas y se encarga de listar
todos los PID para los diferentes ES asociados a un programa, es decir, se
encarga de indicar las características del contenido de cada servicio para que
el receptor sea capaz de localizarlos y decodificarlos.
Para cada servicio presente en el TS tiene que existir una tabla PMT
(con un PID asignado por la PAT) que defina sus características:
PID trama fundamental.
Tipo de trama fundamental (audio, vídeo, datos…).
Descriptores asociados a la trama fundamental.
Identifica el PCR (Program Clock Reference) de dicho servicio.
Tabla 19. Program Map Section (PMT). [45]
program_number: Específica el programa al que se aplica el
program_map_PID.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
57
PCR_PID: Identifica el PID de los paquetes del TS que
contendrá los campos de PCR válidos para el programa
especificado en program_number.
stream_type: Especifica el tipo de elemento de programa
transportado dentro de los paquetes con el PID cuyo valor está
especificado por elementary_PID.
Tabla 20. Asignación de stream_type. [45]
elementary_PID: especifica el PID de los paquetes del TS que
llevan el elemento de programa asociado.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
58
Stream identifier descriptor:
Se usa en la tabla PMT para etiquetar los flujos que componen un
servicio, para que puedan ser diferenciados:
Tabla 21. Stream identifier descriptor. [46]
component_tag: Identifica el flujo de componente asociado
con una descripción dada en un descriptor de componentes.
Dentro de una program_map_secction, cada descriptor de
identificador de flujo tendrá un valor diferente para este campo.
Data broadcast id descriptor:
Identifica el tipo de componente de datos.
Tabla 22. Data broadcast id descriptor. [46]
data_broadast_id: Identifica la especificación de difusión de
datos que utiliza para transmitir los datos en la red broadcast.
Tabla 23. Data broadcast id. [47]
Como vamos a transmitir la aplicación mediante un
HbbTV Carousel el data_broadcast_id = 0x0123 (291).
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
59
Por lo tanto, cuando se envía un programa al receptor este realiza los
siguientes pasos, como indica [48]:
Captura de la PAT (filtra los paquetes de transporte con
PID=0x0000)
Busca en la PAT el PID en el que viaja la PMT del programa.
Captura la PMT donde se describe la estructura del programa,
filtrando los paquetes de transporte con dicho PID.
Lee en la PMT los PIDs en los que viajan las tramas
elementales.
El proceso es más complejo, pero se puede resumir en la siguiente
figura:
Figura 19. Proceso de localización del servicio o programa. [48]
Para la codificación de vídeo y audio en aplicaciones de transmisión
basadas en MPEG-2 Transport Stream se recomienda que todas las
secciones de PMT se transmitan al menos una vez cada 100 ms.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
60
44..55..44.. SSDDTT
La SDT es la tabla de descripción del servicio, es decir, contiene los
datos que describen los servicios DVB que tiene un TS: nombre del
servicio, nombre del proveedor y otros parámetros asociados al servicio.
La tabla SDT esta segmentada en service_description_sections y
cualquier sección que forme parte de ella se trasmite en paquetes con valor
de PID = 0x0011 y table_id = 0x42 con el mismo transport_stream_id y
original_network_id.
Tabla 24. Service Description Table. [46]
transport_stream_id: Sirve como etiqueta para la descripcion
del TS, sobre el cual informa el SDT, de cualquier otro
multiplex dentro del sistema de entrega.
original_network_id: Proporciona la etiqueta que identifica el
network_id del sistema de entrega de origen.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
61
service_id: Sirve como etiqueta para identificar este servicio
dentro del TS. El service_id es el mismo que el
program_number en program_map_section.
EIT_schedule_flag: Si es "1" indica que la informacion de la
programacion EIT para el servicio esta presente en el TS actual.
Si es "0" la informacion de programacion de EIT par el
servicion no debe estar presente en el TS.
EIT_present_following_flag: Si es "1" indica que la
informacion para el servicio esta presente en el TS actual. Si es
"0" la informacion para el servicio no debe estar preente en el
TS.
running_status: Indica el esatado del servicio como se define
en la siguiente tabla.
Tabla 25. running_status. [46]
free_CA_mode: Si es "0" indica que todas las secuencias de
componentes del servicio no estan codificadas. Si es "1" indica
que el acceso a una o mas secuencias puede ser controlado por
un sistema de CA.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
62
Service descriptor:
Tabla 26. Service descriptor. [46]
service_type: Especifica el tipo de servicio.
service_provider_name_length: Especifica el número de
bytes para describir los caracteres del nombre del proveedor de
servicios.
service_name_length: Especifica el número de bytes para
describir los caracteres del nombre del servicio.
44..55..55.. TTiieemmppooss ddee rreeppeettiicciioonnddee llaass ttaabbllaass PPSSII//SSII
La siguiente tabla muestra con los tiempos de repetición de cada una
de las tablas PSI/SI.
Tabla 27. Tiempos de repetición Tablas PSI/SI. [47]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
63
44..55..66.. MMPPEEGG--22 DDeessccrriippttoorrss -- DDSSMMCCCC
ISO/IEC 13818-1 define una estructura de private_section que
DSMCC utiliza para proporcionar la reconstrucción de los paquetes
Transport Stream en un DSMCC. DSMCC define semánticas adicionales en
las secciones privadas para admitir requisitos adicionales de DSMCC.
DSMCC_section (ISO/IEC 13818-6), la estructura es compatible con la
sintaxis private_section para que se puedan usar los decodificadores
compatibles con los sistemas MPEG-2. [45]
La codificación de los campos de DSMCC_section se puede ver en
la tabla 11.
Para la implementación de carruseles de objetos U-U sobre redes de
transmisión que se basan en flujos de transporte MPEG-2, los mecanismos
de PSI facilitan, según [45]:
1) La asociación de un Programa MPEG-2 (es decir, PMT) con un
carrusel de objetos;
2) la asociación de un Tap con un PID o un Programa MPEG-2;
3) la localización del PID en el que se transmite el IOR8 del Service
Gateway9; y
4) la implementación distribuida de un carrusel de objetos en la
parte superior de varios programas MPEG-2.
Los descriptores MPEG-2 que proporcionan esta funcionalidad se
describen a continuación.
8 IOR (Interoperable Object Reference – Referencia de objetos interoperables).
9 Service Gateway (puerta de enlace): Objeto de directorio, es decir, contiene el directorio raíz del dominio
del servicio.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
64
Carousel identifier descriptor:
Permite la asociación entre un programa MPEG-2 y un carrusel de
objetos.
Tabla 28. carousel_identifier_descriptor. [45]
El descriptor carousel_identifier_descriptor se inserta en el segundo
bucle de la PMT correspondiente al flujo elemental que lleva el DSI de
carrusel de objetos. Esto permite más de un carrusel de objetos por
programa MPEG e identifica implícitamente el PID en el que debe
arrancarse cada carrusel.
Association tag descriptor:
Facilita la asociación entre association_tag y un PID, es similar al
descriptor stream_identifier de DVB SI (EN 300 468 [46]):
Tabla 29. association_tag_descriptor
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
65
use: Indica el uso del PID y debe especificar la sintaxis y
semántica del campo selector. Si es 0x0000 el mensaje
DownloadServerInitiate que lleva el IOR del Service Gateway
se transmite en ese PID. En este caso, los datos en el campo
selector_byte contendrá transaction_id y timeout (tiempo de
espera).
transaction_id: Se corresponde con transaction_id del mensaje
DownloadServerInitiate que transmite el IOR del Service
Gateway del carrusel de objetos U-U. Excepto cuando el
transaction_id = 0xFFFFFFFF en el association_tag_descriptor.
Este valor indica que transaction_id del mensaje
DownloadServerInitiate no se conoce en este momento, pero
todos los mensajes de DownloadServerInitiate difundidos en el
PID identificados son válidos.
timeout: Indicara el periodo de tiempo de espera en
microsegundos que puede usarse para agotar el tiempo de
espera de la adquisición del mensaje DownloadServerInitiate.
timeout = 0XFFFFFFFF indica que no se conoce ningún valor
de tiempo de espera en este momento permitiendo un PMT
estático.
Stream identifier descriptor (DVB-SI):
El descriptor stream_identifier_descriptor facilita la asociación entre
un component_tag y un PID de manera eficiente.
component_tag = association_tag.
Data broadcast descriptor:
El descriptor data_broadcast_descriptor se utiliza para indicar el uso
del carrusel de objetos, para HbbTV el data_broadcast_id = 0x0123 (291),
como se ha visto en la tabla 23.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
66
44..66.. SSeeññaalliizzaacciióónn yy ttrraannssppoorrttee ddee aapplliiccaacciioonneess yy sseerrvviicciiooss
iinntteerraaccttiivvooss
HbbTV necesita también integración con el entorno DVB, incorporándose
para ello las funciones de la especificación ETSI TS 102 809 v1.3.1. (2017-06)
"Digital Video Broadcasting (DVB); Signalling and carriage of interactive
applications and services in Hybrid broadcast/broadband environments".
El estándar define la señalización y el transporte de aplicaciones o servicios
interactivos en redes de transmisión de banda ancha, según [50]:
Señalización de aplicaciones o servicios de interactivos.
Distribuir los archivos de aplicaciones o servicios de interactivos.
Sincronizar aplicaciones o servicios interactivos a contenido de vídeo o
audio.
Referencia de contenido de vídeo, audio o subtítulos desde
aplicaciones o servicios interactivos.
La señalización de aplicaciones interactivas se hace usando la tabla AIT
(Application Information Table) que va incluida en el servicio DVB y que se lista
en la tabla PMT.
44..66..11.. TTrraannssmmiissiióónn ddee sseeññaalliizzaacciióónn ddee aapplliiccaacciioonneess
La información de flujo elemental para la entrada en la tabla PMT
que describe el flujo elemental que lleva la tabla AIT tiene las siguientes
características:
stream_type = 0x05 (ISO/IEC 13818-1, private sections).
application_signalling_descriptor
44..66..22.. AAIITT
La tabla AIT proporciona información completa sobre la trasmisión
de datos, el estado de activación de las aplicaciones que lleva, etc. AIT
contiene un tipo de aplicación que el receptor puede decodificador. [50]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
67
Tabla 30. Application Information Table. [50]
Los descriptores y entidades de señalización que debe soportar
HbbTV con codificación MPEG-2 son:
table_id: El valor que identifica esta tabla es 0x74.
application_type: Sirve para saber si el terminal es compatible
con el tipo de aplicación. Para HbbTV se señalizará con el
código 0x0010.
application_id: Se identifica a la aplicación.
organisation_id: Se identifica a la organización.
application_control_code: El código de control de las
aplicaciones permite a la emisora que le indique al receptor que
hacer con la aplicación en relación con su ciclo de vida:
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
68
Tabla 31. application_control_code. [50]
Las aplicaciones señalizadas en la AIT con
AUTOSTART se ejecutaran automaticamente a no ser que el
terminal haya determinado lo contrario. Esto se hace mediante
la visualizacion del boton rojo durante un tiempo limitado para
que el usuario active la aplicación en el momento que desee.
Application Descriptor:
Tabla 32. Application Descriptor. [50]
application_profile: Identifica que perfil especifico de tipo
de aplicación requiere esta aplicación.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
69
visibility: Este campo indica si la aplicación es adecuada
para ser ofrecida al usuario final para que decida si la
aplicación debe iniciarse.
Tabla 33. Visibility application. [50]
application_priority: Identifica la prioridad relativa entre las
aplicaciones señalizadas en un servicio.
transport_protocol_label: Identifica el protocolo de transporte
que entrega la aplicación.
- Carrusel de objetos sobre canal broadcast.
- HTTP sobre canal broadband.
Transport protocol descriptor:
Tabla 34. Transport protocol descriptor. [50]
protocol_id: Un identificador del protocolo utilizado para
llevar las aplicaciones.
Tabla 35. protocol_id. [50]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
70
transport_protocol_label: Identifica el protocolo de transporte
que entrega la aplicación.
Cuando protocol_id = 0x0001, selector_byte en el
transport_protocol_descriptor será:
Tabla 36. selector_byte. [50]
remote_connection: Indica que la conexión de transporte es
proporcionada por un servicio broadcast que es diferente al que
lleva la AIT. Dichas aplicaciones no deben ser iniciadas
automaticamente por los receptores, pero son visibles para un
posible lanzamiento por selección del servicio. Es "0" cuando la
conexión de transporte sea proporcionada por el servicio actual.
Las aplicaciones con este conjunto de indicadores debe tener su
código de control.
Application Name Descriptor:
Tabla 37. Application Name Descriptor. [50]
ISO_639_languaje_code: Codigo de idioma.
application_name: Nombre de la aplicación.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
71
Simple_application_location_descriptor:
El bucle AIT deberá contener siempre uno.
Tabla 38. Simple application location descriptor. [50]
Initial_path_bytes: contiene una cadena especificando la URL
del documento raíz de entrada.
El receptor tiene que reconocer la aplicación antes para que el gestor
de aplicaciones del navegador HbbTV pueda ejecutar la aplicación, después
el receptor debe saber si el usuario puede ejecutarla o no en ese momento y
finalmente debe saber si dispone de todo lo necesario para poder ejecutarla,
todo esto se controla con la tabla AIT.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
72
CCAAPPÍÍTTUULLOO 55:: GGEENNEERRAACCIIÓÓNN DDEE UUNN TTRRAANNSSPPOORRTT SSTTRREEAAMM
PPAARRAA DDVVBB--TT IINNCCLLUUYYEENNDDOO LLAA AAPPLLIICCAACCIIÓÓNN
IINNTTEERRAACCTTIIVVAA
La generación del Transport Stream se va a llevar a cabo con el software de código
abierto y gratuito OpenCaster desarrollado por AVALPA Digital Engineering SRL.
55..11.. OOppeennCCaasstteerr
OpenCaster se puede descargar del sitio original:
http://www.avalpa.com/the-key-values/15-free-software/33-opencaster
Además, el sitio oficial cuenta con una serie de tutoriales [51] que se pueden
usar y modificar según las necesidades del servicio que se vaya a crear y un manual
de uso [52].
OpenCaster ofrece:
Creación de tablas PSI/SI.
Herramientas de conversión m2ts.
Reproducción de todos los tipos de archivos (audio, vídeo y datos)
Generar flujos de datos llevados en un TS.
Manipulación de TS en tiempo real almacenados en disco duro.
Permite agregar marcas de tiempo con PTS, PCR y DTS.
Carruseles DSM-CC.
Salida DVB-S, DVB-T y DVB-C con tarjetas de hardware Dektec.
55..11..11.. IInnssttaallaacciióónn ddee OOppeennCCaasstteerr
El software OpenCaster tiene los siguientes requerimientos para su
uso en Linux:
Sistema operativo GNU/Linux:
Se va a ejecutar Linux a través de la máquina virtual
Oracle Virtual Box. La versión que se instala de Ubuntu es la
14.04 (Trusty Tahr).
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
73
Compilador C con GCC:
La versión utilizada es:
$ gcc –version
gcc (Ubuntu 4.8.4-2ubuntul~14.04.4) 4.8.4
Copyright (C) 2013 Free Software Foundation,
Inc.
This is free software; see the source for
copying conditions. There is NO warranty;
notpyti even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
Ambiente Python:
La versión utilizada es:
$ python –version
Python 2.6.5
Código de instalación:
$ cd opencaster-3.2.2
$ sudo apt-get update
$ sudo apt-get install opencaster
Para probar la correcta instalación de OpenCaster se
ejecuta el siguiente comando el cual no debe mostrar ningún
error en la salida.
$ python –c "from dvbobjects.PSI.PAT import*"
El archivo INSTALL indica que hay que ejecutar la
siguiente línea de comandos:
$ apt-get install binutils gcc libc6-dev
libgomp1 linux-libc-dev make python-dev
zlib1g-dev python-dateutil.
Pero da un error en la línea 15,
#include <net/if_tun.h>, en el archivo mpe.c, hay que
modificarla por #include <linux/if_tun.h>. [53]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
74
Si no se modifica este archivo hay comandos de
OpenCaster que no funcionan como por ejemplo cuando se
ejecuta oc-update.sh para crear el carrusel.
Una vez solucionado se ejecuta:
$ make
$ make install
55..11..22.. PPyytthhoonn
Python es un lenguaje de programación interpretado cuya síntesis
favorece un código legible. Python es un lenguaje de programación
multiparadigma, es decir, permite varios estilos de programación: orientada
a objetos, programación imperativa y programación funcional.
Figura 20. Python. [54]
55..11..33.. CCoommaannddooss OOppeennCCaasstteerr
OpenCaster cuenta con una serie de comandos para la conversión de
formatos de audio y vídeo y para la obtención del TS. Los siguientes
comandos son los que se van a utilizar:
esaudio2pes: encapsula los ES de audio en PES.
pesaudio2ts: encapsula un PES de audio en un TS
esvideompeg2pes: encapsula los ES de vídeo en PES.
pesvideo2ts: encapsula un PES de vídeo en un TS.
esaudioinfo: muestra la información del archivo ES.
pesinfo: muestra la información del archivo PES.
tsinfo: muestra la información del archivo TS.
tscbrmuxer: multiplexa los flujos de audio y vídeo, las tablas PSI/SI
y los flujos que contienen la información de la aplicación interactiva,
en un único flujo de transporte TS.
tspcrmeasure: presenta la tasa de bits de un TS.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
75
tsstamp: corrige los PCR (Program Clock Reference) de un TS para
que la llegada de los paquetes al STB sea precisa. Un PCR permite
al decodificador presentar el contenido sincronizado.
oc-update.sh: genera un TS a partir de una carpeta que contiene el
código y los objetos media de las aplicaciones interactivas de las que
se genera un carrusel de objetos.
55..11..44.. ffffmmppeegg
ffmpeg es un programa que permite la conversión de formato del
audio y vídeo con gran calidad. ffmpeg además incluye una librería
"libavcodec" de codificación de audio y vídeo con gran variedad de
formatos.
Para instalar ffmpeg se introducen los siguientes comandos:
$ sudo apt-get install ffmpeg
55..11..55.. TToovviidd
Esta herramienta se ha instalado para poder obtener toda la
información que se necesita conocer del vídeo para poder codificarlo.
Figura 21. Comandos Tovid. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
76
55..22.. CCooddiiffiiccaacciióónn ddeell aauuddiioo yy eell vvííddeeoo eenn ffoorrmmaattoo TTSS
Se parte de un archivo.avi y se codifica el audio y el vídeo por separado, se
generan las tablas PSI/SI y el carrusel de objetos que contiene la aplicación HbbTV.
Cuando se obtiene todos los archivos .ts se multiplexan para obtener el archivo .ts
final.
En primer lugar, se generan los paquetes de audio y vídeo archivos .es
(Elementary Stream), después se paquetizan para obtener los archivos .pes
(Packetized Elementary Stream) y por último los paquetes PES son divididos en de
tamaño 188 bytes dando lugar al flujo de datos .ts (Transport Stream).
Las tablas PSI/SI se generan mediante un script en Python. Al compilar el
script se obtienen las secciones de la tabla en paquetes: nit.ts, pat.ts, pmt.ts, sdt.ts y
ait.ts, que contienen información básica para que el archivo TS final pueda ser
transmitido correctamente.
Todos los flujos de transporte generados se multiplexan para conseguir el
archivo .ts final que será el que se transmita el receptor.
La siguiente figura muestra todos los pasos para generar el DVB TS.
Figura 22. Generación de DVB TS. [55]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
77
Mediante la herramienta tovid mostramos toda la informacion del archivo
.avi ejecutando en el terminal el siguiente comando:
$ tovid id archivo.avi
Figura 23. Información del archivo .avi con la herramienta Tovid [Fuente propia].
55..22..11.. GGeenneerraacciióónn ddeell aarrcchhiivvoo vviiddeeoo..ttss
Las características del vídeo son:
Formato MPEG4
Ancho 1280
Alto 720
Numero de cuadros (frames) 21894
Tasas de cuadros 25 cuadros/segundo
Tasa de bits 2 501 272 bits
Tabla 39. Características del vídeo obtenidas de Tovid. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
78
Para la codificación del vídeo se va utilizar la herramienta ffmpeg
realizando los siguientes pasos:
Figura 24. Proceso de codificación del vídeo. [Fuente propia]
En primer lugar, hay que convertir el archivo de vídeo en formato
AVI a MPEG-2 mediante los códec de codificación mpeg2video obteniendo
el archivo video.es (ES de vídeo):
$ ffmpeg –i input.ext –an –vcodec codec –f formato -s
resolucion –r cuadros –aspect relacion_aspecto –b
tasa_bits –maxrate tasa_bits_max –minrate tasa_bits_min
–bf 2 –bufsize 1835008 out.ext
-i Archivo de entra de vídeo archivo.avi
-an NO AUDIO. Ignorará la señal de audio si está
presente en la entrada
-vcodec Códec de vídeo mpeg2vídeo para que sea
compatible con la señal de Transport Stream. mpeg2video
-f Formato de salida mpeg2vídeo mpeg2video
-s Resolución del archivo de vídeo 1280x720
-r Numero de cuadros por segundo 25
-aspect Relación de aspecto de la pantalla 16:9
-b Tasa de bits de la señal codificada en bps. 2500k
-maxrate Máxima tasa de bits 2500k
-minrate Mínima tasa de bits 2500k
-bf Número de cuadros del tipo B entre cuadros tipo
I o P por GOP (Group Of Pictures) 2
-bufsize Es el tamaño del buffer en bits. Esta cantidad está
relacionada directamente con el buffer VBV. 1835008
out.ext Archivo de salida video.m2v
Tabla 40. Comandos de conversión del vídeo a formato .m2v. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
79
Video buffer verifier (VBV) es un modelo teórico que simula un
buffer de vídeo que se utiliza para asegurar que un flujo codificado de vídeo
va a poder ser correctamente almacenado y reproducido en el decodificador.
El tamaño del buffer vbv utilizado para MPEG-2 es de 112kbps o
224kbps, dependiendo del decodificador.
buffersize = vbv*1024*16 = 112*1024*16 = 1835008
Para la tasa de bits podemos tener en cuenta la siguiente tabla.
Tabla 41. Tasas de bits según resolución del vídeo. [56]
Teniendo en cuenta la información que tenemos del video
ejecutamos el siguiente código en la terminal:
$ ffmpeg –i archivo.avi –an –vcodec mpeg2video –f
mpeg2video -s 1280x720 –r 25 –b 2500k –maxrate 2500k
–minrate 2500k –bf 2 –bufsize 1835008 video.m2v
Después encapsulamos ES de vídeo en PES de vídeo para obtener el
archivo video.pes con la herramienta esvideompeg2pes:
esvideompeg2pes video.es > video.pes
video.es Archivo de entrada video.m2v
video.pes Archivo de salida video.pes
Tabla 42. Comandos de conversión del archivo .es a .pes. [Fuente propia]
Se ejecuta, por tanto:
esvideompeg2pes video.m2v > video.pes"
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
80
Obtenemos pts step = 3600 que nos servirá para sincronizar el vídeo
con el audio.
El último paso es obtener el .ts de vídeo mediante la herramienta
pesvideompeg2ts:
pesvideo2ts PID es_framerate es_video_vbv ts_bitrate 0
video.pes > video.ts
PID Identificador del paquete de vídeo 2064
es_framerate Cuadros/seg de las características del vídeo 25
es_video_vbv Correspondiente a MPEG-2 es 112Kbps o
224Kbps 112
ts_bitrate
La tasa de bits del archivo TS debe ser al
menos un 15% más que la tasa de bit del
vídeo original.
2875000
video.pes Archivo de entrada video.pes
video.ts Archivo de salida video.ts
Tabla 43. Comandos de conversión del archivo .pes a .ts. [Fuente propia]
Se ejecuta el siguiente código para obtener el archivo de vídeo
codificado en formato .ts:
pesvideo2ts 2064 29 112 1853300 0 video.pes > video.ts
55..22..22.. AArrcchhiivvoo ddee aauuddiioo
Las características del vídeo son:
Formato mp3
Bitrate 128000 bits/s
Sampling rate 44100 Hz
Tabla 44. Características del audio. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
81
Para el archivo de audio se sigue el mismo proceso que con el
archivo de vídeo, por tanto:
Figura 25. Proceso de codificación del audio. [Fuente propia]
En primer lugar, hay que obtener del archivo de vídeo el audio y
obtener el archivo audio.es (ES de audio):
ffmpeg –i input.ext –vn –ac canales –acodec codec –f
formato –ab bitrate –ar frec_muestreo out.ext
-i Archivo de entrada archivo.avi
-vn NO VÍDEO. Ignorará la señal de vídeo si está
presente en la entrada.
-ac Número de canales. Por defecto 1 2
-acodec Códec de audio mp2, para que sea compatible
con la señal de Transport Stream mp2
-f Formato de salida mp2 mp2
-ab Tasa de la señal de audio bits/s 128000
-ar Frecuencia de muestreo de la señal de audio.
Por defecto 44100 Hz 441000
Tabla 45. Comandos de conversión audio .mp2. [Fuente propia]
Teniendo en cuenta la información que tenemos del audio
ejecutamos el siguiente código en la terminal:
$ ffmpeg –i archivo.avi –vn –ac 2 –acodec mp2 –f mp2
–ab 128000 –ar 44100 audio.mp2
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
82
Después encapsulamos ES de audio en PES de audio para obtener el
archivo audio.pes con la herramienta esaudio2pes:
esaudio2pes input.mp2 spf ar fs 0 pts > out.pes
imput.mp2 Archivo de entrada audio.mp2
spf Numero de muestras por frame.
Valor usado para este parámetro 1152 1152
ar Frecuencia de muestreo de la señal de audio 44100
fs
Tamaño del frame.
Se calcula mediante la siguiente formula:
framesize = 144 x birate/sampling_rate
417
pts Define el desplazamiento PTS para sincronizar
el audio con el vídeo. 3600
out.pes Archivo de salida audio.pes
Tabla 46. Comandos de conversión del archivo .es a .pes. [Fuente propia]
Se ejecuta, por tanto:
esaudio2pes esaudio.mp2 1152 44100 417 0 3600 > audio.pes
El último paso es obtener el .ts de audio mediante la herramienta
pesvídeompeg2ts:
pesaudio2ts PID spf ar fs 0 input.pes > out.ts
imput.pes Archivo de entrada audio.pes
PID Identificador del paquete de audio 2068
spf Numero de muestras por frame.
Valor usado para este parámetro 1152 1152
ar Frecuencia de muestreo de la señal de audio 44100
fs
Tamaño del frame.
Se calcula mediante la siguiente formula:
framesize = 144 x birate/sampling_rate
417
out.ts Archivo de salida audio.ts
Tabla 47. Comandos de conversión del archivo .pes a .ts. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
83
Se ejecuta el siguiente código para obtener el archivo de vídeo
codificado en formato .ts:
pesaudio2ts 2068 1152 44100 417 0 audio.pes > audio.ts
55..33.. GGeenneerraacciióónn ddee ccaarrrruusseell ddee oobbjjeettooss DDSSMMCCCC
El carrusel de objetos se crea mediante la herramienta oc-update.sh de
OpenCaster. Ejecutando oc-update.sh muestra la información y los parámetros
que hay que introducir para crear el carrusel de objetos como se puede ver en la
siguiente figura:
Figura 26. oc-update.sh de OpenCaster. [Fuente propia]
La aplicación se encuentra en un directorio llamado "aplicación" que se
convertirá en un carrusel de objetos DSM-CC ejecutando:
oc-update.sh aplicación 0x0C 1 2004 2
aplicación: Es el directorio.
0x0C: Es association_tag que es igual que componet_tag.
1: Es modules_version.
2004: Es el PID.
2: Es carousel_id.
Se obtiene asi un archivo .ts (aplicación.ts) el cual contiene la aplicación
interactiva.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
84
55..44.. GGeenneerraacciióónn ddee TTaabbllaass PPSSII//SSII
Las tablas PSI/SI contienen datos con información del TS para que sea
demultiplexado correctamente en el decodificador, pudiendo localizar tanto el vídeo
como el audio y las aplicaciones.
Los valores que se utilizan para crear las tablas son los que se han ido
introduciendo en la generación de los archivos .ts
55..44..11.. CCaabbeecceerraa yy ddaattooss
#!/usr/bin/env python
import os
from dvbobjects.PSI.NIT import *
from dvbobjects.PSI.PAT import *
from dvbobjects.PSI.PMT import *
from dvbobjects.PSI.SDT import *
from dvbobjects.MHP.AIT import *
from dvbobjects.DVB.Descriptors import *
from dvbobjects.MPEG.Descriptors import *
from dvbobjects.HBBTV.Descriptors import *
from dvbobjects.DSMCC.STE import *
### DATOS:
ts_id = 1
orig_network_id = 1
service_id = 1 #Servicio 1 del multiplex
serviceType = 1 # Servicio de TV Digital (Tabla 17)
serviceName = "AppHbbTV"
pmt_PID = 4096 #Valor de identificacion de la PMT
vídeo_PID = 2064 #Valor de identificacion del vídeo
audio_PID = 2068 #Valor de identificacion del audio
ait_PID = 2002 #Valor de identificacion de la AIT
dsmcc_PID = 2004 #Valor de identificacion del carrusel
dsmcc_association_tag = 0x0C
dsmcc_carousel_id = 2 #Identificador del carrusel
organisationId = 10
applicationId = 1001
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
85
55..44..22.. TTaabbllaa NNIITT
### Network Information Table:
nit = network_information_section(
network_id = orig_network_id,
network_descriptor_loop = [
network_descriptor(
network_name = "TFG-Mari",
),
],
transport_stream_loop = [
transport_stream_loop_item(
transport_stream_id = ts_id,
original_network_id = orig_network_id,
transport_descriptor_loop = [
service_list_descriptor(
dvb_service_descriptor_loop = [
service_descriptor_loop_item(
service_ID = service_id,
service_type = serviceType,
),
],
),
],
),
],
version_number = 1,
section_number = 0,
last_section_number = 0,
)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
86
55..44..33.. TTaabbllaa PPAATT
### Program Association Table:
pat = program_association_section(
transport_stream_id = ts_id,
program_loop = [
program_loop_item(
program_number = service_id,
PID = pmt_PID,
),
program_loop_item(
program_number = 0, #Especial programa NIT
PID = 16, #0x0010 Identificador de la NIT
),
],
version_number = 1,
section_number = 0,
last_section_number = 0,
)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
87
55..44..44.. TTaabbllaa PPMMTT
# Program Map Table:
pmt = program_map_section(
program_number = service_id,
PCR_PID = vídeo_PID,
program_info_descriptor_loop = [],
stream_loop = [
stream_loop_item(
stream_type = 2, #Vídeo stream_type
elementary_PID = vídeo_PID,
element_info_descriptor_loop = []
),
stream_loop_item(
stream_type = 3, #Audio stream_type
elementary_PID = audio_PID,
element_info_descriptor_loop = []
),
stream_loop_item(
stream_type = 0x05, #AIT stream_type
private sections
elementary_PID = ait_PID,
element_info_descriptor_loop = [
application_signalling_descriptor(
application_type = 0x0010, #HbbTV
AIT_version = 1, #Version
),
],
),
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
88
stream_loop_item(
stream_type = 11,
elementary_PID = dsmcc_PID,
element_info_descriptor_loop = [
association_tag_descriptor(
association_tag = dsmcc_association_tag,
use = 0,
selector_lenght = 0,
transaction_id = 0x80000000,
timeout = 0xFFFFFFFF,
private_data = "",
),
stream_identifier_descriptor(
component_tag = dsmcc_carousel_id,
),
carousel_identifier_descriptor(
carousel_ID = dsmcc_carousel_id,
format_ID = 0,
private_data = "",
),
data_broadcast_id_descriptor(
data_broadcast_ID = 291,#HbbTVCarousel
ID_selector_bytes = "",
),
],
),
],
version_number = 1,
section_number = 0,
last_section_number = 0,
)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
89
55..44..55.. TTaabbllaa SSDDTT
### Service Description Table
sdt = service_description_section(
transport_stream_id = ts_id,
original_network_id = orig_network_id,
service_loop = [
service_loop_item(
service_ID = service_id,
EIT_schedule_flag = 0,
EIT_present_following_flag = 0,
running_status = 4, #Running
free_CA_mode = 0,
service_descriptor_loop = [
service_descriptor(
service_type = serviceType,
service_provider_name = "Television",
service_name = serviceName,
),
],
),
],
version_number = 1,
section_number = 0,
last_section_number = 0,
)
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
90
55..44..66.. TTaabbllaa AAIITT
### AIT (Application Information Table
ait = application_information_section(
application_type = 0x0010, #Aplicacion HbbTV
common_descriptor_loop = [],
application_loop = [
application_loop_item(
organisation_id = organisationId,
application_id = applicationId,
application_control_code = 1,
application_descriptors_loop = [
transport_protocol_descriptor(
protocol_id = 0x0001, #DSMCC
transport_protocol_label = 1,#DSMCC
remote_connection = 0, #0 para HbbTV
component_tag = dsmcc_association_tag
),
application_descriptor(
application_profile = 0x0000,
version_major = 1,
version_minor = 1,
version_micro = 1,
service_bound_flag = 1,
visibility = 3, #Visible para el usuario
application_priority = 1,
transport_protocol_labels = [1], #DSMCC
),
application_name_descriptor (
application_name = app_name,
ISO_639_languaje_code ="es",
),
simple_application_location_descriptor(
initial_path_bytes = app_path,
),
]
),
],
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
91
version_number = 1,
section_number = 0,
last_section_number = 0,
)
55..44..77.. GGeenneerraacciióónn ddee ttaabbllaass
##### GENERACION DE ARCHIVOS.
out = open("./nit.sec", "wb")
out.write(nit.pack())
out.close()
os.system("sec2ts 16 < ./nit.sec > ./nit.ts")
out = open("./pat.sec", "wb")
out.write(pat.pack())
out.close()
os.system("sec2ts 0 < ./pat.sec > ./pat.ts")
out = open("./sdt.sec", "wb")
out.write(sdt.pack())
out.close()
os.system("sec2ts 17 < ./sdt.sec > ./sdt.ts")
out = open("./pmt.sec", "wb")
out.write(pmt.pack())
out.close()
os.system("sec2ts " + str(pmt_PID) + " < ./pmt.sec >
./pmt.ts")
out = open("./ait.sec", "wb")
out.write(ait.pack())
out.close()
os.system("sec2ts " + str(ait_PID) + " < ./ait.sec >
./ait.ts")
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
92
Figura 27. Generación de tablas PSI/SI. [Fuente propia]
Para obtener los archivos .ts se ejecuta en la terminal:
chmod u+x gtables.py
./gtables.py
Y se obtiene así los archivos .ts de las tablas con tamaño 188 bytes.
55..44..88.. GGeenneerraacciióónn ddee TTrraannssppoorrtt SSttrreeaamm ffiinnaall
Una vez están todos los archivos en formato .ts se procede a
multiplexarlos, pero antes se tiene que obtener el bitrate de cada archivo.
.ts Tamaño Repetición Bitrate (bps)
nit.ts 188 bytes *8= 1504 bits 2 veces/seg 3008
pat.ts 188 bytes *8= 1504 bits 10 veces/seg 15040
pmt.ts 188 bytes *8= 1504 bits 10 veces/seg 15040
sdt.ts 188 bytes *8= 1504 bits 2 veces/seg 3008
ait.ts 188 bytes *8= 1504 bits 10 veces/seg 15040
aplicacion.ts 1 000 000
video.ts 2 875 000
audio.ts 188 000
Bitrate total 4 114 136 bps
Tabla 48. Bitrates de los archivos generados .ts. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
93
Se tiene que tener en cuenta el tamaño de la aplicación, asegurando
que se transmite al menos una vez el carrusel.
El tamaño de la aplicacion.ts es 141 940 bytes lo que es igual a
1 135 520 bits y el bitrate que se le ha asignado es 1 000 000 bps por tanto
se tiene que el carrusel tarda en transmitirse completamente 1,13 segundos.
Según las tablas de modulación de modulación de canal de 8MHz un
bitrate de transmisión en el cual podemos incluir el servicio es 4.98 MHz.
Para completar este bitrate definido por DVB-T tenemos que
introducir paquetes nulos, por tanto, el archivo null.ts tiene que tener una
tasa de trasmisión de:
Bitrate
SERVICIO 4 114 136 bps
CANAL 8 MHz
(QPSK; ½, G=1/4) 4 980 000 bps
null.ts 865 864 bps
Tabla 49. Bitrate null.ts [Fuente propia]
Por lo que teniendo todos los bitrates de los archivos .ts se puede
proceder a multiplexar utilizando la herramienta tscbrmuxer:
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
94
tscbrmuxer b:3008 nit.ts b: 15040 pat.ts b: 15040
pmt.ts b: 3008 sdt.ts b: 15040 ait.ts b: 1000000
aplicacion.ts b: 2875000 video.ts b: 188000 audio.ts b:
865864 null.ts > completo.ts
Pero para sincronizar audio y vídeo se utiliza la herramienta
tsstamp:
tsstamp completo.ts 4980000 > TSapp.ts
Se obtiene así el archivo con la aplicación interactiva incluida la cual
se enviara la televisión.
Figura 28. Generación del Transport Stream final. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
95
CCAAPPÍÍTTUULLOO 66:: TTRRAANNSSMMIISSIIÓÓNN DDEELL TTRRAANNSSPPOORRTT SSTTRREEAAMM
GGEENNEERRAADDOO
En este capítulo se tratará la radiodifusión (RF) a través del estándar DVB-T. Para
poder transmitir la señal RF se necesita una moduladora que convierta la señal digital de
entrada en banda base a una señal VHF/UHF a la salida. Para ello se ha utilizado el
modulador: DTA-111 Multi-Standard Modulator with VHF/UHF Upconverter.
Figura 29. DTA-111 Multi-Standard Modulator with VHF/UHF Upconverter. [57]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
96
Para emitir el TS a través de la salida RF del modulador es necesario instalar los
drivers de la tarjeta y un software de Dektec (StreamXpress) que permita configurar los
parámetros de la modulación y activar o desactivar la emisión.
Figura 30. DTC-300 StreamXpress®. [58]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
97
Figura 31. Transport Stream generado en StreamXpress. [Fuente propia]
El bitrate de salida es 9 952 941 bps porque esta para una modulación de 16-QAM
y la generación del Transport Stream se ha hecho con el bitrate de QPSK. Esta diferencia
no es un inconveniente, ya que StreamXpress añade más paquetes nulos para adaptarlo a la
salida de la modulación seleccionada.
En el segundo cuadro podemos observar todos Transport Stream, con sus
correspondientes PID, que se multiplexaron para obtener el Transport Stream final.
Figura 32. Composición del Transport Stream en StreamXpress. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
98
Si ampliamos el Transport Stream del servicio podemos ver su composición, es
decir, lo que se va a transmitir:
Figura 33. Composición del servicio emitido StreamXpress. [Fuente propia]
Si se despliega cada uno de los componentes (vídeo, audio, datos y carrusel de
objetos) se ve la información que contienen: PID, bitrate, stream_type, etc.
Figura 34. Información de los Elementary Stream en StreamXpress. [Fuente propia]
Para que el Transport Stream se emita simplemente hay que darle al PLAY y para
pararlo al PLAUSE y dejara de emitirse.
Figura 35. Emisión del Transport Stream StreamXpress. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
99
66..11.. CCoonnffiigguurraacciióónn TTVV
Para poder transmitir el Transport Stream hay que sintonizar el canal
(frecuencia) donde se va a emitir y activar la tecnología HbbTV en la televisión
para que la aplicación se muestre.
Por lo tanto, acedemos a ajustes y al menú de CANALES y se comprueba
que la tecnología HbbTV esta activada.
Figura 36. Activación HbbTV en TV. [Fuente propia]
Ahora se va a proceder a configurar el canal por donde se va a emitir el
Transport Stream. En el mismo menú de CANALES se accede a Sintonización y
configuración de canales Sintonización manual Antena TV digital:
Figura 37. Sintonización de canal (I). [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
100
Figura 38. Sintonización de canal (II). [Fuente propia]
Figura 39. Sintonización de canal (III). [Fuente propia]
Figura 40. Sintonización de canal (IV). [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
101
Los parámetros introducidos tienen que ser los mismos con los que se
configura StreamXpress para la transmisión del Transport Stream:
Figura 41. Parámetros de configuración del canal de TV. [Fuente propia]
66..22.. VViissuuaalliizzaacciióónn ddeell TTrraannssppoorrtt SSttrreeaamm ggeenneerraaddoo yy
ffuunncciioonnaammiieennttoo ddee llaa aapplliiccaacciióónn iinntteerraaccttiivvaa HHbbbbTTVV
Se está emitiendo, a través del modulador DTA-111, el servicio AppHbbTV que
contiene la aplicación interactiva HbbTV:
Figura 42. Servicio transmitido desde StreamXpress. [Fuente propia]
El servicio muestra las características del vídeo que contiene el Transport Stream y
que contiene tecnología HbbTV (aplicación interactiva).
Figura 43. Emisión del servicio AppHbbTV. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
102
Se ha diseñado un icono de botón rojo. Este botón rojo es la notificación que se
mostrará en la pantalla para informar que existe una aplicación interactiva.
Figura 44. Diseño del Botón rojo para la notificación. [Fuente propia]
Figura 45. Notificación de aplicación interactiva con Botón rojo. [Fuente propia]
Al pulsar el botón rojo del mando a distancia cambiamos el aspecto de la pantalla a
otra aplicación:
Figura 46. Aplicación interactiva HbbTV. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
103
Al pulsar el botón azul aparece un menú desplegable con el que se interactúa así:
Botón amarillo:
- Cuando se pulsa el botón amarillo se muestran los ingredientes.
- Se puede modificar la cantidad de ingredientes según el número de
comensales para los que se va a realizar la receta, simplemente
introduciendo el número de comensales con mando a distancia. Para
borrar el número de comensales hay que pulsar de nuevo el botón
amarillo para que lo seleccione.
- Con los botones up y down se podría mover la información (scroll).
Figura 47. Aplicación interactiva – Ingredientes. [Fuente propia]
Botón verde:
- Cuando se pulsa el botón verde se muestran la receta.
- Con los botones up y down se puede mover la información (scroll).
Figura 48. Aplicación interactiva - Receta. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
104
Botón rojo:
- Cuando se pulsa el botón rojo se muestran la imagen del emplatado final
de la receta.
- Con los botones up y down se puede ampliar o reducir la imagen.
Figura 49. Aplicación interactiva – Emplatado (I). [Fuente propia]
Figura 50. Aplicación interactiva – Emplatado (II). [Fuente propia]
Botón BACK:
El botón BACK se cierra todos los elementos de la aplicación.
Botón EXIT:
Finaliza el servicio actual y vuelve al anterior, así sucesivamente.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
105
CCOONNCCLLUUSSIIOONNEESS –– LLÍÍNNEEAASS DDEE FFUUTTUURROO
El objetivo principal del TFG se ha alcanzo, se ha generado un Transport
Stream con una aplicación interactiva (HbbTV) [Anexo A]. La aplicación esta
señalizada en el Transport Stream apta para ser ejecutada desde cualquier dispositivo
compatible.
Desde el punto de vista de la funcionalidad se ha conseguido implementar desde
cero la aplicación HbbTV siguiendo las especificaciones aprobadas por la ETSI. Se ha
podido ejecutar la aplicación en el emulador Opera TV y en equipos reales con el
modulador DTA-11 de Dektec y receptor LG SmartTV.
Con OpenCaster se han podido generar las tablas de señalización del Transport
Stream y multiplexar con los stream de audio y vídeo y la aplicación (carrusel de objetos)
posteriormente. El Transport Stream obtenido se ha analizado en DexmuToy Middleware
Analyser [Anexo B] donde se ha comprobado que toda la información incluida en las tablas
es correcta, los tiempos de repetición, etc.
Para emitir el Transport Stream por radiodifusión a través de la tarjeta se han
configurado los parámetros de modulación mediante StreamXpress, que también permite
activar o desactivar la emisión.
Existen muchas más posibilidades en la generación de Transport Stream para
transmisión en DVB- T con tecnología HbbTV:
Para Transport Stream MPEG-2 se puede generar EPG (Electronic Program
Name) que es la guía de programación que aparece en la televisión. Se
construye mediante la tabla EIT que proporciona información sobre eventos en
un servicio.
La tecnología HbbTV permite la multipantalla o pantalla acompañante, por
ejemplo, mediante otro dispositivo (smartphone o tablet) se pueda ir ejecutando
la aplicación que se muestre en el televisor. Una pantalla acompañante puede
usarse como un mando a distancia o como una pantalla donde se vea
información adicional a lo que se emite en la pantalla principal.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
106
Transmisión de aplicaciones mediante la conexión a internet (HTTP) a
través de servidores o de un proveedor de servicios interactuando a través de un
canal de retorno para intercambiar contenido con el usuario.
Stream Events son eventos que se transmiten a la televisión en un momento
determinado independiente del tiempo de trasmisión para mostrar alguna
información adicional que puede o no estar relacionado con lo que se está
emitiendo.
La combinación de Transport Stream MPEG-2 con la tecnología HbbTV nos da
estas y muchas más posibilidades para hacer de nuestra televisión un lugar personalizable
según nuestras necesidades.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
107
AANNEEXXOO AA:: IImmpplleemmeennttaacciióónn ddee uunnaa aapplliiccaacciióónn HHbbbbTTVV
FFaasseess ddeell pprroocceessoo
SSeelleecccciióónn ddeell tteemmaa pprriinncciippaall ddee llaa aapplliiccaacciióónn
El tema principal de la aplicación es "cocina" ya que en la sucesión de los
programas de cocida nunca tenemos toda la información disponible. Con esta aplicación se
podrá consultar en todo momento los ingredientes, la receta o el emplatado.
CCoommppoossiicciióónn ddee llaa ppaannttaallllaa yy nnaavveeggaacciióónn ppoorr llaa aapplliiccaacciióónn
La aplicación se mostrara en el lateral izquierdo mediante un menú desplegable.
Cada una de las partes de la aplicación se desplegarán en función del color de la tecla que
se pulse.
Figura 51. Aplicación HbbTV. [Fuente propia]
PPrrooggrraammaacciióónn aapplliiccaacciióónn
El documento inicial de una aplicación es "index.html" y debe estar en el directorio
de la aplicación. El terminal debe cargar y ejecutar el archivo al iniciar la aplicación.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
108
La aplicación comenzará con una ventana que cubrirá toda la pantalla para que se
muestre el "Botón rojo".
index.html: Documento principal de la aplicación HbbTV – Notificación Botón Rojo:
<!DOCTYPE html PUBLIC "-//HbbTV//1.1.1//EN" "http://www.hbbtv.org/dtd/HbbTV-1.1.1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>HbbTV-INDEX</title>
<meta http-equiv="content-type"
content="application/vnd.hbbtv.xhtml+xml; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="app.css"/>
<script type="text/javascript" src="keycodes.js"></script>
<script type="text/javascript">
function init(){
try{
/*Hay que crear un elemento llamado appMgr Se asigna a la variable appManager el objeto
ApplicationManager.*/
var appManager = document.getElementById("appMgr");
/*Enlazamos el documento CE-html a nivel DOM con ApplicationManager. Ahora podemos
Controlar el ciclo de vida de la aplicacion y crear y destruir nuevas aplicaciones*/
App = appManager.getOwnerApplication(document);
App.show();
} catch(e){
}
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
110
document.addEventListener("keydown", function(e){
switch(e.keyCode){
case VK_RED:
document.getElementById("boton_rojo").focus();
window.location.replace("app.html");
break;
}
}, false);
}
function registerKeys(){
valor = 0x1+0x2+0x4+0x8+0x10+0x20+0x40+0x80+0x100;
try{
App.privateData.keyset.setValue(valor);
} catch (e){
}
}
window.onload = function onLoad(){
init();
registerKeys();
}
</script>
</head>
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
111
<body onload="onLoad();" style="background: transparent;">
<div style="width: 0; height: 0">
<object type="application/oipfApplicationManager" id="appMgr"></object>
<object type="application/oipfConfiguration" id="appConfig"> </object>
</div>
<div id="boton_rojo" style="background-image: url(rojo.gif); width: 200px; height: 82px;
left: 15px; top: 15px;"></div>
</div>
</body>
</html>
app.html: Aplicación principal en tecnología HbbTV. Menú desplegable.
<!DOCTYPE html PUBLIC "-//HbbTV//1.1.1//EN" "http://www.hbbtv.org/dtd/HbbTV-1.1.1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><
<title>HbbTV</title>
<meta http-equiv="content-type" content="application/vnd.hbbtv.xhtml+xml; utf-8" />
<link rel="stylesheet" href="./app.css" type="text/css" media="all" />
<script type="text/javascript" src="keycodes.js"></script>
<!-- <script type="text/javascript" src="menuclick.js"></script> -->
<script type="text/javascript" src="menumando.js"></script>
<script type="text/javascript" src="comensales.js"></script>
<script type="text/javascript" src="scroll.js"></script>
<script type="text/javascript" src="zoom.js"></script>
</head>
<body style="background: transparent;">
<div id="divprincipal" class="divprincipal">
<button id="nombre" class="botonazul">El plato de hoy...<br>
<div class="titulo"> Pulsa el botón azul </div>
</button>
<br>
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
113
<div id=DivPLATO class=Oculto>
<table>
<tr>
<td>
<br>
<button style="background-color: yellow" class="boton"></button>
<button id="ingredientes" class="boton2" style="border: 2px ridge yellow;">
<div class="titulo"> Ingredientes </div>
<div id=DivINGREDIENTES style="display: none;">
<form method="post" action="app.html">
<br>
Número de comensales:
<input id="numero" type="number" maxlength="2" size="2" value="2" class="numero"
onchange="comensales();" onkeyup="comensales();">
<br><br>
<div id="n">
1 pollo entero limpio
<br> 4 dientes de ajo
<br> 1 cebolleta
<br> 1 naranja
<br> Comino molido, guindilla cayena y orégano
<br> Tomillo seco, nuez moscada y azucar moreno
<br> Aceite de oliva virgen extra, vinagre, sal y pimienta
</div>
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
114
</form>
</div>
</button>
</td>
</tr>
<tr>
<td>
<br>
<button style="background-color: green" class="boton"></button>
<button id="receta" class="boton2" style="border: 2px ridge green;">
<div class="titulo"> Receta </div>
<div id=DivRECETA style="display: none;">
<br>
<div id="1">Cortar con las tijeras la parte posterior de la carcasa del pollo,
abrirlo y colocarlo sobre la bandeja de horno, cubierta con papel vegetal.</div>
<br>
<div id="2">Por otro lado, disponer en la picadora 4 dientes de ajo, 1 guindilla
cayena, 1 cebolleta, 1 cucharada de comino, 1 de oregano, 1 de tomillo seco, una
pizca de nuez moscada, 1 cucharada de azucar moreno, el jugo de 1 naranja, 1 dedo
de vaso de vinagre, 2 cucharadas de virgen extra, sal y pimienta. Triturar bien y
untar el pollo. </div>
<br>
<div id="3">Llevar al horno, precalentado a 195ºC, durante unos 50 minutos. Lavar
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
115
bien las patatas, cortarlas en gajos e introducirlas en agua hirviendo con sal
durante 4-5 minutos. Mientras tanto, cortar el tomate en dados y picar la cebolleta y
unas hojas de perejil. Dispone en un cuenco y aliñar con un poco de sal, aceite de
oliva virgen extra y vinagre. </div>
<br>
<div id="4">Finalmente, aparatar las patatas, enfriar bajo el grifo e introducir en
una bolsa de congelación. Incorporar media cucharada sopera de sal, 2 cucharadas de
harina y 1 de pimentón. Cerrar la bolsa, agitar bien para que se mezcle todo y freír
en virgen extra caliente hasta que estén doradas.</div>
</div>
</button>
</td>
</tr>
<tr>
<td>
<br>
<button style="background-color: red;" class="boton"></button>
<button id="foto" class="boton2" style="border: 2px ridge red;">
<div class="titulo"> Emplatado </div>
<div id="DivFOTO" style="display: none;">
<br>
<img id="aumentar" class="aumentar" src="flechaup.jpg">
<br>
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
116
<img type="button" id="FOTO" class="foto" src="plato.jpg" >
</div>
</button>
</td>
</tr>
</table>
</div>
<br>
<div style="font-size: 12px; color: black; text-align: left;"> Para salir de la aplicacion pulse...
br>
<button style="background-color: black;left: 13px" class="boton">BACK</button>
</div>
<br>
<br>
</div>
</body>
</html>
keycodes.js: Se definen los codigos de las teclas para que la TV las lea correctamente.
if (typeof(KeyEvent)!='undefined') {
if (typeof(KeyEvent.VK_LEFT)!='undefined') {
var VK_LEFT = KeyEvent.VK_LEFT;
var VK_UP = KeyEvent.VK_UP;
var VK_RIGHT = KeyEvent.VK_RIGHT;
var VK_DOWN = KeyEvent.VK_DOWN;
}
if (typeof(KeyEvent.VK_ENTER)!='undefined') {
var VK_ENTER = KeyEvent.VK_ENTER;
}
if (typeof(KeyEvent.VK_RED)!='undefined') {
var VK_RED = KeyEvent.VK_RED;
var VK_GREEN = KeyEvent.VK_GREEN;
var VK_YELLOW = KeyEvent.VK_YELLOW;
var VK_BLUE = KeyEvent.VK_BLUE;
}
if (typeof(KeyEvent.VK_PLAY)!='undefined') {
var VK_PLAY = KeyEvent.VK_PLAY;
var VK_PAUSE = KeyEvent.VK_PAUSE;
var VK_STOP = KeyEvent.VK_STOP;
}
if (typeof(KeyEvent.VK_FAST_FWD)!='undefined') {
var VK_FAST_FWD = KeyEvent.VK_FAST_FWD;
var VK_REWIND = KeyEvent.VK_REWIND;
}
if (typeof(KeyEvent.VK_BACK)!='undefined') {
var VK_BACK = KeyEvent.VK_BACK;
}
if (typeof(KeyEvent.VK_0)!='undefined') {
var VK_0 = KeyEvent.VK_0;
var VK_1 = KeyEvent.VK_1;
var VK_2 = KeyEvent.VK_2;
var VK_3 = KeyEvent.VK_3;
var VK_4 = KeyEvent.VK_4;
var VK_5 = KeyEvent.VK_5;
var VK_6 = KeyEvent.VK_6;
var VK_7 = KeyEvent.VK_7;
var VK_8 = KeyEvent.VK_8;
var VK_9 = KeyEvent.VK_9;
}
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
118
}
if (typeof(VK_LEFT)=='undefined') {
var VK_LEFT = 0x25;
var VK_UP = 0x26;
var VK_RIGHT = 0x27;
var VK_DOWN = 0x28;
}
if (typeof(VK_ENTER)=='undefined') {
var VK_ENTER = 0x0d;
}
if (typeof(VK_RED)=='undefined') {
var VK_RED = 0x74;
var VK_GREEN = 0x75;
var VK_YELLOW = 0x76;
var VK_BLUE = 0x77;
}
if (typeof(VK_PLAY)=='undefined') {
var VK_PLAY = 0x50;
var VK_PAUSE = 0x51;
var VK_STOP = 0x53;
}
if (typeof(VK_FAST_FWD)=='undefined') {
var VK_FAST_FWD = 0x46;
var VK_REWIND = 0x52;
}
if (typeof(VK_BACK)=='undefined') {
var VK_BACK = 0xa6;
}
if (typeof(VK_0)=='undefined') {
var VK_0 = 0x30;
var VK_1 = 0x31;
var VK_2 = 0x32;
var VK_3 = 0x33;
var VK_4 = 0x34;
var VK_5 = 0x35;
var VK_6 = 0x36;
var VK_7 = 0x37;
var VK_8 = 0x38;
var VK_9 = 0x39;
}
menumando.js: Como se despliega el menú en función de la tecla que se pulse.
document.addEventListener("keydown", function(ev) {
var diminuir=200;
var aumentar=400;
var abrir="block";
var cerrar="none";
var plato= "Pollo ranchero";
switch (ev.keyCode) {
case VK_BLUE:
/*Abrimos el MENU*/
document.getElementById("nombre").innerHTML = plato;
document.getElementById("divprincipal").style.height=90+"%";
document.getElementById("DivPLATO").style.display=abrir;
document.getElementById("DivINGREDIENTES").style.display=cerrar;
document.getElementById("ingredientes").style.width=diminuir+"px";
document.getElementById("DivRECETA").style.display=cerrar;
document.getElementById("receta").style.width=diminuir+"px";
document.getElementById("DivFOTO").style.display=cerrar;
document.getElementById("foto").style.width=diminuir+"px";
break;
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
120
case VK_YELLOW:
/*Abrimos el boton de INGREDIENTES - boton AMARILLO*/
document.getElementById("DivINGREDIENTES").style.display=abrir;
document.getElementById("ingredientes").style.width=aumentar+"px";
document.getElementById("DivRECETA").style.display=cerrar;
document.getElementById("receta").style.width=diminuir+"px";
document.getElementById("DivFOTO").style.display=cerrar;
document.getElementById("foto").style.width=diminuir+"px";
document.getElementById("numero").focus();
document.getElementById("numero").select();
break;
case VK_GREEN:
/*Abrimos el boton de RECETA - boton VERDE*/
document.getElementById("DivINGREDIENTES").style.display=cerrar;
document.getElementById("ingredientes").style.width=diminuir+"px";
document.getElementById("DivRECETA").style.display=abrir;
document.getElementById("receta").style.width=aumentar+"px";
document.getElementById("DivFOTO").style.display=cerrar;
document.getElementById("foto").style.width=diminuir+"px";
break;
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
121
case VK_RED:
/*Abrimos el boton de FOTO - boton ROJO*/
document.getElementById("DivINGREDIENTES").style.display=cerrar;
document.getElementById("ingredientes").style.width=diminuir+"px";
document.getElementById("DivRECETA").style.display=cerrar;
document.getElementById("receta").style.width=diminuir+"px";
document.getElementById("DivFOTO").style.display=abrir;
document.getElementById("foto").style.width=aumentar+"px";
break;
case VK_BACK:
/*Para salir completamente de la aplicacion*/
document.getElementById("divprincipal").style.display=cerrar;
document.getElementById("nombre").style.display=cerrar;
document.getElementById("DivPLATO").style.display=cerrar;
document.getElementById("DivINGREDIENTES").style.display=cerrar;
document.getElementById("DivRECETA").style.display=cerrar;
document.getElementById("DivFOTO").style.display=cerrar;
break;
}
ev.preventDefault();
}, false)
comensales.js: En función del número introducido de comensales se recalculan los ingredientes.
function comensales(){
var n = document.getElementById("numero").value;
if (n==0){
document.getElementById("n").innerHTML= "El numero de comensales no es correcto";
} else{
var p1 = 1*(n/2) + " pollo entero limpio <br> ";
var p2 = 4*(n/2) + " dientes de ajo <br> ";
var p3 = 1*(n/2) + " cebolleta <br> ";
var p4 = 1*(n/2) + " naranja <br> ";
var p5 = "Comino molido, guindilla cayena y orégano."
var p6 = "<br> Tomillo seco, nuez moscada y azúcar moreno."
var p7 = "<br> Aceite de oliva virgen extra, vinagre, sal y pimienta";
document.getElementById("n").innerHTML= p1 + p2 + p3 + p4 + p5 + p6 + p7;
}
}
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
123
scroll.js: Para poder desplazar la informacion de los ingredientes y la receta.
x=1;
document.addEventListener("keydown", function(mover){
var i=document.getElementById("DivINGREDIENTES").scrollHeight;
var r=document.getElementById("DivRECETA").scrollHeight;
if(mover.keyCode==VK_DOWN){
if (x==0) {
document.getElementById('DivINGREDIENTES').scrollTop = 0;
document.getElementById('DivRECETA').scrollTop = 0;
x=1;
}else if (x==1) {
document.getElementById('DivINGREDIENTES').scrollTop =+(i/3);
document.getElementById('DivRECETA').scrollTop =+(r/3);
x=2;
} else if (x==2) {
document.getElementById('DivINGREDIENTES').scrollTop =+(2*r/3);
document.getElementById('DivRECETA').scrollTop =+(2*r/3);
x=3;
} else if (x==3) {
document.getElementById('DivINGREDIENTES').scrollTop =+i;
document.getElementById('DivRECETA').scrollTop =+r;
x=0;
}
}
mover.preventDefault();
}, false);
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
124
document.addEventListener("keydown", function(mover){
var i=document.getElementById("DivINGREDIENTES").scrollHeight;
var r=document.getElementById("DivRECETA").scrollHeight;
if(mover.keyCode==VK_UP){
if (x==0) {
document.getElementById('DivINGREDIENTES').scrollTop = 0;
document.getElementById('DivRECETA').scrollTop = 0;
x=3;
}else if (x==1) {
document.getElementById('DivINGREDIENTES').scrollTop =+(i/3);
document.getElementById('DivRECETA').scrollTop =+(r/3);
x=0;
} else if (x==2) {
document.getElementById('DivINGREDIENTES').scrollTop =+(2*r/3);
document.getElementById('DivRECETA').scrollTop =+(2*r/3);
x=1;
} else if (x==3) {
document.getElementById('DivINGREDIENTES').scrollTop =+i;
document.getElementById('DivRECETA').scrollTop =+r;
x=2;
}
}
mover.preventDefault();
}, false);
zoom.js: Ampliar o disminuir la foto del emplatado.
document.addEventListener("keydown", function(zoom) {
var aumentar=350;
var quitar=0;
switch (zoom.keyCode){
case VK_UP:
document.getElementById("FOTO").style.width = aumentar+"px";
document.getElementById("aumentar").style.width = quitar+"px";
break;
}
ev.preventDefault();
}, false);
AApplliiccaacciióónn eenn eell sseerrvviiddoorr FFiilleeZZiillllaa
Mediante el software FileZilla vamos a crear un gestor de sitios para tener un
servidor para poder luego en el simulador ejecutar la aplicación.
Figura 52. Gestor de sitios FileZilla. [Fuente propia]
Figura 53. FileZilla, para la transmisión de archivos al servidor. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
127
EEmmuullaacciióónn
Para iniciar el emulador Opera TV hay que acceder a través de la máquina
virtual, se selecciona Opera TV Emulator y se hace click en iniciar.
Figura 54. Máquina virtual Oracle VM Virtual Box. [Fuente propia]
Figura 55. Inicio Opera TV Emulator. [Fuente propia]
Figura 56. Pantalla de inicio de Opera TV Emulator. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
128
Para ejecutar la aplicación en el simulador hay que introducir desde el
navegador la siguiente dirección: 127.0.0.1:555 o 127.0.0.1:5556. Accedemos
entonces al control remoto del emulador.
Figura 57. Control remoto del emulador OperaTV. [Fuente propia]
Figura 58. Ejecución de la aplicación HbbTV en OperaTV. [Fuente propia]
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
129
AANNEEXXOO BB:: AAnnáálliissiiss ddeell TTrraannssppoorrtt SSttrreeaamm ggeenneerraaddoo
Para comprobar que la generación del archivo final TSapp.ts se ha realizado
correctamente se ha utilizado el software DemuxToy Lite (Middleware Analizer).
DemuxToy Lite es una versión gratuita de un analizador de flujo de transporte
MPEG para solucionar problemas de decodificadores de DVB profesionales. Se puede
descargar en el siguiente enlace donde también se encuentra un manual para su uso.
http://www.altaisdigital.com/index.php/test-tools/download
Las siguientes capturas muestran el análisis del Transport Stream final generado
TSapp.ts, mostrando la información que contiene:
1. Escáner del archivo:
Se busca la ubicación del archivo y de se hace click en Scan.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
130
El TSapp.ts contiene 7 elementos (las tablas PSI/SI y el carrusel DSMCC)
2. Tablas PSI/SI:
Se puede comprobar que el transport stream contiene un programa y una
aplicaicon HbbTV incluida en la tabla AIT.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
131
3. Identificación de las tablas:
Se identifican las tablas PSI/SI con su correspondiente valor de table_id y el
PID de cada una de ellas.
4. Tiempos de repetición:
Da información de los tiempos de repetición de cada tabla:
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
132
5. Componentes del servicio:
En la pesaña de componentes del programa muestra de que elementos esta
compuesto el servicio.
6. Audio:
Da informcacion del audio, PID en el que se transmite, bitrate, etc.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
133
7. Servicios que contienen la transmision:
8. Informacion del servicio:
Muestra la lista de servicios para el multiplex actual (TS actual).
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
134
9. PIDS:
Muestra todos los PID dentro del flujo de transporte. Se ve que contiene un
carrusel de objetos DSMCC para HbbTV.
10. Monitorizacion del PCR:
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
135
11. Carousels:
Tambien detecta los carruseles para HbbTV.
12. Errores TS:
Un resumen de los errores que tiene el Transport Stream.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
136
Hay de prioridad 1, 2 y 3. Los mas importantes son los de prioridad 1, si hay
errores de este tipo no funcionara correctamente.
Por lo tanto, el Transport Stream se ha generado correctamente, por lo que no tiene
que haber ningun problema a la hora de transmitirlo.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
137
ÍÍNNDDIICCEE DDEE TTAABBLLAASS
Tabla 1. Botones de control remoto (Key Events). [13] ...................................................... 18
Tabla 2. Key events. [28]..................................................................................................... 29
Tabla 3. Funciones de señalización de aplicaciones HbbTV. [13] ...................................... 30
Tabla 4. Comparativa de estándares de televisión digital. [32] ........................................... 35
Tabla 5. Comparativa de DVB-T y DVB-T2. [34] ............................................................. 36
Tabla 6. Bitrate útil (Mbits/s), canal con ancho de banda 6 MHz. [36] .............................. 37
Tabla 7. Bitrate útil (Mbits/s), canal con ancho de banda 7 MHz. [36] .............................. 38
Tabla 8. Bitrate útil (Mbits/s), canal con ancho de banda 8 MHz. [36] .............................. 38
Tabla 9. Resolución de pantalla. [37] .................................................................................. 39
Tabla 10. Comparación MPEG-1 y MPEG-2. [38] ............................................................. 40
Tabla 11. Codificación de los campos de sección DSM-CC. [44] ...................................... 47
Tabla 12. Tablas PSI. [45] ................................................................................................... 50
Tabla 13. Valor de table_id de las tablas PSI/SI. [46] ......................................................... 51
Tabla 14. Valor de PID de las tablas PSI/SI. [46] ............................................................... 52
Tabla 15. Network Information Table (NIT). [46] .............................................................. 53
Tabla 16. Service list descriptor. [46].................................................................................. 54
Tabla 17. service_type para Service descriptor. [46] .......................................................... 54
Tabla 18. Program Association Section (PAT). [45] .......................................................... 55
Tabla 19. Program Map Section (PMT). [45] ..................................................................... 56
Tabla 20. Asignación de stream_type. [45] ......................................................................... 57
Tabla 21. Stream identifier descriptor. [46] ........................................................................ 58
Tabla 22. Data broadcast id descriptor. [46] ....................................................................... 58
Tabla 23. Data broadcast id. [47] ........................................................................................ 58
Tabla 24. Service Description Table. [46] ........................................................................... 60
Tabla 25. running_status. [46] ............................................................................................. 61
Tabla 26. Service descriptor. [46] ....................................................................................... 62
Tabla 27. Tiempos de repetición Tablas PSI/SI. [47].......................................................... 62
Tabla 28. carousel_identifier_descriptor. [45] .................................................................... 64
Tabla 29. association_tag_descriptor .................................................................................. 64
Tabla 30. Application Information Table. [50] ................................................................... 67
Tabla 31. application_control_code. [50] ............................................................................ 68
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
138
Tabla 32. Application Descriptor. [50] ................................................................................ 68
Tabla 33. Visibility application. [50]................................................................................... 69
Tabla 34. Transport protocol descriptor. [50] ..................................................................... 69
Tabla 35. protocol_id. [50] .................................................................................................. 69
Tabla 36. selector_byte. [50] ............................................................................................... 70
Tabla 37. Application Name Descriptor. [50] ..................................................................... 70
Tabla 38. Simple application location descriptor. [50] ....................................................... 71
Tabla 39. Características del vídeo obtenidas de Tovid. [Fuente propia] ........................... 77
Tabla 40. Comandos de conversión del vídeo a formato .m2v. [Fuente propia]................. 78
Tabla 41. Tasas de bits según resolución del vídeo. [56] .................................................... 79
Tabla 42. Comandos de conversión del archivo .es a .pes. [Fuente propia]........................ 79
Tabla 43. Comandos de conversión del archivo .pes a .ts. [Fuente propia] ........................ 80
Tabla 44. Características del audio. [Fuente propia] ........................................................... 80
Tabla 45. Comandos de conversión audio .mp2. [Fuente propia] ....................................... 81
Tabla 46. Comandos de conversión del archivo .es a .pes. [Fuente propia]........................ 82
Tabla 47. Comandos de conversión del archivo .pes a .ts. [Fuente propia] ........................ 82
Tabla 48. Bitrates de los archivos generados .ts. [Fuente propia] ....................................... 92
Tabla 49. Bitrate null.ts [Fuente propia].............................................................................. 93
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
139
ÍÍNNDDIICCEE DDEE FFIIGGUURRAASS
Figura 1. Logo HbbTV. [10] .............................................................................................. 14
Figura 2. Botón rojo RTVE. [11] ....................................................................................... 14
Figura 3. LovesTV España. [12] .......................................................................................... 15
Figura 4. Arquitectura de un sistema de Televisión Híbrida. [13] ..................................... 16
Figura 5. Servicio con aplicación interactiva "Botón Rojo". [13] ...................................... 17
Figura 6. HbbTV combinada con Companion Screen. [14] ............................................... 19
Figura 7. Relación de HbbTV con otros estándares. [13] .................................................. 20
Figura 8. Estándares web de W3C. [21] ............................................................................. 22
Figura 9. Estándar MPEG DASH. [27] .............................................................................. 24
Figura 10. Diagrama de flujo del funcionamiento de la aplicación. [Edición propia] ....... 32
Figura 11. Estándares de Televisión Digital alrededor del mundo. [31] ............................ 34
Figura 12. Diagrama sistema DVB. ................................................................................... 36
Figura 13. Sistema MPEG-2. Clases de sistema multiplex. [39] ....................................... 41
Figura 14. Composición de un TS. [39] ............................................................................. 42
Figura 15. Estructura de la cabecera de un TS. [43] ........................................................... 44
Figura 16. Transmisión de datos dentro de un MPEG-TS [44]. ......................................... 44
Figura 17. Ejemplo de carrusel de objetos en servicios DVB. [44] ................................... 48
Figura 18. Tablas PSI/SI y PID especificados por DVB-SI. [46] ...................................... 51
Figura 19. Proceso de localización del servicio o programa. [48] ..................................... 59
Figura 20. Python. [54] ....................................................................................................... 74
Figura 21. Comandos Tovid. [Fuente propia] .................................................................... 75
Figura 22. Generación de DVB TS. [55] ............................................................................ 76
Figura 23. Información del archivo .avi con la herramienta Tovid [Fuente propia]. ......... 77
Figura 24. Proceso de codificación del vídeo. [Fuente propia] .......................................... 78
Figura 25. Proceso de codificación del audio. [Fuente propia] .......................................... 81
Figura 26. oc-update.sh de OpenCaster. [Fuente propia] ................................................... 83
Figura 27. Generación de tablas PSI/SI. [Fuente propia] ................................................... 92
Figura 28. Generación del Transport Stream final. [Fuente propia] .................................. 94
Figura 29. DTA-111 Multi-Standard Modulator with VHF/UHF Upconverter. [57] ......... 95
Figura 30. DTC-300 StreamXpress®. [58] ........................................................................ 96
Figura 31. Transport Stream generado en StreamXpress. [Fuente propia] ......................... 97
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
140
Figura 32. Composición del Transport Stream en StreamXpress. [Fuente propia] ............ 97
Figura 33. Composición del servicio emitido StreamXpress. [Fuente propia] .................. 98
Figura 34. Información de los Elementary Stream en StreamXpress. [Fuente propia] ...... 98
Figura 35. Emisión del Transport Stream StreamXpress. [Fuente propia] ........................ 98
Figura 36. Activación HbbTV en TV. [Fuente propia] ...................................................... 99
Figura 37. Sintonización de canal (I). [Fuente propia] ....................................................... 99
Figura 38. Sintonización de canal (II). [Fuente propia] ................................................... 100
Figura 39. Sintonización de canal (III). [Fuente propia] .................................................. 100
Figura 40. Sintonización de canal (IV). [Fuente propia] .................................................. 100
Figura 41. Parámetros de configuración del canal de TV. [Fuente propia]...................... 101
Figura 42. Servicio transmitido desde StreamXpress. [Fuente propia] ............................ 101
Figura 43. Emisión del servicio AppHbbTV. [Fuente propia] ......................................... 101
Figura 44. Diseño del Botón rojo para la notificación. [Fuente propia] ........................... 102
Figura 45. Notificación de aplicación interactiva con Botón rojo. [Fuente propia] ......... 102
Figura 46. Aplicación interactiva HbbTV. [Fuente propia] ............................................. 102
Figura 47. Aplicación interactiva – Ingredientes. [Fuente propia] ................................... 103
Figura 48. Aplicación interactiva - Receta. [Fuente propia] ............................................ 103
Figura 49. Aplicación interactiva – Emplatado (I). [Fuente propia] ................................ 104
Figura 50. Aplicación interactiva – Emplatado (II). [Fuente propia] ............................... 104
Figura 51. Aplicación HbbTV. [Fuente propia] ............................................................... 107
Figura 52. Gestor de sitios FileZilla. [Fuente propia] ...................................................... 126
Figura 53. FileZilla, para la transmisión de archivos al servidor. [Fuente propia] .......... 126
Figura 54. Máquina virtual Oracle VM Virtual Box. [Fuente propia] ............................. 127
Figura 55. Inicio Opera TV Emulator. [Fuente propia] .................................................... 127
Figura 56. Pantalla de inicio de Opera TV Emulator. [Fuente propia] ............................ 127
Figura 57. Control remoto del emulador OperaTV. [Fuente propia] ............................... 128
Figura 58. Ejecución de la aplicación HbbTV en OperaTV. [Fuente propia] .................. 128
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
141
AABBRREEVVIIAATTUURRAASS··AACCRRÓÓNNIIMMOOSS
AIT Application Information Table
AJAX Asynchronuos JavaSript And XML
API Application Programming Interface
ATSC Advanced Television Systems Committee
BAT Bouquet Association Table
CEA Consumer Electronics Association
COFDM Coded Orthogonal Frequency Division Multiplexing
CS Companion Screen
CSS Cascading Style Sheets
DASH Dynamic Adaptive Streaming over HTTP
DDB Download-DataBlock
DII Download-InfoIndication
DIT Discontinuity Information Table
DOCTYPE Document Type Declaration
DSI Download-ServerInitiate
DSM-CC Digital Storage Media Command and Control
DTMB Digital Terrestrial Multimedia Broadcast
DVB Digital Video Broadcasting
EBU European Broadcasting Union
EIT Event Information Table
ES Elementary Stream
ETSI European Telecommunications Standards Institute
HbbTV Hybrid Broadcast Broadband TV
HTML HyperText Markup Language
HTTP Hypertext Transfer Protocol
IOR Interoperable Object References
IP Internet Protocol
ISDB Integrated Services Digital Broadcasting
ISO International Organization for Standardization
LSB Least Significant Bit
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
142
MHP Multimedia Home Platform
MIME Multipurpose Internet Mail Extensions
MPEG Moving Picture Experts Group
MS Main Screen
NIT Network Information Table
OIPF Open IPTV Forum
ORB Object Request Broker
PAT Program Association Table
PES Packetized Elementary Stream
PID Packet IDentifier
PMT Program Map Table
PS Program Stream
PSI/SI Program Specific Information / Service Information
QAM Quadrature Amplitude Modulation
QPSK Phase Shift Keying
RST Running Status Table
SDT Service Description Table
SIT Selection Information Table
ST Stuffing Table
TDT Televisión Digital Terrestre
TDT Time and Date Table
TLS Transport Layer Security
TOT Time offset Table
TS Trasport Stream
TVE Televisión Española
TVi Television interactiva
UHF Ultra High Frecuency
URI Uniform Resource Identifier
URL Uniform Resource Locator
VHL Very High Frecuency
W3C World Wide Consortium
XHTML eXtensible HyperText Markup Language
XML eXtensible Markup Language
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
143
BBIIBBLLIIOOGGRRAAFFÍÍAA
[1] Televisión digital terrestre en España. Wikipedia [En línea]. 12 Noviembre 2018
[Consulta: 29 Enero 2019]. Disponible en:
https://es.wikipedia.org/wiki/Televisi%C3%B3n_digital_terrestre_en_Espa%C3%B1a
[2] Televisión Digital. Television Digital Gobierno de España [En línea]. [Consulta: 29
Enero 2019]. Disponible en:
http://www.televisiondigital.gob.es/TELEVISIONDIGITAL/Paginas/television-
digital.aspx
[3] Interactividad. Television Digital Gobierno de España [En línea]. [Consulta: 29 Enero
2019]. Disponible en:
http://www.televisiondigital.gob.es/TelevisionDigital/tecnologias/Interactividad/Paginas/in
teractividad.aspx
[4] Sistemas Distribuidos - Reinaldo Vargas. WordPress [En línea]. 18 Febrero 2017.
[Consulta: 29 Enero 2019]. Disponible en:
https://sistemadistribuidosreinaldovargas.wordpress.com/2017/02/18/138/
[5] ¿Qué es middleware?. Red Hat [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://www.redhat.com/es/topics/middleware/what-is-middleware#.
[6] Multimedia Home Platform. Wikipedia [En línea]. 18 Mayo 2018 [Consulta: 29 Enero
2019]. Disponible en:
https://es.wikipedia.org/wiki/Multimedia_Home_Platform
[7] La televisión híbrida. Colegio Oficial de Ingenieros Técnicos de Telecomunicación [En
línea] Abril 2012 [Consulta: 29 Enero 2019]. Disponible en:
https://www2.coitt.es/res/revistas/11%20TV.pdf
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
144
[8] Vista de ARQUITECTURA GENÉRICA PARA EL DESPLIEGUE DE SERVICIOS
T-LEARNING SOPORTADOS POR DVB-T. Revistas.uis.edu.co [En línea]. 27 Marzo
2014 [Consulta: 29 Enero 2019]. Disponible en:
https://revistas.uis.edu.co/index.php/revistagti/article/view/4569/5807
[9] Televisión Digital – HbbTV. Television Digital Gobierno de España [En línea].
[Consulta: 29 Enero 2019]. Disponible en:
http://www.televisiondigital.gob.es/TelevisionDigital/tecnologias/Interactividad/Paginas/h
bb-tv.aspx
[10] Overview. Hbbtv.org [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://www.hbbtv.org/overview/.
[11] Guía interactiva del botón RTVE BOTÓN ROJO. lab.rtve.es [En línea]. [Consulta: 29
Enero 2019]. Disponible en: http://lab.rtve.es/botonrojo/
[12] El botón azul de LOVEStv: las diferencias para acceder a Telecinco, Antena 3 y
RTVE, 2018. Las Provincias [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://www.lasprovincias.es/tecnologia/lovestv-boton-azul-20181204151335-nt.html
[13] HbbTV V2.0.2 Specification – ETSI TS 102 796. Hbbtv.org [En línea]. 16 Febrero
2018 [Consulta: 29 Enero 2019]. Disponible en: https://www.hbbtv.org/wp-
content/uploads/2018/02/HbbTV_v202_specification_2018_02_16.pdf.
[14] Plataforma extremo-a-extremo compatible con el estándar HbbTV 2.0 para la TV
híbrida y multi-dispositivo. UPV Universitat Politècnica de València. RiuNet. [En línea]
Septiembre 2017 [Consulta: 29 Enero 2019]. Disponible en:
https://riunet.upv.es/bitstream/handle/10251/101929/6610-18863-1-PB.pdf?sequence=1.
[15] ETSI TS 103 606 V1.1.1. Hybrid Broadcast Broadband Television; Operator
Applications. ETSI [En línea]. Mayo 2018. [Consulta: 29 Enero 2019]. Disponible en:
https://www.etsi.org/deliver/etsi_ts/103600_103699/103606/01.01.01_60/ts_103606v0101
01p.pdf.
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
145
[16] Open IPTV Forum. Wikipedia [En línea]. 23 Octubre 2018 [Consulta: 29 Enero
2019]. Disponible en: https://en.wikipedia.org/wiki/Open_IPTV_Forum
[17] IPTV 3D3I. DOCUMENTOP [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://documentop.com/iptv-3d3i_59985db31723dd3f7bff0954.html
[18] HbbTV. Wikipedia [En línea]. 20 Octubre 2017 [Consulta: 29 Enero 2019].
Disponible en: https://es.wikipedia.org/wiki/HbbTV
[19]Universal Plug and Play. Wikipedia [En línea] [Consulta: 29 Enero 2019]. Disponible
en: https://es.wikipedia.org/wiki/Universal_Plug_and_Play
[20] CE-HTML. Wikipedia [En línea]. 15 de Noviembre de 2018 [Consulta: 29 Enero
2019]. Disponible en: https://en.wikipedia.org/wiki/CE-HTML.
[21] DELGADO RODRÍGUEZ, HUGO ADRIÁN, 2018, Estándares Web W3C - Qué son,
cómo funciona, para qué sirven. Diseño de Páginas Web, Sitios de Internet y
Posicionamiento SEO akus.net [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://disenowebakus.net/estandares-web.php
[22] DELGADO RODRÍGUEZ, HUGO ADRIÁN, 2018, DOCTYPE HTML5 Definición
de Tipo de Documento. Diseño de Páginas Web, Sitios de Internet y Posicionamiento SEO
akus.net [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://disenowebakus.net/doctype-html5-definicion-de-tipo-de-documento.php
[23] CSS TV Profile 1.0. W3C [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://www.w3.org/TR/css-tv/
[24] JavaScript. Wikipedia [En línea]. 25 Octubre 2018 [Consulta: 29 Enero 2019].
Disponible en: https://es.wikipedia.org/wiki/JavaScript
[25] AJAX. Wikipedia [En línea]. 6 Noviembre 2018 [Consulta: 29 Enero 2019].
Disponible en: https://es.wikipedia.org/wiki/AJAX
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
146
[26] Que es MPEG-DASH | Video: Formatos/Tecnología. WebTV Solution. [En línea] 4
Noviembre 2015 [Consulta: 29 Enero 2019]. Disponible en:
https://www.webtvsolutions.com/support.php?s=other_docs&d=dash&lang=es.
[27] MPEG-Dash. Encoding [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://www.encoding.com/mpeg-dash/
[28] Release 2 Specification. Volume 5 – Declarative Application Environment. OIPF [En
línea]. [Consulta: 29 Enero 2019]. Disponible en: https://www.oipf.tv/docs/OIPF-T1-
R2_Specification-Volume-5-Declarative-Application-Environment-v2_3-2014-01-24.pdf
[29] Preguntas Frecuentes. 2018. Cabildodelanzarote.com [En línea]. [Consulta: 29 Enero
2019]. Disponible en:
http://www.cabildodelanzarote.com/Uploads/doc/20090706134551411.pdf
[30] Televisión Digital Terrestre (T.D.T). Enerxia.net [En línea]. 10 Octubre 2006
[Consulta: 29 Enero 2019]. Disponible en:
http://www.enerxia.net/portal/index.php?option=com_content&view=article&id=37:tdt&c
atid=53&Itemid=115
[31] PROMAX, ESTÁNDARES DE TV DEL MUNDO (II): DVB-T, dominio mundial en
la Radiodifusión Digital Terrestre. El Blog de Promax [En línea]. 6 Diciembre 2013
[Consulta: 29 Enero 2019]. Disponible en:
https://blogdepromax.wordpress.com/2013/12/06/estandares-de-tv-del-mundo-ii-dvb-t-
dominio-mundial-en-la-radiodifusion-digital-terrestre/
[32] CHIE, STELLA, ZAMBRANO, MAYTEÉ and MEDINA, CARLOS, Estándares
actuales de televisión digital: Una breve reseña. Revistas.utp.ac.pa [En línea]. 2015
[Consulta: 29 Enero 2019]. Disponible en:
http://revistas.utp.ac.pa/index.php/prisma/article/view/606
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
147
[33] Vladimir Marianov, Christian Oberli, Miguel Ríos. ANALISIS DE LOS
ESTANDARES DE TRANSMISION DE TELEVISION DIGITAL TERRESTRE Y SU
APLICABILIDAD AL MEDIO NACIONAL. Docplayer.es [En línea]. 10 Octubre 2006
[Consulta: 29 Enero 2019]. Disponible en: https://docplayer.es/22668084-Analisis-de-los-
estandares-de-transmision-de-television-digital-terrestre-y-su-aplicabilidad-al-medio-
nacional.html
[34] DVB-T2 Lite: una nueva ventana de oportunidad para los servicios en movilidad,
2018. Panorama Audiovisual [En línea]. 11 Noviembre 2011 [Consulta: 29 Enero 2019].
Disponible en: https://www.panoramaaudiovisual.com/2011/10/11/dvb-t2-lite-una-nueva-
ventana-de-oportunidad-para-los-servicios-en-movilidad/
[35] COFDM. Wikipedia [En línea]. 19 Octubre 2018 [Consulta: 29 Enero 2019].
Disponible en: https://es.wikipedia.org/wiki/COFDM
[36] ETSI EN 300 744 V1.6.2. Digital Video Broadcasting (DVB); Framing structure,
channel coding and modulation for digital terrestrial television. ETSI [En línea]. Octubre
de 2015 [Consulta: 29 Enero 2019]. Disponible en:
http://www.etsi.org/deliver/etsi_en/300700_300799/300744/01.05.01_40/en_300744v0105
01o.pdf
[37] Formatos de televisión digital. Es.slideshare.net [En línea]. 6 Mayo 2012 [Consulta:
29 Enero 2019]. Disponible en: https://es.slideshare.net/javierconj1/formatos-de-televisin-
digital
[38] MARTÍN, J., SEDANO, JORDAN, H, OSCAR and CORTINA, ANDRÉS, 2018,
Formatos de video: Todo lo que deberías saber. Emezeta.com [En línea]. 24 Septiembre
2014 [Consulta: 29 Enero 2019]. Disponible en:
https://www.emezeta.com/articulos/formatos-de-video-todo-lo-que-deberias-saber
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
148
[39] Sistema Multiplex e informacion de Servicio. DiBEG [En línea]. Junio 2017
[Consulta: 29 Enero 2019]. Disponible en:
https://www.dibeg.org/news/previous_doc/0706_3Argentina_ISDB-
T_seminar/Argentina_ISDB-T_seminar_5_MUX_SI(Spanish)rev1.pdf
[40] COM, 2018, MPEG (PSI/SI). Es.slideshare.net [En línea]. 30 Septiembre 2010.
[Consulta: 6 Diciembre 2018]. Disponible en: https://es.slideshare.net/antenared/mpeg-
5326072
[41] MURCIA BARRERA, JAVIER AUGUSTO, 2018, Transmisión tdt -
ts. Es.slideshare.net [En línea]. 6 Mayo 2012. [Consulta: 6 Diciembre 2018]. Disponible
en: https://es.slideshare.net/javierconj1/transmisin-tdt-ts
[42] Transport Stream. Wikipedia.org [online]. En línea]. 18 Mayo 2018. [Consulta: 6
Diciembre 2018]. Disponible en: https://es.wikipedia.org/wiki/Transport_Stream
[43] VILLAMARÍN, DIEGO, OLMEDO, GONZALO, LARA, ROMÁN and ILLESCAS,
MARÍA AUGUSTA, 2012, [En línea]. Noviembre 2012. [Consulta: 6 Diciembre 2018].
Disponible en:
https://www.researchgate.net/profile/Diego_Villamarin/publication/320955836_Generacio
n_de_Transport_Stream_con_Audio_Video_y_Datos_de_Interactividad_para_el_Sistema_
de_Television_Digital_Terrestre_ISDB-
Tb/links/5a14323545851586d8ee76cd/Generacion-de-Transport-Stream-con-Audio-
Video-y-Datos-de-Interactividad-para-el-Sistema-de-Television-Digital-Terrestre-ISDB-
Tb.pdf
[44] ETSI TR 101 202 v1.2.1. Digital Video Broadcasting (DVB). Implementation
guidelines for Data Broadcasting. ETSI [En línea]. Enero 2003 [Consulta: 29 Enero 2019].
Disponible en:
https://www.etsi.org/deliver/etsi_tr/101200_101299/101202/01.02.01_60/tr_101202v0102
01p.pdf
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
149
[45] ISO/IEC 13818-1. INTERNACIONAL STANDARD. Information Technology –
Generic coding of moving pictures and associated audio information:
Systems. Ecee.colorado.edu [En línea]. 1 Diciembre 2000 [Consulta: 29 Enero 2019].
Disponible en: http://ecee.colorado.edu/~ecen5653/ecen5653/papers/iso13818-1.pdf
[46] ETSI EN 300 468 V1.15.1. Digital Video Broadcasting (DV); specification for
Service Information (SI) in DVB systems. ETSI [En línea]. Marzo 2016 [Consulta: 29
Enero 2019]. Disponible en:
https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.15.01_60/en_300468v011
501p.pdf
[47] DVB Services - identifiers, 2018. Dvbservices.com [En línea]. [Consulta: 29 Enero
2019]. Disponible en:
https://www.dvbservices.com/identifiers/data_broadcast_id?page=3
[48] CASTILLO S., YUNIOR ANDRÉS, 2015, Introducción a la Televisión Digital
actual. Monografias.com [En línea]. 2015. [Consulta: 29 Enero 2019]. Disponible en:
https://www.monografias.com/trabajos105/introduccion-television-digital-
actual/introduccion-television-digital-actual.shtml
[49] Eva.fing.edu.uy [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://eva.fing.edu.uy/pluginfile.php/209149/mod_resource/content/1/dvb_si.pdf
[50] ETSI TS 102 809 v1.3.1. Digital Vídeo Broadcasting (DVB); Signalling and carriage
of interactive applications and services in Hybrid broadcast/broadband environments. ETSI
[En línea]. Junio 2017 [Consulta: 29 Enero 2019]. Disponible en:
https://www.etsi.org/deliver/etsi_ts/102800_102899/102809/01.03.01_60/ts_102809v0103
01p.pdf
[51] Tutorials OpenCaster. Avalpa.com [En línea]. [Consulta: 29 Enero 2019]. Disponible
en:
http://www.avalpa.com/assets/freesoft/opencaster/OpenCaster-tutorials.3.2.2.tgz
Generación de un Transport Stream de televisión interactiva | María de los Ángeles Mateos Moreno
150
[52] Avalpa Broadcast Server User Manual OpenCaster. Avalpa.com [En línea]. [Consulta:
29 Enero 2019]. Disponible en:
http://www.avalpa.com/assets/freesoft/opencaster/AvalpaBroadcastServerUserManual-
v3.0.pdf
[53] [SOLVED] Compiling Opencaster from source / Newbie Corner / Arch Linux
Forums, 2018. Bbs.archlinux.org [En línea]. 28 Mayo 2014 [Consulta: 29 Enero 2019].
Disponible en: https://bbs.archlinux.org/viewtopic.php?id=182088
[54] ¿Qué es el lenguaje de programación PYTHON? - Base de Conocimientos - ICTEA,
2018. Ictea.com [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
http://www.ictea.com/cs/index.php?rp=/knowledgebase/8649/iQue-es-el-lenguaje-de-
programacion-PYTHON.html
[55] Jose M. Martínez. Universidad Autónoma de Madrid. Arantxa.ii.uam.es [En línea].
2008-2009 [Consulta: 29 Enero 2019]. Disponible en:
http://arantxa.ii.uam.es/~jms/tvd/temas09/TVD2009_Tema1.5.2MultiplexacionDVB.pdf
[56] Derek Stanley. What bitrate should I use when encoding my video? How do I
optimize my video for the web?. Ezs3.com [En línea]. 2008-2009 [Consulta: 29 Enero
2019]. Disponible en:
https://www.ezs3.com/public/What_bitrate_should_I_use_when_encoding_my_video_Ho
w_do_I_optimize_my_video_for_the_web.cfm
[57] DTA-111. Dektec.com [En línea]. [Consulta: 29 Enero 2019]. Disponible en:
https://www.dektec.com/products/PCI/DTA-111/downloads/DTA-111%20Leaflet.pdf
[58] DTC-300 StreamXpress. Dektec.com [En línea]. [Consulta: 29 Enero 2019].
Disponible en:
https://www.dektec.com/products/applications/StreamXpress/downloads/DTC-
300%20StreamXpress%20Leaflet.pdf