Skip to main content

Software Decoder for raw rf captures of laserdisc, vhs and other analog video formats

Project description

vhs-decode logo

VHS-Decode (It does more than VHS now!)

A fork of LD-Decode, the decoding software powering the Domesday86 Project.
This version has been modified to work with the differences found in the tracked RF drum head signals taken directly from colour-under & FM modulated composite videotape formats.

(Not to be confused with the TV Modulator/Demodulator pack or the "antenna connectors" on the back of the VCR!).

SMPTE ColourBars (16:9) Test Tape With WSS (PAL) exported full-frame (1112 x 624)

Supported Tape Formats

VHS 625-line and 525-line - NTSC, NTSC-J, PAL and PAL-M. Generally well supported

SVHS 625-line and 525-line - NTSC, NTSC-J, PAL and PAL-M. Basic support

U-Matic Low Band 625-line and 525-line - PAL and NTSC. Supported

U-Matic High Band 625-line - PAL. Basic support

Betamax 625-line and 525-line - PAL & NTSC. Suppported

Video8 & Hi8 625-line and 525-line - PAL & NTSC. Basic support

1" Type C (SMPTE Type C) 625-line and 525-line - PAL & NTSC. Basic support (More Samples Required!)

EIAJ 625-line - PAL. Supported (NTSC Samples Required!)

Philips VCR 625-line - PAL. Supported

FAQ - Frequently Asked Questions

Example Videos: VHS-Decode / The Rewinding - Odysee

Example Workflow Flowcharts and Overview Graphics

The frequently asked questions page and the Wiki, will help break things down and explain the real world benefits of direct RF capture preservation and software decoding compared to conventional high-cost hardware based workflows, so if you have just found this project welcome to the affordable future of tape media preservation.

CVBS-Decode - Composite Video Decoder

This repository also contains an experimental CVBS decoder, cvbs-decode, which shares code with ld-decode and vhs-decode. Capable of decoding basic RAW digitized NTSC and PAL composite video, including colour if the source is somewhat stable.

RAW CVBS has been captured using CX Cards & CXADC, however, only at lowest gain states and or with external signal feed into it to stop its hardware decoder from triggering.

[!CAUTION] CVBS capture is not possible with the DomesDayDuplicator Rev3 due to input filtering on the hardware, but is possible with the MISRC boards.

Test samples & signals can be digitally generated using HackTV or downloaded from The Internet Achive.

HiFi-Decode & RTL-SDR Decode

Thanks to VideoMem's work on Superheterodyne Decoding Tools we now have a working HiFi Audio Decoder which provides decoding for VHS & Video8/Hi8 HiFi FM tracks which takes uncompressed or FLAC compressed RF captures of HiFi FM signals and outputs standard 24-bit 44.1-192khz FLAC stereo audio files.

RTLSDR capture & decoding (cross plafrom as its 100% GNURadio based) can run in realtime on most systems (1~3 sec delay) and provide live playback, Alongside 8msps RF files and a 48khz 24-bit FLAC file of the decoded audio.

Dependencies - Hardware

A Working Tape Player (VCR/VTR etc)

Preferably adjusted per tape and in excellent mechanical and head condition, prosumer metal track decks are preferable as they were built generally better in terms of mechnical stability than cheaper later consumer decks that use more plastics, the only crtical requirement is avalible test points or a head amplifyer that is easy to tap into, this goes for any and all tape formats.

[!TIP] SVHS tapes can be RF captured on standard VHS HiFi decks.

[!TIP] SVHS NTSC Decks - Currently inflated, but you can import PAL decks with NTSC support for 1/3rd the price though this only applys if conventional refrance SVHS captures are required.

[!IMPORTANT]
Always clean your tape track/drum/heads before and afterwards with 99.9% isopropanol and lint free cloths/pads/paper. This ensures less dropouts from dirty heads or tracks including the track of the head drum.

Its good practice to avoid cross contamination of tapes, especially if dealing with mouldy or contaminated tapes.

It also helps to make sure to re-lubricate metal and plastic moving joints cogs and bearings with appropriate greases and oils to avoid mechanical failures. Please read the Cleaning & Servicing Guide

An RF Capture Device

Currently standardised is 2 hardware methods but RF Capture is not just limited to these 2 devices.

Domesday Duplicator (DdD) (Method 01 - 300-350USD*)

Capture is done using an simple GUI application.

Linux Application / Windows Application / MacOS Application

