A .NET 9 C# library for parsing and extracting data from MXF (Material Exchange Format), extracted data streams, VBI (Vertical Blanking Interval), T42 (Teletext packet stream), and MPEG-TS (Transport Stream) files, with SMPTE timecode and Teletext caption support (OP-42 & OP-47 in particular).
$ dotnet add package libopxA .NET 9 C# library for parsing and extracting data from MXF (Material Exchange Format), BIN (MXF caption data stream), VBI (Vertical Blanking Interval), and T42 (Teletext packet stream) files, with SMPTE timecode and Teletext caption support.
opx command-line interfaceFormat conversions: Convert between HD and SD T42 and VBI formats or vice versa. You can even pipe that data to other applications like ffmpeg or mpv.

ANSI Escaped Teletext: Supports parsing and filtering of teletext data with ANSI escape sequences:

Add the package reference to your project file from NuGet.org.
dotnet add package libopxOr download the latest release from GitHub Releases.
# Filter teletext data by magazine and rows
opx filter -m 8 -r 20,22 input.vbi
# Convert between formats
opx convert -o t42 input.vbi
# Extract streams from MXF files
opx extract -k d,v input.mxfusing nathanbutlerDEV.libopx.Formats;
// Parse and filter teletext data
using var vbi = new VBI("input.vbi");
foreach (var line in vbi.Parse(magazine: 8, rows: new[] { 20, 22 }))
{
Console.WriteLine(line);
}libopx/
├── apps/opx/ # CLI tool
├── lib/ # Main library
│ ├── Formats/ # Format parsers (MXF, BIN, VBI, T42)
│ ├── SMPTE/ # SMPTE metadata system
│ └── Enums/ # Enumeration definitions
├── samples/ # Sample files for testing
├── scripts/ # Development scripts
└── tests/ # xUnit test suite# Clone and build
git clone https://github.com/nathanpbutler/libopx
cd libopx
dotnet build
# Run tests
dotnet testMIT - see the LICENSE file for details.
filter command)extract command)For questions and support, please open an issue.