Está en la página 1de 18

Universidad Técnica Federico Santa

Marı́a
Campus Casa Central
Valparaı́so, Chile

“MANUAL TRANSMISIÓN DE
VIDEO UTILIZANDO TARJETA
MODULADORA DTA-115 EN LINUX”

Televisión digital bajo norma ISDB-Tb

Desarrollado por:
Sebastián Castillo Araya Fecha:
Correo : 28 Diciembre 2022
sebastian.castilloar@sansano.usm.cl
Índice
1 Introducción 2

2 Requerimientos 2
2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2.1 Instalación de DtPLay en Linux . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Instalación de OpenCaster 2.4-3.2.2 con parche de LIFIA para compatibili-
dad ISDB-Tb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Generación Transport Stream 6


3.1 Obtención Tablas SI/PSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1 Tabla NIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.2 Tabla SDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.3 Tabla PAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.4 Tabla PMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.5 Tablas a archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.6 Ejecutar gtables.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Finalización archivo transport stream . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Transmisión Transport Stream 14

5 Resultados 15

6 Conclusión 17

7 Referencias 17

Índice de tablas
1 Parámetros codificación de audio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Parámetros codificación de video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Parámetros esaudio2pes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Parámetros pesvideo2ts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5 Parámetros pesaudio2ts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6 Parámetros tscbrmuxer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Parámetros Transmisión con DtPlay. . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Índice de figuras
1 Comando DtPlay ejecutado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 Sintonizando señal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Transmitiendo video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Manual transmisión con DTA-115 1


1. Introducción
El presente manual tiene como objetivo guı́ar al lector paso a paso para transmitir video a la
televisión digital, bajo la norma ISDB-Tb, utilizando la tarjeta moduladora DTA-115 desarrollada
por DekTec. Se hace énfasis en que esta es una guı́a que se enfoca plenamente en realizar la
transmisión y que no busca explicar conceptos teóricos que pueda conllevar esta. Para casos en que
se desee profundizar conceptos se recomienda al lector revisar documentos en sección Referencias
los cuales proveen mayor información.

2. Requerimientos
Los requisitos de hardware y software indicados a continuación, fueron utilizados en pruebas de
transmisión y lograron un resultado satisfactorio.

2.1. Hardware
Para transmitir:
Computador:
• CPU: Intel Core i5-2400 3.1 GHz
• Memoria Ram: 4GB
• Disco Duro: 250GB
Tarjeta Moduladora DTA-115.
Una antena para transmitir.
Para recibir(opcional para observar resultados):
Televisión.
Set Top-Box (si la televisión ya cuenta con compatibilidad digital entonces este dispositivo
no hace falta).
Una antena para recibir.

2.2. Software
Sistema operativo GNU/Linux Ubuntu 14.04 LTS
Python 2.7.6
GCC 4.8.4
ffmpeg version N-79177
DtPlay en Linux
OpenCaster 2.4-3.2.2 con parche que agregó LIFIA para compatibilidad ISDB-Tb

Manual transmisión con DTA-115 2


La mayorı́a del software utilizado no deberı́a significar problema su adquisición, aún ası́ respecto a
los dos últimos requisitos de software se indica como llevar a caso su instalación ya que necesitan
modificaciones.

2.2.1. Instalación de DtPLay en Linux