Originally geared towards capturing RF from Laserdisc players, it does however also work perfectly well for digitizing tape RF data. It consists of a custom analogue to digital board with an amplifier, an off-the-shelf DE0-NANO FPGA development board, and a Cypress FX3 SuperSpeed Explorer USB 3.0 board.

[!WARNING]
Dont use USB storage or video devices on the same USB bus as the DdD, it will crash the capture!

[!WARNING]
Several users have reported issues with dropped samples when using the ddd do capture on Windows, so as of now using it on Windows is not recommended.

Where to Buy? & More Info

CX Card & CXADC (Method 02 - 20-35USD)

Capture & Config uses simple command-line arguments and parameters CXADC

The budget approach is using a video capture card based on a Conexant CX23880/1/2/3 PCI chipset. With a modified Linux driver, these cards can be forced to output RAW data that can be captured to file, instead of decoding video normally as they otherwise would.

While you can use any generic card with the correct chips, today we recommend the ‘‘New’’ Chinese variants that can be found on AliExpress that have integrated Asmedia or ITE 1x PCIE bridge chips allowing modern systems to use them, and consistent performance.

Where to Buy? & More Info

Sadly however at stock without any modifications CX Cards proform slightly worse then a DomesdayDuplicator with about a 3db signal to noise difference, and its internal digital gain can affect captures drastically.

Currently the CX23883-39 based white variant cards have been consistently lower noise, these have also been easily upgraded to 40msps 8-bit with a drop-in crystal upgrade for use with formats like LaserDisc, but at stock with external amplification they are quite optimal for VHS & HiFi, but higher bandwidth formats like SVHS & ED Beta can benifit from crystal upgrades and can also be used with external timing for syncronised capture of Video+HiFi+Linear signals.

Deployment of Capture Hardware

[!TIP] Please Read VCR Reports / The Tap List / Hardware Installation Guide

Information on various VCRs that have been documented alongside high resolution pictures of VCR's that have had RF taps installed, guidance on recommended cables/connectors & tools to use are also included.

The setup process for RF capture involves running a short cable internally from points that provide the unprocessed video and or audio signal to a BNC jack at back of a metal/plastic VCR chassis or cable threaded out a vent, this allows direct access to the FM RF signals conveniently & reliably, we call this a Tap Point or RF Tap, for some decks and camcorders however DuPont conectors and ribbon jigs can be used but are less mechanically secure.

VCR ==> Head Drum ==> Amplification & Tracking ==> FM RF Test/Signal Points ==> FM RF Capture ==> Software Decoding ==> Lossless TBC Files ==> Audio/Video File Creation.

Finding Test Points - There Names

Decks follow this naming or close to it not every possible name is covered.

Video FM RF Signal:

RF C, RF Y, RF Y+C, V RF, PB, PB.FM, V ENV, ENV, ENVE, ENVELOPE, VIDEO ENVE, VIDEO ENVELOPE

HiFi Audio FM Signal:

HiFi, A.PB, A FM, A.PB.FM, Audio FM, A-Out, A ENV, HIFI Envelope, FM Mix Out

That a test points has this name doesn't automatically mean it will have the signal we want, especially when it comes to hi-fi audio, be sure to check with the service manual if possible.

Parts for RF Tap

What tools do I need?

Connection Cables

On CX White Cards you use the RCA (Vmux 1) for the RF input with C31 capacitor removed, but a BNC can be easily added.

Install A RF Tap

Hardware Installation Guide Goes over the install steps for VHS Decks to Sony 8mm camcorders.

Adding an 10uf (0.1uf to 100uf range) capacitor to the test point or amplifier is recommended can help improve signal integrity (a handful VCRs have this on the test point already).

Center is Signal, Outer is Ground, this goes for jacks and for coaxial cable in genaral.

For a electrolytic capacitor Positive leg (longer) goes on test/signal point, Negative leg (shorter) on cable to connector/probe. However this does not matter for Ceramic which are bi-directional & recommend today).

While type and voltage does not matter much its best to use new/tested capacitors.

Notes:

Note We use Aliexpress links for wide availability globally, but local venders are a thing.

Note With some Sony decks you can use Dupont connectors on the test point pins making an easy RF tap.

Note Do not make sharp bends in any RF cabling, keep total cable runs as short as possible Ideally 30-60cm, more cable = more signal loss.

Note Some UMATIC decks have an RF output on the back, however this only provides Luma RF for dropout detection and not the full signal required for RF capture.

Windows Builds

Windows Binarys Download

The ld-tools suite, tbc-video-export and combined exe version of ld-decode / vhs-decode / cvbs-decode / hifi-decode which is simply decode.exe exists for Windows.

