A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/oyvindln/vhs-decode/wiki/TBC-to-Video-Export-Guide below:

TBC to Video Export Guide · oyvindln/vhs-decode Wiki · GitHub

Back Page RF Capture Decoding Guide

Forward Page Post Processing

Sub-Page Jitterbugs TBC-Video-Export Releases Page

This is the part ware you take your luma & chroma data to the ld-chroma-decoder which combines it and then decodes it to a RGB or YUV stream with FFmpeg using the merge planes function, resulting in a final colour video stream that is encoded to FFV1 or to any other FFmpeg supported codec and container output format you wish to use.

You can add your own encoding profiles in the tbc-video-export.json file, which when present will be the profile options available to the export tool.

Key Secondary Guide Read Pre-Export LD-Analyse Guide Here

Colour-Under formats VHS, Umatic, BetaMax, Video8, Hi8 etc are a .tbc/_chroma.tbc file (Y+C) set.

CVBS formats Composite, LaserDisc, SMPTE 1" Type C are 1 single .tbc file.

Always backup & keep your .log & .json files even if you delete your TBC files after you are happy with your export these still contain key metadata.

Tip

The output name and directory will the the same as the input unless manually defined by the user.

Linux & MacOS

tbc-video-export Input-Media.tbc

Windows

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

The export tool takes filename.tbc / filename_chroma.tbc and metadata from the .json and create video files automatically for PAL or NTSC it can also timecode based off VITC data if present.

The default output format is:

Ideal starting point for post processing footage without VBI data, but will require de-interlacing for online use.

Defining input location and output location is useful if your data is not inside the same folder as the export tool.

For Linux/MacOS based systems this is like:

/home/harry/desktop/vhs-decode/Input.tbc

For Windows this looks like

"C:\Users\harry\Desktop\Decode\Input.tbc"

On tape Audio can be Mono, Stereo, Linear Timecode

You have 4 possible channels, 2 Linear & 2 HiFi FM This is format and tape to tape dependent as Sony 8mm can have PCM digital for example.

LaserDisc has 2 Analog channels which one can be populated with AC-3 or DTS digital this can be 4.0 or 5.1 surround.

Your options are quite simple:

Auto Audio Align

[!WARNING] This works only for clock synchronised data this means Video8/Hi8/Betamax NTSC/LaserDisc captures can work with AAA directly, but VHS/Betamax PAL etc will require a clockgen setup.

After decoding your Video RF and or HiFi FM audio you will want to sync your PCM audio data with your video file

With a standard configuration you just need to alter the following:

[!TIP]
Below is premade commands for usage:

Linux & MacOS

"ffmpeg" -i baseband.wav -filter 'channelmap=map=FL-FL|FR-FR' -f s24le -ac 2 - | mono VhsDecodeAutoAudioAlign.exe stream-align --sample-size-bytes 6 --stream-sample-rate-hz 46875 --json capture.tbc.json --rf-video-sample-rate-hz 40000000 | ffmpeg -f s24le -ar 46875 -ac 2 -i - -af aresample=48000 -sample_fmt s32 baseband_aligned.flac

"ffmpeg" -i baseband.wav -filter_complex "[0:a]channelsplit=channel_layout=2.1:channels=FL[FL]" -map "[FL]" -f s24le -ac 1 - | mono VhsDecodeAutoAudioAlign.exe stream-align --sample-size-bytes 3 --stream-sample-rate-hz 46875 --json capture.tbc.json --rf-video-sample-rate-hz 40000000 | ffmpeg -f s24le -ar 46875 -ac 1 -i - -af aresample=48000 -sample_fmt s32 baseband_aligned.flac

Windows

ffmpeg.exe -i baseband.wav -filter_complex "channelmap=map=FL-FL|FR-FR" -f s24le -ac 2 - | VhsDecodeAutoAudioAlign.exe stream-align --sample-size-bytes 6 --stream-sample-rate-hz 46875 --json capture.tbc.json --rf-video-sample-rate-hz 40000000 | ffmpeg.exe -f s24le -ar 46875 -ac 2 -i - -af aresample=48000 -sample_fmt s32 baseband_aligned.flac

ffmpeg.exe -i baseband.wav -filter_complex "[0:a]channelsplit=channel_layout=2.1:channels=FL[FL]" -map "[FL]" -f s24le -ac 1 - | VhsDecodeAutoAudioAlign.exe stream-align --sample-size-bytes 3 --stream-sample-rate-hz 46875 --json capture.tbc.json --rf-video-sample-rate-hz 40000000 | ffmpeg.exe -f s24le -ar 46875 -ac 1 -i - -af aresample=48000 -sample_fmt s32 baseband_aligned.flac

Muxing Audio

To embed an audio file use --audio-track

Example:

--audio-track HiFi_24-bit_48khz.flac --audio-track Linear_24-bit_48khz.flac

To set the input file name, track name and language flags use --audio-track-advanced

Good to read: FFmpeg Audio Channel Mapping.

Language of the audio track i.g en, jpn, cn, de etc

