Zcooger, I found this video by random chance and noticed your comments about vhs-decode. Considering the apparent "anything on tape" scope of this project is anyone interested in implementing PXL-2000 support? It's a "toy" camera that records in a LBTV format onto audio cassettes at about 16.875 inches per second, with a theoretical video bandwidth of about 200KHz (9x the playback rate and bandwidth of 12KHz). His video demonstrates a played back section of a single frame (slowed down to what I assume is 44100Hz) and he calculated and showed various signal timing for sync, etc. That would be a just for kicks thing, as it has literally no application and source material available in 2021.
+ Reply to Thread
Results 751 to 765 of 765
I found another bug or error.
The vhs-decode stuck at frame 71 and the log file repeat the same message until I pressed CTRL+C "lddecode - DEBUG - VBI serration levels 3 - Sync tip: 3703.07 kHz, Blanking (ire0): 4000.73 kHz"
The command: "vhs-decode -p -t4 --10cxadc3 -cafc error.vhs error_out"
The test file: https://files.videohelp.com/u/264498/error.vhs
Update: The latest version from oyvindln git is working.
Is anyone aware of a software based digital audio to video conversion tool? Like something that would take a WAV or FLAC file and convert it to a video signal with digital "pixels" that would allow me to store digital audio on VHS for archival purposes.
Here's package that allows to convert between audio and video in PCM-F1/STC-007 format:
More information you can find on "Fagear Tech Corner" Discord server, #pcm_diy channel (mainly russian but they talk in english too).
Last edited by Titan_91; 1st Nov 2021 at 08:52.
Following this video guide, I finally got QTGMC working in Wine:
Now that I've tried it, the de-interlacing is fantastic but I don't like the noise reduction. It completely decimates any detail gains achieved using vhs-decode over a normal VCR/capture device workflow. Is there a preset that does not use noise reduction? If not, do I need to try SourceMatch to disable noise reduction and sharpness filters? Literally the only thing I want to do with QTGMC is de-interlacing.
[Attachment 61538 - Click to enlarge]
They are called "fish" or "comets" and are an artifact of analog satellite TV reception. They tend to occur in areas of high color saturation and on sharp transitions. Not so much in flat, pale areas. Especially when the weather was bad, this was a common sight in the 90's and early 2000's in Europe.
Since they are "baked in" into the VHS recording, they cannot be fixed by ld-decode. However I used to have reasonably good success masking them with an old AviSynth plugin called "DePulse".
Last edited by Skiller; 31st Oct 2021 at 20:17.
... analog satellite TV reception. They tend to occur in areas of high color saturation and on sharp transitions. Not so much in flat, pale areas. Especially when the weather was bad, this was a common sight in the 90's and early 2000's in Europe.
Here's the AviSynth+ script I settled on to avoid noise reduction:
FFMPEGSource2("vhs-decode.mkv") AssumeTFF() QTGMC(SourceMatch=1, Lossless=2, EdiThreads=4) Prefetch(14)
I did a successful decode of another tape where the signal ended and some white noise was captured at the end of the sample. Here is the terminal output. The white noise is present in the decode at the end of the tape, which is normal. The entire tape decoded fine with no issues or artifacts. Please note I adjusted formats.py to use a 1.5MHz lower cutoff frequency for the NTSC band pass filter.
/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py:3256: RuntimeWarning: Mean of empty slice. return _methods._mean(a, axis=axis, dtype=dtype, /usr/lib/python3/dist-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars ret = ret.dtype.type(ret / rcount) no valid lines found! Guessing or using values for previous field so result will probably be garbled! ERROR - please paste the following into a bug report: current sample: 57572109582.63985 arguments: Namespace(AGC=False, cafc=False, chroma_trap=False, cxadc=False, cxadc3=False, cxadc3_tenbit=False, cxadc_tenbit=False, debug=False, disable_comb=False, disable_dc_offset=False, disable_diff_demod=False, dod_hysteresis=1.25, dod_threshold_a=None, dod_threshold_p=None, dodod=False, high_boost=None, infile='newhope-windowdedication95.flac', inputfreq=None, length=99999999, level_adjust=0.1, nldeemp=False, noAGC=None, nodod=False, notch=None, notch_q=10.0, ntsc=True, ntscj=False, outfile='newhope-windowdedication95', pal=False, palm=False, recheck_phase=False, sharpness=0, start=0, start_fileloc=-1, sync_clip=False, tape_format='VHS', threads=15, track_phase=None, umatic=False) Exception: cannot convert float NaN to integer Traceback: File "./vhs-decode", line 258, in <module> f = vhsd.readfield() File "/media/user/vhs-decode/vhs-decode new/vhsdecode/process.py", line 750, in readfield f, offset = self.decodefield(initphase=initphase) File "/media/user/vhs-decode/vhs-decode new/lddecode/core.py", line 3466, in decodefield raise e File "/media/user/vhs-decode/vhs-decode new/lddecode/core.py", line 3462, in decodefield f.process() File "/media/user/vhs-decode/vhs-decode new/lddecode/core.py", line 3177, in process super(FieldNTSC, self).process() File "/media/user/vhs-decode/vhs-decode new/lddecode/core.py", line 1472, in process self.linelocs1, self.linebad, self.nextfieldoffset = self.compute_linelocs() File "/media/user/vhs-decode/vhs-decode new/vhsdecode/process.py", line 307, in compute_linelocs int(line0loc) : int(line0loc + (self.meanlinelen) * 4)
Will have a look at it, suspect it's just some function not accounting for no line starts being found in the noise part or something.
Last edited by oln; 8th Nov 2021 at 12:10.
Here's that last sample I did for a church. Turned out great only with a few frames of a darker image shown only at certain times (at 17:50 and 18:36 for example). The source is SP and recorded in 1995. Signal level on the tape is still good, dropout correction wasn't even needed. I no longer have the tape but kept the RF capture. Audio was captured traditionally using the VCR's standard RCA audio jacks.
Last edited by Titan_91; 8th Nov 2021 at 19:02.