This allows the use of ld-analyse's GUI to view TBC files, ld-lds-converter to convert and compress DdD captures inside Windows with drag and drop bat scripts.

The decode suite can also be built & run natively inside Windows 10/11 or inside WSL2

MacOS Builds

See building on MacOS page on MacOS Build install docs are only currently for ARM based apple products such as the M1/M2 lines.

Dependencies & Installation - Software

VHS-Decode, as with LD-Decode, has been developed and tested on machines running the latest versions of Ubuntu, Debian and Linux Mint. The tools should however be able to be built on other distrubutions too provided they have access somewhat recent versions to the needed dependencies, including at least python 3.8.

There is a Linux compatability doc for various tested distributions of Linux.

Its fully working on WSL2 22.04.1 LTS (Windows Subsystem for Linux) however issues with larger captures i.g 180gb+ may require expanding the default virtual disk size.

Other dependencies include Python 3.8+, numpy, scipy, cython, numba, pandas, Qt5, qwt, Cmake, and FFmpeg.

Some useful free tools to note for post processing are StaxRip & Lossless Cut & of course DaVinci Resolve - these give you basic editing to quickly handle uncompressed files across operating systems, and for Windows users an easy FFmpeg/AviSynth/Vapoursynth encoding and QTGMC de-interlacing experience, and full colour grading and post production ability.

Installation on Linux (Ubuntu/Debian-based)

Install all dependencies required by LD-Decode and VHS-Decode:

sudo apt install git qtbase5-dev libqwt-qt5-dev libfftw3-dev libavformat-dev libavcodec-dev libavutil-dev ffmpeg pv pkg-config make cmake sox pipx g++ python3-dev

Ubuntu 22.04/Linux mint 21/debian may also need this library installed if one wants to use the gui version of hifi-decode

sudo apt install libxcb-cursor0

Set up pipx

pipx ensurepath

(Alternatively, a python virtual environment can be used instead of using pipx)

Install TBC-Video-Export

pipx install tbc-video-export

(There is also self contained builds if install issues arise)

Optional dependencies for GPU (Nvidia Cards) FLAC compression support:

sudo apt install make ocl-icd-opencl-dev mono-runtime

Also Requires FlaLDF Download & Install via .deb for Linux

Build VHS-Decode & LD-Tools Suite

The vhs-decode respository also has hifi-decode, cvbs-decode, ld-decode included.

Download VHS-Decode:

git clone https://github.com/oyvindln/vhs-decode.git vhs-decode

Install VHS-Decode:

cd vhs-decode

Build and install vhs-decode via pipx

pipx install .[hifi_gui_qt6]

Compile and Install ld-tools suite: (Required)

mkdir build2
cd build2
cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_QT_VERSION=5
make -j4
sudo make install

Go back to the main directory with

cd .. 

To update do git pull while inside of the vhs-decode directory. To update to the latest git version of vhs-decode/ld-decode/hi-fi decode, run pipx install . inside the vhs-decode directory after running git pull To update the tools to the latest version, the steps under "Compile and Install ld-tools suite: (Required)" has to be re-ran after a git pull. The tools are not updated very often.

Note: debian/ubuntu does not have a qt6 version of qwt in repositories as of yet so you have to inform the build script to use Qt5 if both qt5 and qt6 are installed with -DUSE_QT_VERSION=5 as it might otherwise try to compile with qt6 instead and failing to locate qwt. The option is otherwise not needed.

Usage

Note with WSL2 & Ubuntu, ./ in front of applications and scripts may be needed to run them or to run scripts within the folder.

Use cd vhs-decode to enter into the directory to run commands, cd.. to go back a directory.

Use Ctrl+C to stop the current process.

You dont actaully type < and > on your input & output files.

Basic CX Card Setup & RF Capture

  • Ensure system is powered off
  • Physically Install CX Card
  • Install CXADC driver

Connect Card to RF Tap

  • Find Vmux Input (Via Live Preview)
  • Configure Capture
  • Capture RF Data
  • FLAC Compress RF Data (Archive)

CXADC Readme for information on how to install & configure the driver, this also goes into depth on modes.

Commands for real-time FLAC capture on CX Cards

Naming Guide For RF Captures!

To see if you have a connection, use the live preview mode and then hook up your RF cable, normally you will see a white flash as a signal, if not change your vmux or input within a 0-2 range with the below command.

sudo echo 0 >/sys/class/cxadc/cxadc0/device/parameters/vmux

