Skip to content

Reading teletext from VBI

Flussonic allows reading EBU Teletext and subtitles (EBU Teletext subtitle data) from VBI (Vertical Blanking Interval) in source streams received from an SDI card. Flussonic then retransmits them to MPTS or SPTS output.

VBI is a gap in the sequence of lines which is used in analog television. During VBI no picture information is transmitted, allowing some time while the electron beam of a cathode ray tube TV returns to the top of the screen. VBI field is not visible, but it contains the information necessary for picture synchronization. Besides that, it may contain such information as teletext or closed captions.

When receiving video from an SDI card, Flussonic decodes the received data in order to compress them for further transporting via the Internet and retransmits the stream into MPEG-TS. In the process, it reads the information about teletext from VBI and automatically packs it into an MPEG-TS stream.

To receive teletext, you need to add the following options to the SDI/HDMI card ingest settings:

  • (for Stream Labs SDI only) vbi_device=/dev/vbiN — the device /dev/vbi from which Flussonic ingests teletext data. For example: vbi_device=/dev/vbi0.
  • (for Decklink cards only) pixel=10 — this option enables ingesting video with 10 bits per pixel color depth and is necessary for correct decoding of VBI.

In order to describe teletext information in the PMT (Program Map Table) of the resulting MPEG_TS stream, you should specify the following option in the stream settings:

ttxt_descriptors=page:lang:type[,page:lang:type]...

where:

  • page — page number. The information about the pages is received from the stream provider.
  • lang — the language of teletext. Specified according to the ISO 639-2 standard.
  • type — teletext page type defined according to the Specification for Service Information (SI) in DVB systems, 6.2.32 Teletext descriptor в EN 300 468 Digital Video Broadcasting (DVB). The allowed values are: initial (the initial teletext page), subtitle (the page with subtitles), and impaired (teletext subtitle page for hearing impaired people). We currently don’t support using additional and program_schedule pages, if you need them, please let us know.

The option specifies the location and the data in the teletext track. The data is transmitted in the service information PMT of the MPEG-TS stream. By default, the value equals 0x100:rus:initial.

Example: 0x100:rus:initial,0x888:rus:subtitle.

Flussonic automatically detects those teletext pages, the data from which should be marked as subtitles in PMT.

Configuration examples for reading teletext from different sources

See the following configuration examples for Flussonic Media Server to read teletext from different sources:

  • from a Stream Labs card:

stream example_stream {
    input v4l2:// audio_device=plughw:1,0 ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle vbi_debug=true vbi_device=/dev/vbi0 video_device=/dev/video0;
}

  • from a Decklink card:

stream example_stream {
    input decklink://0 pixel=10 ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle;
}

  • from a Decklink card with NVENC transcoding:

stream example-stream {
  input decklink://2 pixel=10 ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle;
  transcoder deviceid=0 external=false hw=nvenc vb=5000k vcodec=h264 open_gop=false preset=veryfast size=3840x2160:fit:#000000 ab=128k split_channels=false;
}

Flussonic reads the teletext from an MPEG-TS stream by default. If you need to overwrite the teletext descriptor values, you can use the ttxt_descriptors stream parameter for this.
Flussonic then pushes them in the MPEG-TS stream output.

To overwrite the teletext descriptor values, configure a stream (teletext_stream) with teletext track and specify the new value for the ttxt_descriptors option:


stream teletext_stream {
  input udp://MULTICAST-IP:PORT ttxt_descriptors=0x888:rus:impaired;
}