DtPlay es un software para Linux, perteneciente a la empresa Dektec, el cual permite al usuario
realizar una transmisión de un transport stream generado por OpenCaster.
Lo primero a realizar es descargar los controladores de la tarjeta moduladora DTA-115 y el SDK
para Linux, los cuales se encuentran disponibles en la página oficial:
Drivers
Para instalar los drivers se siguen los siguientes pasos:
Descomprimir las fuente
$ tar zxf LinuxSDK.tar.gz
Dentro de la carpeta Linux ejecutar comando make
$ cd LinuxSDK/Drivers/Dta/Source/Linux
$ make
$ sudo make install
Siguiendo con la instalación, se descarga el software DtPlay de la página oficial:
DtPlay para Linux
Se deben copiar los archivos DTAPI.o y DTAPI64.o de la carpeta
/LinuxSDK/DTAPI/lib/GCC4.3.2
también el archivo DTAPI.h de la carpeta
/LinuxSDK/DTAPI/Include
y los tres archivos pegarlos en la carpeta
/DtPlay/DTAPI/
Luego el siguiente paso es ejecutar make en la carpeta DtPlay
$ cd DtPlay
$ make
Para ejecutar el programa se puede utilizar el siguiente comando:
$ ./DtPlay <file> -t 115
DtPlay es un software que permite transmitir archivos transport stream que contengan la cabe-
cera Transmission Multiplexing Configuration Control (TMCC), pero los archivos TS generados
por OpenCaster no incluyen estos bytes, por lo que es necesario modificar el código fuente del
programa.
Para esto se modifica el archivo
DtPlay.cpp ubicado en DtPlay/Source

Manual transmisión con DTA-115 3


En el que se modifica la función
InitIsdbtPars
la cual inicializa los parámetros de la norma ISDB-Tb, por ejemplo el número de segmentos, layers,
coderate, modulación, etc.
Los parámetros escogidos son en base a los utilizados por LIFIA en sus test.
Primero se deben comentar las siguientes lı́neas:

1 // IsdbtPars . m_DoMux = false ;


2 // dr = IsdbtPars . RetrieveParsFromTs ( pTempBuf , NumBytes );

Y lo siguiente agregar los parametros del archivo transport stream que se desea trasmitir

1 // Cambios para agregar parametros ISDB -T


2 IsdbtPars . m_DoMux = true ;
3 IsdbtPars . m_FilledOut = true ;
4 IsdbtPars . m_ParXtra0 =90413;
5 IsdbtPars . m_BType =0;
6 IsdbtPars . m_Mode =3;
7 IsdbtPars . m_Guard =2;
8 IsdbtPars . m_PartialRx =0;
9 IsdbtPars . m_Emergency =0;
10 IsdbtPars . m_IipPid =8176;
11 IsdbtPars . m_LayerOther =1;
12 IsdbtPars . m_Virtual13Segm =0;
13 DtIsdbtLayerPars layer1 , layer2 , layer3 ;
14 layer1 . m_NumSegments =13;
15 layer1 . m_Modulation =3;
16 layer1 . m_CodeRate =2;
17 layer1 . m_TimeInterleave =2;
18 IsdbtPars . m_LayerPars [0]= layer1 ;
19 layer2 . m_NumSegments =0;
20 layer2 . m_Modulation =3;
21 layer2 . m_CodeRate =2;
22 layer2 . m_TimeInterleave =2;
23 IsdbtPars . m_LayerPars [1]= layer2 ;
24 layer3 . m_NumSegments =0;
25 layer3 . m_Modulation =3;
26 layer3 . m_CodeRate =2;
27 layer3 . m_TimeInterleave =2;
28 IsdbtPars . m_LayerPars [2]= layer3 ;
29 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(0 ,1) ) ; // PAT
30 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(16 ,1) ; // NIT
31 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(17 ,1) ; // SDT
/ BAT
32 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(1031 ,1) ) ; //
PMT 1031

Manual transmisión con DTA-115 4


33 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(2001 ,1) ) ;
34 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(2004 ,1) ) ;
35 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(2020 ,1) ) ;
36 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(2063 ,1) ) ; //
VIDEO
37 IsdbtPars . m_Pid2Layer . insert ( std :: pair < int , int >(2083 ,1) ) ; //
AUDIO

Luego de realizar los cambios se debe compilar el código fuente nuevamente.


$ cd DtPlay
$ make

2.2.2. Instalación de OpenCaster 2.4-3.2.2 con parche de LIFIA para