To see a live preview of tape signal being received by a CXADC card, note that the video head tracked signal will be unstable or wobbly if settings are not the same; you may only see "signal flash" if in 16-bit mode for example.

This is quite useful if you don't own a CRT with Horizontal/Vertical shifting, as it will allow you to inspect the full area for alignment and/or tracking issues.

PAL framing for the default 28.64 MHz/8-bit mode:

ffplay -hide_banner -async 1 -f rawvideo -pix_fmt gray8 -video_size 1832x625 -i /dev/cxadc0 -vf scale=1135x625,eq=gamma=0.5:contrast=1.5

NTSC framing for 28.64 MHz/8-bit mode:

ffplay -hide_banner -async 1 -f rawvideo -pix_fmt gray8 -video_size 1820x525 -i /dev/cxadc0 -vf scale=910x525,eq=gamma=0.5:contrast=1.5

Capture 30 seconds of tape signal using CXADC driver 8-bit samples

timeout 30s cat /dev/cxadc0 > <capture>_CXADC.u8

For 16-bit, simply change the output filename extension to .u16

For FLAC captures, set the output filename extension to your desired tape format, for example .VHS

It is recommended to use a fast storage device with 40-100 MB/s or faster write capacity, in order to avoid dropped samples, ideally an dedicated SSD (via M.2 or SATA connector, not USB) formatted with the exFAT filesystem.

What should a FM video signal look like on the preview?

Compress your FM RF Captures

For DomesDayDuplicator captures on Linux simply run:

ld-compress <capture>

For DomesDayDuplicator captures on Windows simply drag and drop on:

ld-compress.bat or ld-compress-nvidia-gpu.bat

Your .lds file will be compressed to an FLAC OGG .ldf file.

For CXADC and other standard 8-bit or 16-bit RF captures use the following:

Copy Paste FLAC Compression Commands for CXADC

Editable flags are:

The --bps flag can be changed to --bps=8 or --bps=16 for 8 & 16 bit captures and --ogg is optional.

Change <capture> & <output-name>.flac to your input & output file name.

Reduce size of captured CXADC data (by 40-60%):

flac --best --sample-rate=28636 --sign=unsigned --channels=1 --endian=little --bps=8 --ogg -f <capture>.u8 <output-name>.flac

Output will be <output-name>.flac if wanted you can rename the end extension to .vhs / .hifi etc, but include _8-bit_28msps and NTSC or PAL etc in the name, to always know what the data and tape format is.

Decompress FLAC compressed captures:

flac -d --force-raw-format --sign=unsigned --endian=little <capture>.vhs <capture>.u16

Decoding FM RF Captures

Decode your captured tape to .tbc by using:

vhs-decode [arguments] <capture file> <output name>

Basic Usage Example:

vhs-decode --debug --pal --threads 8 --tape_format VHS --cxadc CX-White-2022.10.25.u8 my-first-decode-2022.10.25

After decoding process your tapes VBI data with:

ld-process-vbi <decoded tape name>.tbc

Use analyse tool to inspect decoded tape data:

ld-analyse <decoded tape name>.tbc

(.tbc files are headerless you can open them at any time during decoding, preview is limited to what frame info has been fully written to the JSON file updated every 100 frames or so)

Exporting to Video Files

VHS-Decode produces two timebase corrected files an S-Video signal in the file domain for VHS/Beta/Video8/Hi8 etc, It can also produce a single CVBS file for formats like SMPTE-C/B.

These are stored in 16-bit GREY16 headerless files separated into chroma/luma composite video signals in the .tbc format filename.tbc & filename_chroma.tbc respectively alongside .json and .log files with frame and decode information, usable with the LD-Decode family of tools ld-analyse, ld-process-vbi, ld-process-vits, ld-dropout-correct & ld-chroma-decoder etc

The export scrips will by default render a lossless, interlaced top field first and high-bitrate (roughly 70-100 Mb/s) FFV1 codec video which, which although ideal for archival and further processing has only recently started to gain support in modern NLEs.

To generate .mkv files viewable in most media players, simply use the tbc-video-export tool.

Read the README_gen_chroma_vid_scripts readme for the legacy script options.

Export your TBC files to a video file with the following basic command

Linux & MacOS

tbc-video-export Input-Media.tbc

Windows

tbc-video-export.exe Input-Media.tbc

[!IMPORTANT]
Read the full export guide here!

Profile Options

For archival to web use we have a wide range of pre-made FFmpeg profiles defined inside the tbc-video-export.json file.