[file_name, title, language, rate, format, channels, channel_layout, time_offset]

Example:

--audio-track-advanced '["tests/files/HiFi_24-bit_48khz.flac", "HiFi", "eng", "48000", "2", "00:00:00.000"]'

Example Basic

tbc-video-export --audio-track HiFi_24-bit_48khz.flac --audio-track Linear_24-bit_48khz.flac

Example Advanced

 tbc-video-export Input.tbc --audio-track-advanced '["tests/files/HiFi_24-bit_48khz.flac", "HiFi", "eng"]' --audio-track-advanced '["tests/files/HiFi_24-bit_48khz.flac", "Linear", "eng"]' output-name

--process-efm Decodes 4.0 or 5.1 AC3 to file

--process-efm-dts Decodes 5.1 DTS to file.

Caution

Progressive video files will be 2x the size of interlaced files.

FFmpeg profile based de-interlacing can be done with bwdif & w3dif (see the tbc-video-export.json formatting for how to apply it to new profiles) for 50p/59.94p progressive files although QTGMC is recommended for the best results today.

We have implemented ProRes & PCM audio modes for better support in NLEs such as Davinchi Resolve.

Note

You can make/share you own FFmpeg profiles by editing the tbc-video-export.json as needed, however it may need to be edited every major update.

Define your profile with for example: --profile ffv1_8bit_pcm

Encoding Profile List

Standard Profiles:

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

Editing Profiles:

Profile Name Codec Compression Type Bit-Depth Chroma Sub-Sampling Audio Format Container File Extension Bitrate 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

Web Profiles:

Profile Name Codec Compression Type Bit-Depth Chroma Sub-Sampling Audio Format Container File Extension Bitrate 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

Broadcast Profiles:

Profile Name Codec Compression Type Bit-Depth Chroma Sub-Sampling Audio Format Container File Extension Bitrate D10 PAL MPEG2 Lossy 8-bit 4:2:2 PCM Audio Material eXchange Format .mxf 50mbps D10 NTSC MPEG2 Lossy 8-bit 4:2:2 PCM Audio Material eXchange Format .mxf 50mbps

[!NOTE] The D10 or IMX50 standard is 720x512 NTSC & 720x608 PAL (SD + 32 lines for VBI area) standard for SD archive delivery and used by the BBC archive and many other broadcasters.

Warning

You probably missed the dropdown table tab directly above, this is very handy to read & reference!

Adjust values in ld-analyse to have your rough numbers

--chroma-gain Chroma Level (Gain) factor applied to chroma components. 0 to 2 (Default 1)

--chroma-phase Phase rotation applied to chroma components (degrees) -180 to 180 (Default 0)

--luma-nr Luma noise reduction level in dB. (decimal range) 0 to 10 (Default 0)

--transform-threshold Transform PAL chroma sensitivity (decimal range) 0 to 1 (Default 0.4)

Select Chroma decoder to use.

--chroma-decoder decoder

Defaults:

PAL:

NTSC:

Available Decoders:

Monochrome: mono

PAL: pal2d, transform2d, transform3d

NTSC: ntsc1d, ntsc2d, ntsc3d, ntsc3dnoadapt

--export-metadata

Run ld-export-metadata before export. (default: no)

Note

The generated subtitles (closed captions) and ffmetadata will be used when encoding.

This is data such as Title, Year, Camara, Tape Tape and so on can be added to the final video files metadata.

Example:

--metadata [{"title": "Birthday 2008", "JVC-GX250": "LP"}, {"year": 2008}]

Too add a custom or standard field to the metadata you can do as such for each article manually:

--metadata "Video System" "PAL" & -metadata title="my title"

Full Example:

tbc-video-export Munday-Walking-Around-Garden.tbc --metadata "Tape Format" "VHS-C" --metadata "Video System" "PAL" --metadata "Tape Mode" "SP" --metadata "Title" "Munday Walking Around Garden" --metadata "Date" "2009-07-24" --metadata "Capture Date" "2022-09-08"

Resulting Media Info Metadata Readout:

General
Unique ID                                : 189262425709654888565939284128344460936 (0x8E629E0783A839695528477CEDD64E88)
Complete name                            : Munday-Walking-Around-Garden.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 386 MiB
Duration                                 : 30 s 160 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 107 Mb/s
Frame rate                               : 25.000 FPS
Movie name                               : Munday Walking Around Garden
Writing application                      : Lavf60.3.100
Writing library                          : Lavf60.3.100
ErrorDetectionType                       : Per level 1
Attachments                              : Munday-Walking-Around-Garden.tbc.json
CAPTURE_DATE                             : 2022-09-08
DATE                                     : 2009-07-24
TAPE_FORMAT                              : VHS-C
TAPE_MODE                                : SP
Time code of first frame                 : 00:00:00:00
Time code source                         : Matroska tags
VIDEO_SYSTEM                             : PAL
Standard Export (4:3 Standard)
tbc-video-export input.tbc

Standard 4:3 760x488 NTSC & 928x576 PAL