compatibilidad ISDB-Tb
OpenCaster es un software gratuito y abierto desarrollado por AVALPA, para el cual el Laborato-
rio de Investigación y Formación en Informática Avanzada (LIFIA), de la Universidad Nacional de
la Plata, programó un parche para la versión 2.4 para que este soporte la norma ISDB-Tb. Open-
Caster permite generar archivos transport stream que posteriormente pueden ser transmitidos con
DtPlay.
OpenCaster puede ser descargado directamente de la página oficial de AVALPA:
Sitio oficial AVALPA
Pero la versión que se encuentra disponible es más actual que la 2.4. Para solucionar esto se
adjunta un vı́nculo en que se puede descargar OpenCaster 2.4 y además el parche programado por
LIFIA.
OpenCaster2.4
PatchLIFIA2.4
Para instalar el software se deben ubicar los archivos OpenCaster2.4.tgz y OpenCaster-lifia-rev362.patch
en un mismo directorio. Luego dentro del mismo descomprimir utilizando el comando
$ tarzvf OpenCaster2.4.tgz
Posteriormente se ejecuta el parche desarrollado por LIFIA
$ cd OpenCaster2.4/
$ patch -p1< ../OpenCaster2.4-lifia-rev362.patch
AVISO: El siguiente paso es suficiente para la mayorı́a de las referencias en las que se basa este
manual, aún ası́ para la fecha y prueba a la que se creó este documento este paso fue omitido y mo-
dificado debido a problemas con el uso de ciertos comandos del software (pesvideo2ts, tscbrmuxer
y tsstamp).
Instalar OpenCaster con los privilegios del usuario root
$ sudo make
$ sudo makeinstall

Manual transmisión con DTA-115 5


Si se escoge probar hasta acá entonces continuar con siguiente sección, en caso contrario se debe
descargar
Repositorio OpenCaster3.2.2+ParcheLIFIA-aplicado
Luego debemos copiar las carpetas pesvideo2ts, tscbrmuxer y tsstamp ubicadas en
/OpenCaster2.4/tools
para posteriormente reemplazar las carpetas con sus mismos nombres ubicadas en
/opencaster_isdb-tb/tools
el cual es el directorio por defecto del repositorio descargado.
Finalmente se instala OpenCaster-isdb-tb con los privilegios del usuario root
$ sudo make
$ sudo makeinstall
Para probar que la instalación fue realizada con exito, ejecutar el siguiente comando
$ python -c "from dvbobjects.PSI.PAT import *"
El comando deberı́a ejecutar sin mostrar ningún error en consola.

3. Generación Transport Stream


Para crear un flujo único de paquetes de transporte TS inicialmente debemos escoger un video
fuente, para este caso se descargó un video directamente de YouTube en formato AVI ya que
a partir de las referencias en las que está basado este manual se comprobó que este formato
compatibiliza correctamente con el programa OpenCaster.
El siguiente paso es obtener el Elementary Stream (ES) de audio
$ ffmpeg -i bruno_mars.avi -vn -ac 2 -acodec mp2 -f mp2 -ab 128000 -ar
48000 audio.mp2

Parámetro Descripción
-i Archivo fuente en formato .avi
-vn Ignora la señal de audio.
-ac Número de canales, por defecto 1.
Códec de audio, se usa mp2 para compatibi-
-acodec
lidad con TS.
-f Formato de salida.
-ab Tasa de bits por segundo.
Frecuencia de muestreo de audio, por defecto
-ar
es 44100Hz
audio.mp2 Nombre archivo de salida.

Tabla 1: Parámetros codificación de audio.

Luego el Elementary Stream (ES) de video

Manual transmisión con DTA-115 6


$ ffmpeg -i bruno_mars.avi -an -vcodec mpeg2video -f mpeg2video -s 1920x1080 -r 25
-aspect 16:9 -deinterlace -b 8000k -minrate 8000k -maxrate 8000k -bf 2 -bufsize
1835008 video.m2v

Parámetro Descripción
-i Archivo fuente en formato .avi
-an Ignora la señal de audio.
Códec de video, se necesita que sea
-vcodec
mpeg2video para compatibilidad con TS.
-f Formato de salida.
-s Resolución en pı́xeles.
-r Frames por segundo.
-aspect Relación de aspecto.
-deinterlace Opción para desentrelazar imagenes.
-b Tasa de bits en Kbps.
-bf Num de cuadros tipo b para cada GOP.
-buffsize Tamaño de búffer en bits.
video.m2v Nombre archivo de salida.

