- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
184 lines
14 KiB
Plaintext
184 lines
14 KiB
Plaintext
Episode: 4185
|
|
Title: HPR4185: Archiving VCR or any other RCA media
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4185/hpr4185.mp3
|
|
Transcribed: 2025-10-25 20:59:15
|
|
|
|
---
|
|
|
|
This is Hacker Public Radio Episode 4185 for Friday the 16th of August 2024.
|
|
Today's show is entitled Archiving the CR or any other RCA media.
|
|
It is hosted by Ken Fallon and is about 17 minutes long.
|
|
It carries a clean flag.
|
|
The summary is, we see our players are starting to get expensive so now is the time to archive.
|
|
Hi everybody, my name is Ken Fallon and you're listening to another episode of Hacker Public Radio.
|
|
Today I am going to talk to you about archiving video cassette record tapes to disk and
|
|
this is something I had already done myself, but my father passed away.
|
|
I volunteered to do the family there, so I ended up bringing 113 video cassettes on
|
|
a Ryanair flight in addition to the tip recorder itself, because although we use PAL in the Netherlands,
|
|
it's a different version to what's in Ireland, so I needed to bring that over here in the
|
|
U.S. uses NTSC and CECA.
|
|
In order to do this, you get an output via an RCA cable that orange, white and red one.
|
|
The orange has the video signal and the red and white has the left and right audio channel.
|
|
You can get cheap RSA to HDMI adapter cards and that allows you to watch video cassettes
|
|
and DVDs and stuff like that that don't have a HDMI connector on your HDMI playing device on
|
|
your own.
|
|
In this case, what I got was a HDMI to USB capture card and as the tape was playing, it
|
|
got converted from RSA to HDMI and then the HDMI captured the video into the computer and
|
|
then the computer was able to play it.
|
|
So I have some links to where I bought them in the show notes, but just more for reference
|
|
for you, you can probably get them locally cheaper and I think they're mass-produced and
|
|
rebranded by other people.
|
|
They're not recommendations, those links are more for guidance then.
|
|
So once you have the physical hardware connections all together, you can do a LS USB, we'll show
|
|
you the device and I'm going to be using a trick here that I use quite a lot which is
|
|
I run a command, don't put to a text file, add the device, run the command again, run
|
|
it to another text file and then do a different loss to and then you can see what changed.
|
|
So on the first case, what we need to do is check and see if our USB capture device
|
|
is actually captured.
|
|
Well, the first thing you actually do would be plug in the HDMI cable into a TV and see
|
|
does the video cassette actually play?
|
|
So does the EVI-2 HDMI adapter actually work?
|
|
So if you know that's working, then you can plug in the HDMI cable into your USB adapter
|
|
and that's step two.
|
|
So we're already at that point, we're at the point where you are getting pictures out
|
|
of the HDMI cable, it is speaking of the VCR and on the device itself, I set it to
|
|
the 720nose resolution because there's no way upscaling will work on this.
|
|
So just keep it at the close to the native variable solution as possible.
|
|
So what I do is I nullify USB and then I t that into a text file called before.text
|
|
and then I connect everything up, wait a few seconds, plug in the USB, wait a few seconds
|
|
and then do another USB, LSUSP into a file called after.text and then I'm going to do the
|
|
difference, the two, I guess a device ID that's been added and for Delta, call on to one macro
|
|
silicon USB video and that ID is kind of useful because what it will do is allow us to go
|
|
to the search engine of choice, type in that and see, do anybody else has anybody else
|
|
can have any other issues with that device.
|
|
And at the bottom of the show notes, there's a whole series of links that I got related
|
|
to that device, some of them were extremely helpful.
|
|
So now we know what device ID we have, we need to be able to, we know at least it's coming
|
|
up as a USB device and we need to see now if video for Linux is picking up the device
|
|
again.
|
|
So what we're going to do is that plug on, plug thing and t the following command into
|
|
a before.text and then compare it to an after.text.
|
|
So what I'm doing here is there's a sys class video for Linux forward slash video asterix
|
|
for such devices, for such you event.
|
|
So I do for I in all of that, do and then I can't allow to the for the text and then I plug
|
|
in the usb device and I do the same thing only to after.text and then I get a diff and
|
|
it has you events which has got a, I don't know, stuff like DevType is usb interface, driver
|
|
is uvc video and the product and that's the important one I'm looking for in my case
|
|
is 534 delta forward slash 2109 forward slash 2100, which is remarkably similar to some
|
|
of the device IDs, but anyway, so that's that product ID and the reason we need to know
|
|
this is because every time you plug it in, it might get different slash sys slash slash
|
|
sys video for links slash video number, which you'll see a slash dev video one or video
|
|
zero or video four.
|
|
So you don't know bending depending on boot time is your camera you're going to have
|
|
a video card or is it you plug in something or your phone connects and then suddenly you
|
|
got additional video cards.
|
|
So you need to be able to know which one of these mapped to on your Linux subsystem.
|
|
In the same way, we need to know what audio device it's going to be.
|
|
I use a record space dash L and I put that into the four text, plug it in again, a record
|
|
dash L to after that text.
|
|
After it's been plugged in, do a diff on the two and then I see that card two is a MS 2109
|
|
and it's coming in on device zero USB audio, which sounds all kind of cool.
|
|
So then this should help me open up a VLC for example and then you go into capture devices
|
|
and then underneath that we will see video camera capture mode and then device selection
|
|
video device name forward slash dev forward slash video four, so in my case there are four
|
|
options.
|
|
So from the previous checks, I knew it was video four and the audio device name I had
|
|
to type this in was hw colon two comma zero, which is card two device zero and the recipe
|
|
that should be enough to play by pressing the play button it should capture that stream
|
|
and display it on the screen and if that works, great, you're sorted.
|
|
For me, it meant taking that the USB device ID searching why it wasn't playing and I found
|
|
a excellent GitHub article describing that even though it says that we record 60 frames
|
|
per second it doesn't and the video input format needs to be specified.
|
|
So the way you can do that in VLC is go to the advanced section and then under video input
|
|
chroma, I put in mjpeg from the drop down and I changed the frame rate from 60 down to
|
|
30 and then when I did that is played fine and I was able to essentially hear and hear
|
|
everything that was on the tape.
|
|
Top tip, make sure that the video cassette that you're playing actually has audio coming
|
|
through on it and not that you spend four hours trying to debug an audio issue which
|
|
turns out to bet the tape you're trying yourself doesn't actually have audio.
|
|
So it's handy to have a TV with a HDMI connection in it that confirms your test setup is
|
|
working or HDMI play out.
|
|
So now once I had a video on the screen and an image on, I now knew my hardware setup
|
|
was correct and working for shadowing from later.
|
|
So I built a script and as I say in the show notes attached to this, there's show notes
|
|
attached to this and this is very much a me script.
|
|
So I feel free to modify and change it and there are two basic sections to one is it checks
|
|
for the audio device using grep for that you event file and then it I done device which
|
|
video device it is and it gives you a video device part of slash dev slash mic is video
|
|
four and then it does equally the same for the audio device and if they're not found
|
|
in the deserts saying that it hasn't been plugged in usually when that happens just plug
|
|
it out with 10 seconds plug it back in again and then it's good to go.
|
|
So then I use ffmpeg which is like the workhorse of media to take the files in as close to
|
|
the road don't possible and just don't put on to a disc I'm not going to do any transcording
|
|
or anything at the stage my goal here is to pull it in as quickly as possible without
|
|
doing any work on this machine.
|
|
So they commands is ffmpeg-f which is the format and that's video for Linux 2 then I have
|
|
three minutes of 30 which is basically hard coded into the hardware device that I purchased.
|
|
So that's going to mean that I'm not going to do frame have to do a frame rate turns translation
|
|
in ffmpeg the video size is 72480 which will just give a standard video format.
|
|
The input format is mjpeg which is what's coming from the device and then they thread
|
|
Q size it was complaining about that so that's the maximum number of packets when reading
|
|
from a file or device and I needed to set that to 512 in order to get enough 3Qs available
|
|
and then carrying on the dashi input file name is slash dev video and that's from that's
|
|
the variable that I had earlier and then the next input is in the format of also this
|
|
the audio channel and the input device is hardware and it's the audio device from above
|
|
and then we tell ffmpeg-c which is codec which is copy so basically what you get on the
|
|
input, copy it out to the output what you get on the input from audio, copy it out, copy
|
|
it out but instead of copying the audio, put it into a flag format so I thought that was
|
|
the best and I put it into an mkv container just as a way to hold it so we basically
|
|
spoke about the thread Qs and spoke about how I did it and the flag so nothing really
|
|
more to do than for vCR in 0 to 133 do basically every morning I'll put in a tape, go to work,
|
|
come home, put in the next tape and then before going to bed put in another tape and then
|
|
over the weekend so I might have been able to get two or three tapes done on the one day.
|
|
Some of them were just 90 minute tapes and then some of them were 8 hour tapes so you
|
|
know all kind of dependent in order to kind of work that out what I would do is rewind
|
|
the tape to the beginning and then fast forward it to the very end then I'd know how long
|
|
the tape was and then I used a timeout command which is a time that will run a command with
|
|
a time limit so if you put in I don't know if you have something that runs in an infinite
|
|
loop for a period of time which is what this would be doing the timeout command will send
|
|
a signal like a control C signal to kill it and then after a particular period of time so
|
|
that's a record that script that I was being run and I said to preserve status which means
|
|
the error message coming from the script was preserved. If it didn't stop I would kill
|
|
it five minutes after the timeout and the timeout I gave dependent on the length of the
|
|
movie so if the movie was three hours I put in three multiply by 60 and plus 10 minutes
|
|
just to have some sort of buffer at the end and then I would run that script I press play on
|
|
the video recorder see that the thing starts working and then after a while I was here
|
|
as rewinding and then I could go down and write their timeout or I could control C and I would
|
|
be left with a output that FLV file which I would then rename to you know whatever it was
|
|
Ken's wedding whatever happens to be the name of the video cassette and then I'd start doing
|
|
the other one then the key here was to keep do pumping them through as quickly as possible because
|
|
the thing that took the most time was the recording of video cassettes. One problem that I ran into
|
|
after a particular period of time was that the laptop that was doing it on froze and completely
|
|
on responsive also on responsive to that's a hemic of Linux thing if you left it long enough
|
|
it would come back and I couldn't figure out what I was and did a memory check I did a hardest
|
|
check and I suspect that it was you know I tried writing to USB disk I tried writing it to NAS
|
|
but I suspect it was writing it to looks encrypted disk that the whole thing was just
|
|
the size of the files were just too much for it to handle so every hour produced 6.6 gigabytes
|
|
of tapes of disk so 6 or 8 hour tape you could run into anything between a 40 and a 60 gigabyte file
|
|
coming up yeah was that so I ended up using my HP T610 flexible thin client which I spoke about
|
|
before in home assistant series I have it another one and I had a spare one turbine disk so I put
|
|
that in there installed Debian on it and it had no problems whatsoever so I think straight spinning
|
|
disk was the thing just don't do so that was that was right so the issue with the mgpeg format was
|
|
and the way I captured this was probably not ideal the whole time base was incorrect so you couldn't
|
|
scrub forward or back it the LC and MPV struggled to play the files so I ended up just converting them
|
|
with ffmpeg so ffmpeg dashi kind of adding that mgpeg space kinds of adding that in p4
|
|
and that results in a file size reduction of 50% and once I had that captured I could delete the
|
|
original and then I pulled it into lossless cost which is an excellent tool I'm going to do a
|
|
separate episode and that just allows you to take the mpeg for file and split it up so I could
|
|
scrub through and see if it was a movie or if it was a wedding video if there were five minutes of
|
|
content and then nothing and then at the area in five minutes of content I could cut those two out
|
|
or those two movies just split them and divide them into two and it also gave me confidence as
|
|
there was a blank tape that there was nothing on the except six hours of static so no need to
|
|
to do anything without a man move on so that was it the process of doing this recording was more
|
|
as a reference for myself and I inevitably have to do this for somebody else so if you have any
|
|
of this archiving stuff to do as I said the video cassette reporters are becoming more expensive
|
|
harder to find so if you have these old tips now is a good time to do your archiving
|
|
get them off probably no harm to keep your cassette player around if you've got space somewhere
|
|
because senior leisure somebody will come with a tape that needs to be converted so
|
|
so that is pretty much that tune in tomorrow for another exciting episode of Hacker Public Radio.
|
|
You have been listening to Hacker Public Radio at Hacker Public Radio does work.
|
|
Today's show was contributed by a HBR listener like yourself if you ever thought of recording
|
|
broadcast and click on our contribute link to find out how easy it really is. Hosting for HBR has
|
|
been kindly provided by an honesthost.com the internet archive and our sync.net. On the Sadois
|
|
stages today's show is released under a Creative Commons Attribution 4.0 International License.
|