libopx 2.1.1
See the version list below for details.
dotnet add package libopx --version 2.1.1
NuGet\Install-Package libopx -Version 2.1.1
<PackageReference Include="libopx" Version="2.1.1" />
<PackageVersion Include="libopx" Version="2.1.1" />
<PackageReference Include="libopx" />
paket add libopx --version 2.1.1
#r "nuget: libopx, 2.1.1"
#:package libopx@2.1.1
#addin nuget:?package=libopx&version=2.1.1
#tool nuget:?package=libopx&version=2.1.1
libopx
A .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.
Features
- Multi-format support: MXF, extracted data streams, VBI, T42, and MPEG-TS file parsing
- Format conversion: Automatic VBI ↔ T42 conversion, plus RCWT and EBU STL output
- MPEG-TS teletext extraction: Automatic PAT/PMT parsing with DVB teletext support
- Teletext filtering: Magazine and row-based filtering with Unicode mapping
- SMPTE timecode: Full timecode calculations with various frame rates
- MXF processing: Stream extraction and demuxing capabilities
- CLI tool: Unified
opxcommand-line interface - Subtitle formats: RCWT (Raw Captions With Time) and EBU STL (EBU-Tech 3264) export
Format 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:

Quick Start
Installation
Add the package reference to your project file from NuGet.org.
dotnet add package libopx
Or download the latest release from GitHub Releases.
Using the CLI Tool
# 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.mxf
Using the Library
using 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);
}
Documentation
- Library Documentation - Detailed API reference and usage examples
- CLI Tool Documentation - Complete command reference and examples
Project Structure
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
Development
# Clone and build
git clone https://github.com/nathanpbutler/libopx
cd libopx
dotnet build
# Run tests
dotnet test
Requirements
- .NET 9 or later
- Supported platforms: Windows, Linux, macOS
Dependencies
- System.CommandLine (v2.0.0-rc.2.25502.107)
- xUnit (testing)
- coverlet (code coverage)
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
License
MIT - see the LICENSE file for details.
Acknowledgments
- vhs-teletext - Software to recover teletext data from VHS recordings (inspiration for
filtercommand) - MXFInspect - Tool for displaying the internal structure of MXF files (was super helpful for understanding MXF parsing and the intricacies of SMPTE timecodes)
- bmxtranswrap - BBC's MXF processing library and utilities (inspiration for
extractcommand) - SubtitleEdit - An incredibly useful C# library and software for subtitle editing and processing
- CCExtractor - Closed caption and subtitle extraction and processing
- ffmpeg - The swiss army knife of multimedia processing
Support
For questions and support, please open an issue.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.4.2 | 114 | 1/25/2026 |
| 2.4.1 | 109 | 1/25/2026 |
| 2.4.0 | 110 | 1/24/2026 |
| 2.3.0 | 142 | 1/9/2026 |
| 2.2.0 | 345 | 11/7/2025 |
| 2.1.2 | 343 | 11/4/2025 |
| 2.1.1 | 350 | 10/30/2025 |
| 2.1.0 | 340 | 10/30/2025 |
| 2.0.0 | 344 | 10/30/2025 |
| 1.4.0 | 335 | 9/2/2025 |
| 1.3.0 | 307 | 8/17/2025 |
| 1.2.0 | 261 | 8/16/2025 |
| 1.1.0 | 356 | 8/13/2025 |
| 1.0.0 | 251 | 8/3/2025 |
v2.1.1: Fixed critical format conversion bugs - TS to VBI/VBI_DOUBLE now properly converts and preserves metadata for filtering. VBI to STL conversion now works correctly by extracting T42 metadata first. Metadata preservation ensures magazine/row filtering works when converting to formats without readable metadata.