Tabla 2: Parámetros codificación de video.

A continuación se encapsulan los ES en un Packetized Elementary Stream (PES) cada uno.


Primero el de video
$ esvideo2pes video.m2v > video.pes
Luego audio
$ esaudio2pes audio.mp2 1152 48000 384 3600 > audio.pes

Valor Parámetro Descripción


1152 Número de muestras por frame.
Frecuencia de muestreo, debe mantenerse la
48000
escogida en ES.
384 Tamaño de frame de audio.
Desplazamiento del Presentation Time
3600
Stamp, se define para sincronizar video.
audio.mp2 Nombre archivo fuente a ser convertido.
Nombre archivo de salida convertido en for-
audio.pes
mato PES.

Tabla 3: Parámetros esaudio2pes.

Luego se obtienen el archivo .ts de audio y de video


Para video
$ pesvideo2ts 2064 25 112 9200000 0 video.pes > video.ts

Manual transmisión con DTA-115 7


Valor parámetro Descripción
2064 Número de PID video
25 Frames por segundo.
Valor de Video Buffer Verifier, en mpeg-2
112
está definido.
Ancho de banda de TS. Se recomianda que
el ancho de banda sea un 15 % más grande
9200000
que el bitrate escogido en función ffmpeg. Es
decir 8000k*1.15=9200K.
0 Indica que el video no estará en loop.
video.pes Nombre archivo fuente a ser convertido.
Nombre archivo de salida convertido en for-
video.ts
mato TS.

Tabla 4: Parámetros pesvideo2ts.

Para audio
$ pesaudio2ts 2083 1152 48000 384 0 audio.pes > audio.ts

Valor Parámetro Descripción


2083 Número de PID audio.
Muestras por frame, mantener valor definido
1152
en PES.
Frecuencia de muestreo, mantener valor de-
48000
finido en PES.
Tamaño de frame de audio, mantener valor
384
definido en PES.
0 Indica que el audio no estará en loop.
audio.pes Nombre archivo fuente a ser convertido.
Nombre archivo de salida convertido en for-
audio.ts
mato TS.

Tabla 5: Parámetros pesaudio2ts.

Ya obtenido el archivo transport stream para audio y video, es necesario obtener las tablas SI/PSI.
Para esto se muestra como a partir de un programa creado en python se pueden obtener las tablas
SI/PSI y acomodar el contenido al archivo transport stream.

3.1. Obtención Tablas SI/PSI


Utilizando el editor de preferencia se debe crear el archivo gtables.py.
El encabezado debe llevar lo siguiente

1 # !/ usr / bin / env python


2 import os
3 from dvbobjects . PSI . PAT import *
4 from dvbobjects . PSI . NIT import *

Manual transmisión con DTA-115 8


5 from dvbobjects . PSI . SDT import *
6 from dvbobjects . PSI . PMT import *
7 from dvbobjects . SBTVD . Descriptors import *
8 tvd_ts_id = 0 x073b # ID de red .
9 tvd_orig_network_id = 0 x073b # ID de red original .
10 ts_freq = 527.14 # Frecuencia de transmision
11 ts_remote_control_key = 0 x05 # Tecla de control remoto .
12 tvd_service_id_sd = 0 xe760 # ID de servicio de TV Digital .
13 tvd_pmt_pid_sd = 1031 # PID de la PMT del servicio .

Donde:
tvd ts id es el identificador del Transport stream.
tvd orig network id es el identificador de red original.
ts freq es la frecuencia en que se transmite el Transport stream, en este caso 527.14 Mhz.
ts remote control key es la tecla de control remoto virtual, sirve para poder usar el control
remoto para elegir el canal más rápido.
tvd service id sd es el identificador del servicio de TV digital.
tvd pmt pid sd es el PID que se usará para transmitir la información que componen el
servicio.

3.1.1. Tabla NIT


A continuación se agrega el contenido para la tabla NIT.