Note for Odysee uploads the provided web files are ideal, for Vimeo de-interlace the FFV1 export, but for YouTube de-interlace and upscale to 5760x4320p to have base possible re-encoding from there side as SD/HD media is overcompressed on YouTube.

The stock profiles for web use the BDWIF deinterlacer, but QTGMC is always recommended, de-interlacing guide.

ProRes 4444XQ & FFV1 with PCM audio have been added for editing support.

Define your profile with for example: --profile ffv1_8bit_pcm

Profile Name Codec Compression Type Bit-Depth Chroma Sub-Sampling Audio Format Container File Extension Bitrate
ffv1 FFV1 Lossless Compressed 10-bit 4:2:2 FLAC Audio Matroska .mkv 70-100mbps
ffv1_8bit FFV1 Lossless Compressed 8-bit 4:2:2 FLAC Audio Matroska .mkv 40-60mbps
ffv1_pcm FFV1 Lossless Compressed 10-bit 4:2:2 PCM Audio Matroska .mkv 70-100mbps
ffv1_8bit_pcm FFV1 Lossless Compressed 8-bit 4:2:2 PCM Audio Matroska .mkv 40-60mbps
prores_hq_422 ProRes HQ Compressed 10-bit 4:2:2 PCM Audio QuickTime .mov 55-70mbps
prores_4444xq ProRes 4444XQ Compressed 10-bit 4:4:4 PCM Audio QuickTime .mov 80-110mbps
v210 V210 Uncompressed 10-bit 4:2:2 PCM Audio QuickTime .mov 200mbps
v410 V410 Uncompressed 10-bit 4:4:4 PCM Audio QuickTime .mov 400mbps
x264_web AVC/H.264 Lossy 8-bit 4:2:0 AAC Audio QuickTime .mov 8mbps
x265_web HEVC/H.265 Lossy 8-bit 4:2:0 AAC Audio QuickTime .mov 8mbps

Time Control & Audio Muxing

  • -s Skips number of frames -s 25 for example skips 1 second of PAL video.

  • -l Defines length to export so -l 1500 is 1 minute of PAL video at 25fps or -l 1500 for NTSC at 29.97fps

  • --audio-track Embed an audio file example: --audio-track HiFi_24-bit_192khz.flac & --audio-track Linear_24-bit_48khz.flac from HiFi-Decode

Full Example:

Linux & MacOS:

tbc-video-export -s 50 -l 1500 --audio-track HiFi_24-bit_48khz.flac --audio-track Linear_24-bit_48khz.flac Input.tbc

Windows:

tbc-video-export.exe -s 50 -l 1500 --audio-track HiFi_24-bit_48khz.flac --audio-track Linear_24-bit_48khz.flac Input.tbc

VBI (Vertical Blanking Interval) Data Recovery

Software decoding provides the full signal frame, recovery software can be used to read and extract this information, however some information can be automatically extracted in the TBC file stage with ld-processs-vbi like VITC & Closed Captions.

VITC Timecode (Standard SMPTE Timecode)

CC EIA-608 (Closed Captioning)

Teletext (European Subtitles & Information Graphics)

Tape-based Arcade Games!

Ruxpin TV Teddy (Extra audio in visable frame)

Generate an video output with the top VBI area:

This creates a scaled 720x608 PAL or 720x508 NTSC (IMX/D10) video file.

Linux & MacOS:

python3 tbc-video-export.py --vbi input.tbc

Windows:

tbc-video-export.exe --vbi input.tbc

Terminal Arguments

VHS-Decode supports various arguments to change how captured tape recordings are processed. These vary slightly between formats like VHS & Umatic but the basic oprations remain the same.

The list below is a short list for common/daily usage but does not cover all the abilities and new or advanced command arguments possible so please read the complete and upto-date command list on the wiki as commands may change or be deprecated, so its always good to check this list for any updates.

Sample Rate Comamnds

By default, this is set to 40 Mhz (40msps) (the sample rate used internally and by the Domesday Duplicator) at 16 bits.

The decoder is 8/16 bit agnostic so as long as sample rate is defined, it will decode it same for 10-bit packed captures and if its FLAC compressed.

-f Adjusts sampling frequency in integer units.

Example's -f 280000hz or -f 28mhz or -f 8fsc

-tf Sets Tape Format enter VHS, SVHS, UMATIC, UMATIC_HI, BETAMAX, VIDEO8, HI8, TYPEC, EIAJ, VCR (Default is VHS)

CXADC Specific Sample Rate Commands

