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) files and extracted data streams, VBI (Vertical Blanking Interval), T42 (Teletext packet stream), and MPEG-TS (Transport 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
# Filter MPEG-TS teletext (auto-detects PIDs)
opx filter input.ts
# Filter MPEG-TS with specific PID
opx filter --pid 70 input.ts
# Convert between formats (auto-detected from extension)
opx convert input.vbi output.t42
# Convert MPEG-TS to T42
opx convert --pid 70 input.ts output.t42
# Convert to EBU STL subtitle format
opx convert -c input.mxf output.stl
# Extract streams from MXF files
opx extract -k d,v input.mxfusing nathanbutlerDEV.libopx.Formats;
// Parse and filter teletext data from VBI
using var vbi = new VBI("input.vbi");
foreach (var line in vbi.Parse(magazine: 8, rows: new[] { 20, 22 }))
{
Console.WriteLine(line);
}
// Parse and filter teletext from MPEG-TS (auto-detects PIDs)
using var ts = new TS("input.ts");
foreach (var line in ts.Parse(magazine: 8))
{
Console.WriteLine(line);
}
// Parse MPEG-TS with specific PID
using var ts2 = new TS("input.ts") { PIDs = new[] { 70 } };
foreach (var line in ts2.Parse())
{
Console.WriteLine(line);
}libopx/
├── apps/opx/ # CLI tool
├── lib/ # Main library
│ ├── Formats/ # Format parsers (MXF, MXF data stream, VBI, T42, TS)
│ ├── SMPTE/ # SMPTE metadata system
│ └── Enums/ # Enumeration definitions
├── samples/ # (Deprecated in repo) Obtain sample media from Release
│ assets (e.g. v1.0.0) and place here if needed
├── 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.