1 nit = netw ork_information_section (


2 network_id = tvd_orig_network_id ,
3 network_descriptor_loop = [
4

5 network_descriptor ( network_name = " KLEINROCK_TV " ,) ,


6 sy stem_management_descriptor (
7 broadcasting_flag = 0 ,
8 broadcasting_identifier = 3 ,
9 ad diti onal _bro adc asti ng_i dent ifi cati on = 0 x01 ,
10 additional_identification_bytes = [] ,
11 )
12 ],
13 transport_stream_loop = [
14 transport_stream_loop_item (
15 transport_stream_id = tvd_ts_id ,
16 original_network_id = tvd_orig_network_id ,
17 transport_descriptor_loop = [
18 service_list_descriptor (
19 dvb_service_descriptor_loop = [
20 service_descriptor_loop_item (
21 service_ID = tvd_service_id_sd ,

Manual transmisión con DTA-115 9


22 service_type = 1 ,
23 ),
24 ],
25 ),
26 te rres tria l_de liv ery_ syst em_d esc ript or (
27 area_code = 1341 ,
28 guard_interval = 0 x01 ,
29 transmission_mode = 0 x02 ,
30 frequencies = [
31 tds_frequency_item ( freq = ts_freq )
32 ],
33 ),
34 partial_reception_descriptor (
35 service_ids = []
36 ),
37 tr ans por t_s tre am_ inf orm ati on_ des cri pto r (
38 remote_control_key_id = ts_remote_control_key ,
39 ts_name = " KLEINROCK_TV " ,
40 transmission_type_loop = [
41 transmission_type_loop_item (
42 transmission_type_info = 0 x0F ,
43 service_id_loop = [
44 service_id_loop_item (
45 service_id = tvd_service_id_sd
46 ),
47 ]
48 ),
49 transmission_type_loop_item (
50 transmission_type_info = 0 xAF ,
51 service_id_loop = [] ,
52 ),
53 ],
54 )
55 ],
56 ),
57 ],
58 version_number = 0 ,
59 section_number = 0 ,
60 last_section_number = 0 ,
61 )

Donde:
system management descriptor define propiedades del sistema, definiendo el sistema ISDB-
Tb.
terrestrial delivery system descriptor define propiedades de la modulación, como intervalos
de guarda, frecuencia de transmisión, etc.
partial reception descriptor define la lista de servicios de recepción parcial. Esta lista tendrı́a

Manual transmisión con DTA-115 10


que tener la lista de servicios 1-Seg.
transport stream information descriptor define otras propiedades del Transport stream que
estamos creando, como la tecla de control remoto, el nombre del Transport stream, informa-
ción de los tipos de servicios ofrecidos, etc.

3.1.2. Tabla SDT


Se agrega código para tablas SDT la cual especifı́ca los servicios disponibles en el Transport
Stream.

1 sdt = serv ice_description_section (


2 transport_stream_id = tvd_ts_id ,
3 original_network_id = tvd_orig_network_id ,
4 service_loop = [
5 service_loop_item (
6 service_ID = tvd_service_id_sd ,
7 EIT_schedule_flag = 0 ,
8 EIT_present_following_flag = 0 ,
9 running_status = 4 ,
10 free_CA_mode = 0 ,
11 service_descriptor_loop = [
12 service_descriptor (
13 service_type = 1 ,
14 service_provider_name = " " ,
15 service_name = " PRACTICA_22_23 " ,
16 ),
17 ],
18 ),
19 ],
20 version_number = 0 ,
21 section_number = 0 ,
22 last_section_number = 0 ,
23 )

3.1.3. Tabla PAT


Se agrega código para tabla PAT la cual tiene el mapa de servicios en PMTs. Las PMTs son tablas
que definen como se compone cada servicio.

1 pat = prog ram_association_section (


2 transport_stream_id = tvd_ts_id ,
3 program_loop = [
4 program_loop_item (
5 # Programa especial para la tabla NIT
6 program_number = 0 ,
7 PID = 16 ,
8 ),
9 program_loop_item (

Manual transmisión con DTA-115 11


10 program_number = tvd_service_id_sd ,
11 PID = tvd_pmt_pid_sd ,
12 ),
13 ],
14 version_number = 0 ,
15 section_number = 0 ,
16 last_section_number = 0 ,
17 )