--cxadc 28.6 MHz/8-bit (8fsc) (Recommended for stock card capture)

--cxadc3 35.8 MHz/8-bit (10fsc) (Not recommended for capture due to up-sampling)

--10cxadc 14.3 MHz/16-bit (4fsc) (Not recommended for capture due to under-sampling)

--10cxadc3 17.9 MHz/16-bit (5fsc) (Not recommended for capture due to under-sampling)

Colour System Commands

Changes the colour or TV system to NTSC, PAL, PAL-M, NTSC-J, or MESECAM respectively. Please note that, as of this writing, support for PAL-M is experimental.

--system followed by the TV System

For example --system NTSC

Options are PAL, PAL-M, NTSC-J, MESECAM currently.

MESECAM (requires extra GNUradio script for decoding colour after the TBCs currently)

Time & Location Control

These commands are used for jumping ahead in a file or for defining limits. Useful to recover decoding after a crash, or for limiting process time by producing shorter samples.

-s Jumps ahead to any given frame in the capture.

--start_fileloc Jumps ahead to any given sample in the capture.

-l Limits decode length to n frames.

-t Defines the number of processing threads to use during demodulation, decode cant use more then 6-8 threads per decode currently so using 8 threads is the practical limit as its mostly a single core task.

(note: upon crashing, vhs-decode automatically dumps the last known sample location in the terminal output)

Time Base Correction & Visuals Control

--debug sets logger verbosity level to debug. Useful for debugging and better log information. (Recommended to enable for archival.)

--ct enables a chroma trap, a filter intended to reduce chroma interference on the main luma signal. Use if seeing banding or checkerboarding on the main luma .tbc in ld-analyse.

--recheck_phase re-check chroma phase on every field, fixes most colour issues. (No effect on U-matic.)

--sl defines the output sharpness level, as an integer from 0-100, the default being 0. Higher values are better suited for plain, flat images i.e. cartoons and animated material, as strong ghosting can occur. (Akin to cranking up the sharpness on any regular TV set.)

--dp demodblock displays Raw Demodulated Frequency Spectrum Graphs, makes a pop-up window per each thread so -t 32 will give you 32 GUI windows etc

Input file formats:

Note The decoders can be RAW uncompressed data or FLAC compressed data.

Note .RAW will need to be renamed to s16/u16

.ldf/.lds (40msps Domesday Duplicator FLAC-compressed and uncompressed data).

.r8/.u8 (CXADC 8-bit raw data).

.r16/.u16 (CXADC 16-bit raw data).

.flac/.cvbs/.vhs/.svhs/.betacam/.betamax/.video8/.hi8 (FLAC-compressed captures, can be either 8-bit or 16-bit).

If using custum extentions include, tv system, bit depth, and samplerate inside the file name so its clear for archival and presentation.

Output file formats:

Unlike CVBS-Decode & LD-Decode, VHS-Decode does not output its timebase-corrected frames as a single Composite .tbc file for colour-under formats, but does for composite modualted ones such as SMPTE-C.

Both the luminance and chrominance channels are separate data files, essentially digital "S-Video", additionally useful for troubleshooting. Descriptor/log files are generated so you end up with 4 files with the following naming:

filename.tbc - Luminance (Y) Image Data (Combined Y/C for CVBS)

filename_chroma.tbc - Chrominance (C) Image Data (QAM Modulated)

filename.tbc.json - Frame Descriptor Table (Resolution/Dropouts/SNR/Frames/VBI Timecode)

filename.log - Timecode Indexed Action/Output Log

Join us!

Discord

Reddit

VideoHelp Forum

Facebook

More Documentation

VHS-Decode Wiki

Google Doc Documentation

If in doubt - feel free to read the docs/wiki again, if its not there then ask!

For future documentation changes, speak with Harry Munday (harry@opcomedia.com) or on Discord (therealharrypm)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vhs_decode-0.3.1.dev2.tar.gz (55.6 MB view details)

Uploaded Source

Built Distributions

vhs_decode-0.3.1.dev2-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13 Windows x86-64

vhs_decode-0.3.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

vhs_decode-0.3.1.dev2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

vhs_decode-0.3.1.dev2-cp313-cp313-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

vhs_decode-0.3.1.dev2-cp313-cp313-macosx_10_13_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

vhs_decode-0.3.1.dev2-cp313-cp313-macosx_10_13_universal2.whl (1.6 MB view details)

Uploaded CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)

vhs_decode-0.3.1.dev2-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12 Windows x86-64

vhs_decode-0.3.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

