Generación de un Transport Stream de televisión...

151
Escuela Politécnica Superior de Linares 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 UNIVERSIDAD DE JAÉN Escuela Politécnica Superior de Linares Trabajo Fin de Grado ______

Transcript of Generación de un Transport Stream de televisión...

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