3.1.4. Tabla PMT


Se agrega código para tabla PMT. Tiene que haber una PMT por cada servicio que se transmita.
En este caso hay una sola. Esta define el flujo de datos que componen el servicio. En esta se detallan
cual es el stream de audio, video, etc que componen cada servicio y además se define en que PID
se encuentra el PCR que es la marca del reloj del servicio.

1 pmt_sd = program_map_section (
2 program_number = tvd_service_id_sd ,
3 PCR_PID = 2064 ,
4 pr ogram_info_descriptor_loop = [] ,
5 stream_loop = [
6 stream_loop_item (
7 stream_type = 2 , # mpeg2 video stream type
8 elementary_PID = 2064 ,
9 element_info_descriptor_loop = []
10 ),
11 stream_loop_item (
12 stream_type = 3 , # mpeg2 audio stream type
13 elementary_PID = 2083 ,
14 element_info_descriptor_loop = []
15 ),
16 ],
17 version_number = 0 ,
18 section_number = 0 ,
19 last_section_number = 0 ,
20 )

3.1.5. Tablas a archivos


A continuación se muestra el código necesario para escribir las tablas anteriores en archivos.

1 out = open ( " ./ nit . sec " , " wb " )


2 out . write ( nit . pack () )
3 out . close
4 os . system ( " sec2ts 16 < ./ nit . sec > ./ nit . ts " )
5

Manual transmisión con DTA-115 12


7 out = open ( " ./ pat . sec " , " wb " )
8 out . write ( pat . pack () )
9 out . close
10 os . system ( " sec2ts 0 < ./ pat . sec > ./ pat . ts " )
11

12

13 out = open ( " ./ sdt . sec " , " wb " )


14 out . write ( sdt . pack () )
15 out . close
16 os . system ( " sec2ts 17 < ./ sdt . sec > ./ sdt . ts " )
17

18

19 out = open ( " ./ pmt_sd . sec " , " wb " )


20 out . write ( pmt_sd . pack () )
21 out . close
22 os . system ( " sec2ts " + str ( tvd_pmt_pid_sd ) +
23 " < ./ pmt_sd . sec > ./ pmt_sd . ts " )

3.1.6. Ejecutar gtables.py


Ya completado el archivo, este debe ser ejecutado mediante el siguiente comando:
$ chmod u+x gtables.py
$ ./gtables.py ó $ python gtables.py

3.2. Finalización archivo transport stream


Si los pasos fueron seguidos correctamente ahora se deberı́an tener los archivos pat.s, pmt sd.ts,
sdt.ts y nit.ts.
A continuación hace falta obtener un archivo nulo llamado null.ts, este se puede encontrar en la
dirección
$ /OpenCaster2.4/tutorials/OCTutorial2
Llegado a este punto se deben tener los siguientes archivos y además estar en el mismo
directorio:
video.ts
audio.ts
pat.ts
pmt sd.ts
sdt.ts
nit.ts
null.ts
Se procede a multiplexar los archivos mediante el comando

Manual transmisión con DTA-115 13


$ tscbrmuxer 4960000 b:15040 pat.ts b:15040 pmt_sd.ts b:3008 sdt.ts b:3008
nit.ts b:9200000 video.ts b:188000 audio.ts b:20534198 null.ts > bruno_prueba.ts

Valor Parámetro Descripción


Paquetes a multiplexar. ISDB-Tb transmite
cerca de 20000 paquetes por segundo. El vi-
4960000
deo escogido dura 04:08min, por lo tanto se
van a necesitar 4960000 paquetes.
PMT y PAT se deben enviar al menos 10
veces por segundo. Si cada una entra en un
15040
solo paquete de 188 bytes, entonces 188 bytes
* 8 * 10 segundos = 15040 bits.
SDT y NIT sigue el mismo análisis de PMT
3008 y PAT, solo que estas son enviadas cada 2
segundos.
Ancho de banda de video que ya se definió
9200000
previamente.
Ancho de banda de audio que ya se definió
188000
previamente.
Ancho de banda para los paquetes nulos. La
norma ISDB-Tb tiene un ancho de banda fijo
de 29.958.294 bps. Por lo tanto para deter-
20534198
minar este valor se realiza el siguiente cálcu-
lo: 29958294 - 15040*2 - 3008*2 - 9200000 -
188000 = 20534198
bruno prueba.ts Nombre archivo de salida multiplexado.

