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.