Makes a Monochrome or Black & White Image using the Y channel or strips the colour carrier from a CVBS TBC.

16:9 Widescreen Letterbox Crop 928x432 PAL & 760x432 NTSC

These commands work well for 16:9 widescreen letterbox crop tapes rendering only the centre making a ideal image for scaling/de-interlacing to 720p 50/59.94p for progressive Blu-Ray mastering.

Note

This produces an full-vertical image frame allowing you to visually see VBI data, and syncs however, if your image is not centred properly this may crop the data so ensure you adjust the active area in-ld-analyse before exporting.

Scaled 720x608 PAL & 720x508 NTSC (IMX/D10)

Unscaled 928x608 PAL & 760x508 NTSC includes top and bottom sync, useful for cropping and conforming in post rather than in initial export.

Full 4fsc Signal Frame

Note

This has to be manually done via editing the .JSON files video area values, in a text editor, below are the fields you need to find and change to apply this effect.

This option passes the TBC files to FFmpeg directly and exports only luma information.

Composite (Live CVBS Source)

S-Video (Y with C Ignored) (VHS PAL SP Source)

Viewing Video Files On Computers

Due to displays on TV and PC displays using different levels, you need to convert 16-235 to 0-255 this can be done via a simple shader filter in MPC for example.

Example Filter Settings:

The chroma-decoder can produce images that are not to correct black levels for PC use.

This can be corrected very primitively with initial export (no recommended if re-mastering in Resolve)

Example: --force-video-black-level 32

If a single value is defined such as 32 this will uniformly apply to R/G/B colour if 3 values are defined it will adjust each channel.

This should only be used for PC as it will break TV Legal levels of 16-255

DaVinchi Resolve Manual Curve Adjustment

Note

Most BetaMax media releases will have Colour Bars at the start for reference use, which with a vector scope you can set the gain/phase correctly.

Test your images on different displays

Depending on the colour accuracy of your display these images can look bright white in the yellows this is called white level clipping you need to adjust your display.

The example here is 2 sRGB photos taken of 2 displays

This is for altering the flagging data inside the mov, mp4 & mxf containers.

This is the reason why proper mastered media will only show above the active head switch area when displayed on a TV/System with standard video flag support.

AMCDX Video Patcher Live Link / Archive Link This tool is dead simple to use and allows you to correctly flag recordings colour/timecode information, this allows files to be hardware & industry standard software compatible.

Example of a blank and correctly flagged progressive exports for NTSC & PAL using ProRes HQ / V210.

Firstly, the correct way to word a video involving the projects is to state it's a FM RF Capture decoded with xxx version of decode not "domesday method" etc as this causes conflation about the methodolgy and workflow involved.

That RF Capture is decoded with VHS-Decode, LD-Decode and or HiFi-Decode etc for example.

It's always best to separate current software generated video files, from the hardware capture projects reffering to it together as "FM RF Archival method" is the most accurate way to describe it.

RF captures are just the archive, not the decoded results as they can always be improved so never be considered a "final" so if possible It's recommended to always share source FLAC compressed RF on The Internet Archive if publishing any sort of decode related content.

To upload anything on YouTube in as close to orignal visual quality as possible you will need to upscale to the 2160p or "4k" bracket which is why we use 2880x2176 with 4:3 aspect ratio, encoded with HEVC 8-bit 4:2:0 at CBR 120mbps for example.

Using the "4K" bracket of YouTube avoids horrible black/dark colour bias compression macro block artifacts, this is due to forced re-compression, so it's best to start with lossless FFV1 10-bit export and then do your upscaling and deinterlacing via StaxRip or Hybrid or Vapoursynth directly.

Here is 2 very basic all FFmpeg based scripts using BWDIF, but QTGMC is normally better and IVTC for 24p wrapped media, and if using Vapoursynth Spline64 is always a good goto for upscaling.

PAL

ffmpeg -hwaccel auto -i "%~1" yuv422p10le -vf scale=2880:2176 -c:v ffv1 -aspect 4:3 -vf bwdif=1:-1:0 -c:a copy -color_range tv -color_primaries bt470bg -colorspace bt470bg -color_trc bt709 "%~n1_YT_4k_Scaled.mkv"

NTSC

ffmpeg -hwaccel auto -i "%~1" yuv422p10le -vf scale=2880:2176 -c:v ffv1 -aspect 4:3 -vf bwdif=1:-1:0 -c:a copy -color_range tv -color_primaries smpte170m -colorspace smpte170m -color_trc bt709 "%~n1_YT_4k_Scaled.mkv"

For use on Odysee or anything that supports direct streaming:

You can pick either x264_web or x265_web depending on how much system/client support of streaming you want.

tbc-video-export --profile x264_web example_decoded_media

Note

Odysee uses direct streaming, no on the fly transcode/re-encoding so care has to be taken to avoid client side playback issues, i.g non phone users.

Next Page Post Processing

Sub-Page Jitterbugs TBC-Video-Export Releases Page

Back Page RF Capture Decoding Guide


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4