libzvbi - VBI capture and decoding library
==========================================
The zvbi/libzvbi repository was moved here from [Sourceforge](https://sourceforge.net/projects/zapping) in September 2022 for current development. The Zapping TV viewer (and other projects from the Sourceforge) have also been [archived in github](https://github.com/zapping-vbi/vbi-archive).
Introduction
============
The vertical blanking interval (VBI) is an interval in an analog
television signal that temporarily suspends transmission of the
signal for the electron gun to move back up to the first line of the
television screen to trace the next screen field. The vertical
blanking interval can be used to carry data, since anything sent
during the VBI would naturally not be displayed; various test
signals, closed captioning, and other digital data can be sent
during this time period.
The ZVBI library provides functions to read from Linux V4L, V4L2 and
FreeBSD BKTR raw VBI capture devices, from Linux DVB devices and
from a VBI proxy to share V4L and V4L2 VBI devices between multiple
applications.
It can demodulate raw to sliced VBI data in software, with support
for a wide range of formats, has functions to decode several popular
services including Teletext and Closed Caption, a Teletext cache
with search function, various text export and rendering functions.
Basically ZVBI offers all functions needed by VBI applications
except for the user interface. The library was written for the
[Zapping TV viewer](https://zapping.sourceforge.net).
For details on using the library see the documentation in doc/html
(built only if you have [Doxygen](https://www.doxygen.org/) installed)
and the files in the test and examples directories.
Download
========
See Releases and Tags for the latest version of zvbi and libzvbi. The first release on this repo is 0.2.36. Previous tagged releases can be found [here](https://github.com/zapping-vbi/vbi-archive).
Ileana Dumitrescu \<ileanadumitrescu95@gmail.com\> maintains the [Debian package](https://packages.debian.org/source/zvbi).
Oliver Lehmann \<oliver@FreeBSD.org\> maintains a [FreeBSD port](https://www.freebsd.org/cgi/ports.cgi?query=libzvbi).
For RPMs please see the repository of your distribution.
Building and Installation
=========================
Obtain a local copy of this git repository by cloning:
git clone https://github.com/zapping-vbi/zvbi.git
This project uses GNU autotools. After cloning the repo, this command will create missing configuration files:
cd zvbi && ./autogen.sh
Next, to generate the Makefiles, run:
./configure
Optionally, running `CONFIGURE=1 ./autogen.sh` will run the configure script immediately after the autogen script with a single command.
After configuring, to compile and build, run:
make
If you want to run some tests, run:
make check
Then to install, run:
make install
The zvbi/libzvbi package produces the following binaries:
* **zvbid** - proxy for VBI devices that forwards VBI data streams to one or more connected clients and manages channel change requests
* **zvbi-atc-cc** - command-line utility that captures ATSC TV transmissions using a Linux DVB device and decodes the enclosed closed caption data
* **zvbi-chains** - command-line wrapper that executes the VBI application while overloading several C library calls so that the application can be forced to access VBI devices via the VBI proxy instead of device files directly
* **zvbi-ntsc-cc** - command-line utility for decoding and capturing closed captioning for NTSC and webtv
* **libzvbi.[a, so, la]** - VBI decoding library
If Doxygen is installed, `make` will also create library documentation.
For additional instructions see the [INSTALL](https://github.com/zapping-vbi/zvbi/blob/main/INSTALL) file.
The library has been tested on Linux and FreeBSD.
Bindings
========
Tom Zoerner wrote a Perl interface to libzvbi. The ZVBI Perl module
covers all exported libzvbi functions. Most of the functions and
parameters are exposed nearly identical, or with minor adaptions for
the Perl idiom.
Find out more at https://search.cpan.org/~TOMZO/Video-ZVBI
Contributing
============
Contributions are always welcome. Please feel free to write issues and patches, as well as create pull requests. When submitting pull requests, please create your own local branch first to merge into main.
zvbi relevant bugs will be moved from [Sourceforge](https://sourceforge.net/p/zapping/bugs/) to github issues on this repo.
zvbi patches from [Sourceforge](https://sourceforge.net/p/zapping/patches/) are being applied to the main branch.
zvbi feature requests will also be moved from [Sourceforge](https://sourceforge.net/p/zapping/feature-requests/) to github issues on this repo.
You can send an email to the maintainer directly with the tag \[zvbi\] in the subject line.
You can browse the Sourceforge email list archives [here](http://sourceforge.net/mailarchive/forum.php?forum_name=zapping-misc).
The current author and maintainer of this library is:
Ileana Dumitrescu <ileanadumitrescu95@gmail.com>
The previous author and maintainer of this library was:
Michael H. Schimek <mschimek@users.sourceforge.net>
Encrypted e-mail is welcome. You can find the authors' PGP/GPG keys in the
AUTHORS file:
gpg --import <AUTHORS
Copyright and Licensing
=======================
Copyright (C) 2000-2008 Michael H. Schimek
Copyright (C) 2000-2001 Iñaki García Etxebarria
Copyright (C) 2003-2004, 2007 Tom Zoerner
Copyright (C) 2022-2025 Ileana Dumitrescu
Originally based on AleVT 1.5.1 by Edgar Toernig
The zvbi project is licensed under the [GNU General Public License version 2.0 (GPL-2+)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html). Other software licenses used throughout zvbi include:
* [LGPL-2+](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)
* [MIT/Expat](https://opensource.org/licenses/MIT)
* [BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause)
* [BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause)
See [COPYING](https://github.com/zapping-vbi/zvbi/blob/main/COPYING.md) for full text of all software licenses.
Generated by dwww version 1.16 on Sat Oct 3 03:23:02 CEST 2026.