vhs_decode-0.3.1.dev2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

vhs_decode-0.3.1.dev2-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

vhs_decode-0.3.1.dev2-cp312-cp312-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

vhs_decode-0.3.1.dev2-cp312-cp312-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

vhs_decode-0.3.1.dev2-cp311-cp311-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

vhs_decode-0.3.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

vhs_decode-0.3.1.dev2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

vhs_decode-0.3.1.dev2-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

vhs_decode-0.3.1.dev2-cp311-cp311-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

vhs_decode-0.3.1.dev2-cp311-cp311-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

vhs_decode-0.3.1.dev2-cp310-cp310-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

vhs_decode-0.3.1.dev2-cp310-cp310-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

vhs_decode-0.3.1.dev2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

vhs_decode-0.3.1.dev2-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

vhs_decode-0.3.1.dev2-cp310-cp310-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

vhs_decode-0.3.1.dev2-cp310-cp310-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file vhs_decode-0.3.1.dev2.tar.gz.

File metadata

  • Download URL: vhs_decode-0.3.1.dev2.tar.gz
  • Upload date:
  • Size: 55.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for vhs_decode-0.3.1.dev2.tar.gz
Algorithm Hash digest
SHA256 9b4a2e2005fcf806459429c748d24a170e6225c95537b88e33992017370bc09d
MD5 cc1d5fe3217fe90cfb091125a788b872
BLAKE2b-256 4ac150472c440d4579dd15cb6a23e747c0ce2efed7f7749f744249f8141c33bd

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c80b97e916ca420437dbac164bdcfd81a440c9a59328971471e12c6fa19623e8
MD5 697e38ef3ad743cc7d2f7d5adffef374
BLAKE2b-256 f8fa97054b19f5abe50c71e084529ee87ad1c4a1d1fdc33a5bc77f894a11751c

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9dfc4925f29560a68ac98567e3a774a3657ebf08cca35e3280d07d3bb139d3dd
MD5 f90f768cc12cfc73959172da08dcbc9a
BLAKE2b-256 039421da4e72897e734e962c2857187fabfb34d712aee320e496deba453c9de4

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7752ceb8df41818dcf95948a633c9798dd4b70e0791751ebb4e284db3d4a219
MD5 faf96da41f30f1300e538e385e939bba
BLAKE2b-256 e14ab1d3e80b5e052400400c0ccfef38df57266051bece5cff8aae363de96b6e

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c8eb5c45583088910d6a95b18b61ed326b7e3bf66532615b71a95571ff22ae5
MD5 d2aff888edc24dfb967352cb6d256135
BLAKE2b-256 81325b65e2cdc5dd479e2e6d00a5e280306f222ae90332764705dd8e3490a4df

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0a9dfcf9f85876c6f89b79c480be171229e6083bd4b496a76cf71d64bc6c5eb2
MD5 96458c3f5e81412b99e7dc800c465750
BLAKE2b-256 c5d86fe99e234afaea78ff09fe322bb0782272aa7dfe66e8ebda1d8289e27551

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 294758256ae1fcec090abdef73b3db5bcbe72f39724c23eda4a6f67f91857bb0
MD5 fbfe06c76dec9cc7ed101422f8ac3db1
BLAKE2b-256 ba5e4a4a054386a69919db22960ba1cb9cb399f761bf1495b80c159e0895af1a

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7099659e5ae1889f9bb7dcbec0083110e10bc08b53faccceea2e8517429681af
MD5 e45fad8da82a773d7851eced84918057
BLAKE2b-256 8f9d598d4a71379a1d73a0c3513b80cb60dc7d4f12fdd5668653b3caabaff82f

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 31ec0e71cdf682472b77e54f8f50b8edfa8107d06d20e90dfb0f8a144fc079c4
MD5 7015e24c3853a584de0cf538181e3a9b
BLAKE2b-256 668347cd8e2981d9177ac90dc4cc98665e39a65be08505c223a207871057a637

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbdf68619b6c185382e20be83ecdcb81c21a89f0a3ec8d406408ad78ba69cc7d
MD5 4b58a5ee46b64b5c9598037a4fa78881
BLAKE2b-256 dcf29cb97511b5e4b4dea391cf5f548454d57d1150c4698b83060a3b073a784f

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e86b55bb731b7455e4a85419970309caf13ece3bb916597efa19544a2fa21f9
MD5 36be7560c849945b9a9c214a906bb8db
BLAKE2b-256 5ecb21638260a48401591f7054c3fd5ef26b686a76b72c7760a9265ce11ec0ca

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 266ce245b5d1b859bda2c0cdf5391876ac4708ce31ffc5edbb015abbbe5277c0
MD5 927e68456818804ada70e6826a493356
BLAKE2b-256 91cc789f7c425fb29b3eab012cf41c67204e3c061079dd67ebf6c21eed6c14c8

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 46bdbcdebe020d5b2890a16e6c80004f84235b4f669783dbb54ba82b8e81f93d
MD5 eaec82366b363eacb8964b8628a82d56
BLAKE2b-256 8d4c5d4676d6b0ead4e1965dc6e047ef2b8ce2c830fb7f5bd2c1dc4ec9d3bdae

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8c879ae86eba406c9fd46c900198f80b54c0d566305d36e587ab111db2b96bea
MD5 84bf6a531e9229429fd9735e415003d3
BLAKE2b-256 3576dfd2a6afc79939cc8cb23d9e4e8ff78ed3f37b3588328c36d2f3ed59f1e7

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e0beef27c67f07a3b8acfc4a7eca40b9adb3feab24f8a74e1f8e1a39b721faf3
MD5 0d7d8a77edd77ec5fde75e850de84dcb
BLAKE2b-256 94d8eddc1dc18381f808ed9ac964b57db604d78089e50a6c44b0309e098478fb

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 109ac429302f9a4060fc8466266476925e1717ea4497aec62dc66a7bb4d38e99
MD5 9766bc820019d638aea5a6d7e298de76
BLAKE2b-256 60a0e9725e00092f51bf0b1fba08bf11ff302c63fa2750c55e65b95f4fc0bfe0

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f68732b0abbac4fc6c65bdcbd92073dfe3173b8d44e6cffae12edbc5e7d17dc
MD5 d1a9bf79ae714691b4a7a55988d24b1b
BLAKE2b-256 152b5d664e87d5e09eb978d93c489289f985d4789c4245e887745257760ba841

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c036a162a41df93c257564b82e4cada1e60757f19e593b4b4a370fb5645d261b
MD5 d3c1f6c9942793aac5834bd61c588791
BLAKE2b-256 f0803732cfa56f2f2cbb59391fd3274506d47e78400a10d18063f099cb2f9ef8

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 150edc8b6539c096d92aea3af513c4fd205f07caa5711db3e61eef9a82cb14af
MD5 3f2aed95b7c7bf1fae5d7cee60c49d5a
BLAKE2b-256 94b9cb8c79c75008b1f586e1c4654fda3366174af97c2ddf3033b0edcc6e6f98

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3b2f4021d26f01de9f475a3bb92f0a1eb421e55dff1c30f00d42e152540d27ee
MD5 5c3af550db33c83d24d927c82540d3ac
BLAKE2b-256 5e06f48934985a9502079ee81694d75904c0f3dad79106126302d25c412ab2be

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 655e75279d6b68369f7737c1291484b020c90c53fd1a5191c6125a8b242632c8
MD5 85c926f25c2ae8943b76b521b81826ba
BLAKE2b-256 63e24b2bb28516c4f368735ac02fc7904dad65353319027e6fde0e01873f725c

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c666b7bf32660a13913038e084aea3834769ae221bb2f7fa786721cd68f46c0
MD5 a671e16c3730e4f10f143de4e697c47a
BLAKE2b-256 f840f12dc4529aedc8a572a76dd6dc6c120e694a5eb7e04b4a1629f7bc0ef952

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bbb3ddabf37d289f6701bd271d206f0d2f2a142c27cca3e5461fc23a5b0305ae
MD5 2046289e5ebd6860fb4ee0241e67c552
BLAKE2b-256 93f30fb6883a810cfd9c81cb7b1097c8827b90cd67841c0124f13ffefec72805

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fa3c3178dd22a444d0678ff1fb75e1c36b66d2930a5ad22eecfe5f01dcf3cff0
MD5 0ac96b9fc9fa9a6552d5089e384607fc
BLAKE2b-256 c88fefee0ec65d5b5d93452db9c95c2628b550b8a87b39023ebca638d3682c17

See more details on using hashes here.

File details

Details for the file vhs_decode-0.3.1.dev2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for vhs_decode-0.3.1.dev2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 197a6dbd7948effe8f459e1bbf20471a85fc25964a54573723abe7ef21a19892
MD5 09d519560893a86fc1692ab0595c6604
BLAKE2b-256 f2d09fe5f51c54c67b14fba1bbe29179706b1d8bc5cd3df842f53c121c2997c3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page