Tabla 6: Parámetros tscbrmuxer

Al realizar la multiplexación se desincronizan los paquetes de video, por lo que su llegada al Set
Top-Box será imprecisa. Para solucionar esto se utiliza el comando tsstamp para sincronizar el
audio con el video.
$ tsstamp bruno_prueba.ts 29958294 > bruno_prueba.fixed.ts
Ası́ finalmente se obtiene el archivo transport stream listo para ser transmitido.

4. Transmisión Transport Stream


El proceso de modulación y transmisión del archivo transport stream se raliza con la tarjeta
moduladora DTA-115, hardware desarrollado por DekTec, con su respectivo software para Linux
DtPlay.
Para esto se debe mover el archivo bruno prueba.fixed.ts a la carpeta DtPlay y ejecutar el coman-
do
$ ./DtPlay bruno_prueba.fixed.ts -t 115 -i 2 -mf 527.143 -m 188 -r 31457280
-mt ISDBT -l 0

Manual transmisión con DTA-115 14


Parámetro Descripción
Indica el tipo de tarjeta DekTec que se va a
-t
ocupar.
Indica el puerto de salida de la tarjeta mo-
-i
duladora.
Indica la radiofrecuencia en donde se va a
-mf
transmitir.
Indica el modo de transmisión, en este ca-
so 188 bytes, quieredecir que el transport
-m
stream se encuentra en paquetes de 188 by-
tes, y transmite de la misma manera.
Indica el Transport Stream rate en bps que
-r
se desea transmitir.
Indica la norma que se va a ocupar para
-mt
transmitir, en este caso es ISDB-Tb.

Tabla 7: Parámetros Transmisión con DtPlay.

5. Resultados
La figura 1 muestra como se ve el comando de DtPlay al momento de ser ejecutado.

Figura 1: Comando DtPlay ejecutado.

La figura 2 muestra la sintonización de la señal, se observa como en 527MHz se logra recibir el


video tal como se asignó previamente.

Manual transmisión con DTA-115 15


Figura 2: Sintonizando señal.

La figura 3 muestra como el video se está transmitiendo en la televisión de forma satisfactoria.

Figura 3: Transmitiendo video.

Manual transmisión con DTA-115 16


6. Conclusión
En este manual se realizó una guı́a paso a paso para transmitir un video mediante la tarjeta
moduladora DTA-115 a la telivisión digital de manera satisfactoria.
Se expusieron los requisitos para realizar el experimento.
Se explicó cómo instalar software especı́fico.
Se explicó cómo crear un archivo transport stream.
Se explicó cómo transmitir con el software de la tarjeta moduladora.

7. Referencias
- Moncayo T., Pozo M., Mejı́a D. y Bernal I. Generador de Flujos Únicos de Paquetes de
Transporte TS en base a la Norma ISDB-Tb. Fuente.
- AVALPA Broadcast Server User Manual. Fuente.
- LIFIA. OpenCaster para SATVD-T Fuente.
- Diego Villamarı́n, Gonzalo Olmedo, Román Lara y Marı́a Augusta Illescas. Generador de
Transport Stream con Audio, Video y Datos de interactividad para el Sistema de Televisión
Digital Terrestre ISDB-Tb Fuente.
- Marcelo Alejandro Gutiérrez Vidal. Sistema de difusión de alertas de emergencia bajo norma
ISDB-T.
- Marı́a de los Ángeles Mateos Moreno. Generación de un Transport Stream de televisión
interactiva. Fuente.

Manual transmisión con DTA-115 17

También podría gustarte