[00:59.880 --> 01:01.300] Alright, hello everyone. [01:01.520 --> 01:03.660] Welcome back to our last day of hope. [01:04.080 --> 01:04.940] How's the conference going? [01:06.320 --> 01:08.920] Everyone tired now or ready for more? [01:09.620 --> 01:10.820] Thank you for volunteering. [01:11.220 --> 01:12.340] Oh, you're welcome. [01:12.960 --> 01:23.380] Alright, so we have another great talk here called Cast Away, a do-it-yourself platform for video capture automation and various antics from our presenter Adam Tannier. [01:23.540 --> 01:25.660] So with that, I will pass it to you, Adam. [01:38.730 --> 01:53.590] Alright, every project needs a clever title, so I've called this one Cast Away, partly because nobody has a VCR anymore, and I also have this strange hobby of collecting VHS tapes. [01:54.790 --> 01:57.970] But, alright, [02:03.280 --> 02:13.400] so I'm Adam Tannier, mostly programming in Java and Python, although kind of a little bit of everything. [02:13.700 --> 02:26.990] The last time I gave a talk at HOPE was about the Lisp programming language, and another one of the problems was the longer you research, the better sources you find, and the scope of your project just keeps increasing. [02:30.500 --> 02:40.940] Personally, I'm involved with some robotics and computer vision, which is interesting, but again, there's a lot to go through. [02:41.730 --> 02:50.460] And I'm also a member of FUBAR Labs in now North Brunswick, New Jersey, so find and support your local hackerspaces. [02:53.100 --> 03:04.400] As we heard from the last talk, time is a finite resource, is the necessary but not sufficient ingredient in basically everything. [03:10.280 --> 03:19.780] So, I feel like I should have maybe started this earlier, when I knew that there were a lot more VHS tapes out there, or maybe should have never started at all. [03:20.220 --> 03:26.120] But the funny thing is that there's a lot of weird things getting captured by VHS. [03:26.120 --> 03:37.140] Like, I found someone who decided to record the special edition of Star Wars, which was on, I think, the WB-11. [03:37.580 --> 03:43.120] And, unfortunately, that happened to be the same day that the Columbia disaster occurred. [03:43.320 --> 03:47.080] So, enjoy your escapism. [03:48.080 --> 03:48.760] Yeah. [03:51.470 --> 04:06.290] But the other part of it was, you know, if you are looking for something interesting to use as a data source, there's not too much, you know, more copious than live TV. [04:09.620 --> 04:12.140] So, there's a few advantages to that, too. [04:12.960 --> 04:15.350] But, you know, you can't go faster than real time. [04:23.570 --> 04:29.130] But, so, if there's anything that you want to watch, it's probably out there. [04:29.430 --> 04:37.110] If you want, you know, if you want to watch Alex Trebek host Classic Concentration, there is a channel for that. [04:37.110 --> 04:50.250] If you would like to absolutely obliterate five hours of your day, six days a week, there is a channel that has Star Trek from about 8 p.m. [04:50.370 --> 04:50.810] onward. [04:53.510 --> 05:11.550] If you want to discover a show that has two former Star Trek actors, I think Benson had Rene Auberjonois, which I've been making sure I'd pronounce properly for most of the last week, and Robert Picardo. [05:13.330 --> 05:18.190] So, there's all sorts of weird guest shows, you know, guest appearances and things like that. [05:20.030 --> 05:22.850] Lots of late-night stand-up that did not age very well. [05:26.010 --> 05:29.430] But, I found a tape that someone had labeled, Trip to London. [05:30.110 --> 05:34.390] It was not their trip to London, it was Good Morning America, when they couldn't watch it. [05:34.390 --> 05:35.830] So, that was a little disappointing. [05:40.250 --> 05:48.590] So, this is sort of an interesting revelation that I had, although I could have just probably gone to film school or acting school or something. [05:49.210 --> 05:51.070] But, humans like narrative. [05:51.450 --> 05:54.550] They like things to have a start, a middle and end, a resolution. [05:55.210 --> 05:56.650] Things are supposed to make sense. [05:56.650 --> 06:02.510] This is why, I mean, Unsolved Mysteries was a cool show, but kind of madness-inducing. [06:03.830 --> 06:11.610] You know, we tell ourselves stories about, you know, who we are, who other people are, you know, the rise and fall of civilizations. [06:15.330 --> 06:20.750] Of course, the downside to having a new theory is you try and jam everything else into it. [06:20.750 --> 06:25.910] But, it's not a bad thing, usually. [06:26.370 --> 06:30.370] We have, you know, stories we tell ourselves sometimes that are not true. [06:30.750 --> 06:35.230] But, it helps for us to make predictions and sense of things. [06:37.670 --> 06:45.730] I could argue that lots of improved display technologies are also in service of having a narrative. [06:45.730 --> 06:50.230] Higher fidelity, more believability, you know. [06:51.130 --> 06:54.130] This is where I wonder why I didn't bring water with me. [06:54.210 --> 06:55.470] It's because I finished it all already. [07:03.940 --> 07:05.020] But, anyway. [07:05.360 --> 07:10.680] This is why we like good special effects, because it will convince us of something that is true. [07:11.380 --> 07:11.540] Ah. [07:14.930 --> 07:16.370] ASCII and you shall receive ski. [07:21.800 --> 07:23.480] Or you'll receive a silly antsy. [07:30.090 --> 07:32.470] I think that's the other reason why people don't like spoilers. [07:32.750 --> 07:34.730] They want to be transported away. [07:34.990 --> 07:36.210] They don't want things ruined. [07:38.550 --> 07:42.950] Although, I feel like, you know, if you go on vacation, you kind of want to know what's there already. [07:44.150 --> 07:45.850] But, humans don't like to be bored. [07:45.850 --> 07:53.130] They, you know, will invent stuff not to have to think about things. [07:56.350 --> 08:03.550] But, so, you know, the question is, well, if there's all this television to watch, can we perhaps get the computer to watch it for us? [08:03.550 --> 08:14.070] So, the original idea was, you know, the TV shows themselves were not that interesting, but the random commercials that people found. [08:15.050 --> 08:20.270] And, you know, I have tapes that I made as a kid that I, you know, dutifully got rid of the commercials. [08:20.570 --> 08:23.270] Which, kind of the most important part now. [08:23.490 --> 08:29.850] So, you can get a show anywhere, but you may not have the serendipity of finding the right commercials. [08:29.850 --> 08:36.650] So, it's also sort of interesting to think about the expansion of television and radio. [08:38.090 --> 08:43.590] You know, the show Prairie Home Companion, which we do not talk about anymore. [08:45.250 --> 08:49.590] You know, just imagine you are alone on the planes, and this is your companion. [08:50.490 --> 08:53.050] Enjoy not being lonely for a little while. [08:57.250 --> 08:59.570] But, you know, especially something like Star Trek. [08:59.570 --> 09:02.610] They put in the idea for the sets and all the music. [09:02.870 --> 09:09.250] And, you know, if you want to fall asleep, maybe you'll run a several-hour loop of engine sounds. [09:09.690 --> 09:12.490] You know, you get to not be where you are. [09:14.590 --> 09:21.290] So, here's a few benefits of, you know, television versus reality. [09:23.050 --> 09:24.010] Also on TV. [09:24.190 --> 09:25.690] No pandemic for the moment. [09:30.130 --> 09:38.310] But, the other good things about using it as a data source is, you know, there's been thought put into basically every aspect of it. [09:38.890 --> 09:40.630] You hope that they wrote the story as well. [09:40.630 --> 09:45.230] But, things are predictable. [09:45.730 --> 09:48.510] You know, the procedural proceeds. [09:49.190 --> 09:53.190] The mystery is solved within your 30 or 50-minute timeframe. [09:55.630 --> 09:57.790] And, there's space for commercials in the middle. [09:58.250 --> 10:05.490] One of the things that I thought about, well, it would be funny, you know, to have kids' books with advertisements in them. [10:05.490 --> 10:07.790] But, then I realized that there's YouTube. [10:14.060 --> 10:19.220] So, there's also, you know, before you go to sleep, what do you say? [10:19.420 --> 10:21.580] You know, oh, you know, mommy, tell me a story. [10:21.720 --> 10:22.620] Daddy, tell me a story. [10:23.520 --> 10:25.480] Or, you know, when you come home, what do they ask? [10:25.540 --> 10:26.640] What did you learn in school today? [10:27.120 --> 10:27.360] Nothing. [10:28.840 --> 10:35.240] You want to have some sort of narrative to fill in the gaps of what's going on. [10:35.240 --> 10:39.300] You know, word from distant lands, even if distant lands is this school. [10:43.240 --> 10:48.080] So, the downside, of course, of using television. [10:48.580 --> 10:54.660] And, who knows if space aliens are judging us by our emitted transmissions. [10:56.200 --> 10:57.820] But, it's not the real world. [10:58.880 --> 10:59.900] It's very clean. [11:00.080 --> 11:00.660] It's very pretty. [11:00.880 --> 11:01.700] It's very colorful. [11:03.420 --> 11:05.840] It is literally fiction in most cases. [11:06.380 --> 11:12.740] So, any sort of cultural insights you might draw from local or foreign television. [11:13.440 --> 11:16.280] You know, they produce their works as well. [11:16.580 --> 11:20.920] So, everyone is sort of learning television as a communication medium. [11:25.320 --> 11:28.540] So, I wanted to have a few more legal cases. [11:28.840 --> 11:33.020] But, the big one here is known as the Betamax case. [11:33.460 --> 11:39.660] Funny enough, Betamax, the format didn't survive outside of professional recording studios. [11:41.800 --> 11:45.300] But, this was a case brought by Universal Studios. [11:45.620 --> 11:48.500] Supreme Court decided in favor of Sony. [11:49.500 --> 11:54.120] Making full copies of television is deemed fair use for the purposes of time shifting. [11:54.420 --> 12:00.980] I don't know what other purposes you would have for recording television, either in full or in part. [12:00.980 --> 12:13.580] But, this fair use sort of carve out or codification enabled lots of further technologies. [12:15.620 --> 12:19.740] There was also something about the Burn Convention, which I thought was something from the 80s. [12:19.920 --> 12:21.020] It is from the 80s. [12:21.320 --> 12:22.540] But, it's the 1880s. [12:23.200 --> 12:29.640] And that concerns things like making excerpts, derivative works, things like that. [12:30.800 --> 12:32.220] But, not a lawyer. [12:32.220 --> 12:39.580] So, minor physical demo time. [12:40.480 --> 12:41.940] Nothing is getting plugged in, though. [13:26.290 --> 13:26.770] Alright. [13:26.970 --> 13:27.350] You know what? [13:27.470 --> 13:28.070] That's good enough. [13:28.230 --> 13:29.810] Everyone knows what a Raspberry Pi looks like. [13:30.070 --> 13:33.330] I guess for the benefits of the viewers at home. [13:39.970 --> 13:42.930] It's just this kind of crappy flat panel antenna. [13:43.310 --> 13:45.370] But, we are in New York City, give or take. [13:45.790 --> 13:46.830] So, it works. [13:49.890 --> 13:52.830] This is a DVR that you can purchase. [13:53.790 --> 13:59.190] This is sort of an outgrowth of the cable set-top boxes. [13:59.850 --> 14:03.150] Not cable, but broadcast for the digital television transition. [14:05.630 --> 14:06.990] Well, I have more on this later. [14:07.490 --> 14:07.550] But, [14:14.650 --> 14:15.350] right. [14:15.610 --> 14:22.370] So, the way that this is sort of structured, and I thought it would be a bigger problem, because I thought it would have more code written. [14:22.670 --> 14:26.650] But, not that much code got finished. [14:27.710 --> 14:30.610] And so, sorting out the licenses won't be that big of a problem. [14:30.610 --> 14:44.370] But, this is mostly just for monitoring and as a sort of, I guess, side process of actually recording. [14:44.950 --> 14:50.970] And once you have the files, you can use a lot of the same OpenCV pipelines to do analysis. [14:50.970 --> 14:52.310] And it doesn't have to be real time. [14:52.570 --> 14:54.110] And you can put it on more powerful hardware. [14:56.930 --> 15:00.150] Of course, without the processing, you can do live streaming. [15:02.190 --> 15:04.010] And it's not a big problem. [15:05.610 --> 15:09.410] But, so, this [15:12.470 --> 15:14.110] is sort of the star of the show. [15:14.650 --> 15:17.210] It's a little bit disorienting to be able to see myself. [15:17.510 --> 15:23.210] But, this is just a USB 2 HDMI capture device. [15:23.630 --> 15:26.890] And, you know, I thought, how is this possible? [15:28.570 --> 15:30.250] It is not a scam. [15:30.490 --> 15:33.850] But, you have to, one, make sure you're plugging in the right thing. [15:34.110 --> 15:36.410] It's got USB on one side and HDMI on the other. [15:37.090 --> 15:39.170] I have plugged things into itself. [15:39.430 --> 15:40.070] Not helpful. [15:41.770 --> 15:45.810] But, I have the options in the next slide. [15:47.870 --> 15:55.910] And the important thing about using the converter box is I needed something with a tuner. [15:55.910 --> 15:57.730] And an HDMI output. [15:58.650 --> 16:00.930] So, my TV will not output HDMI. [16:01.430 --> 16:02.290] It's not that fancy. [16:02.970 --> 16:04.850] I don't have a receiver or anything like that. [16:05.110 --> 16:07.530] So, this is about 15 bucks. [16:08.150 --> 16:12.310] There are analog versions for analog sources. [16:14.110 --> 16:15.730] Usually called an easy cap. [16:16.050 --> 16:17.350] Also about 15 bucks. [16:18.310 --> 16:20.150] I'm not that old, I hope. [16:20.390 --> 16:23.450] But, I remember where you could easily pay 300 for something like that. [16:23.450 --> 16:24.870] Just to get video into your computer. [16:28.460 --> 16:31.120] So, here's the important settings for VLC. [16:33.300 --> 16:35.840] You choose your source. [16:36.300 --> 16:38.640] You have your resolution. [16:39.060 --> 16:41.560] Set your caching to zero. [16:41.980 --> 16:46.720] And then, the very important thing is choosing MJPEG. [16:46.720 --> 16:51.480] The motion JPEG encoding will give you, you know, 30 frames per second. [16:51.820 --> 17:01.660] And this is important because one of the other applications for this is as the sort of world's smallest KVM. [17:01.920 --> 17:04.380] So, you get this. [17:04.620 --> 17:06.100] You plug it into your computer. [17:06.380 --> 17:08.640] You plug into your other device with HDMI out. [17:22.900 --> 17:24.750] Well, you get yourself a media keyboard. [17:25.040 --> 17:25.820] Imagine it here. [17:26.640 --> 17:31.290] And then, you try not to forget which keyboard you're typing on. [17:31.540 --> 17:35.290] But, once you get the network set up, you can forget about it. [17:35.360 --> 17:36.120] You can SSH. [17:36.220 --> 17:37.600] You can do everything else. [17:38.880 --> 17:41.360] And it's a lot smaller than carrying another monitor around. [17:43.300 --> 17:46.380] But, this has saved me a few times. [17:46.960 --> 17:51.840] Although, I spent a good six hours working on this yesterday. [17:52.440 --> 17:58.640] And discovered that the local hope network would not allow me to connect from device to device. [17:58.980 --> 18:00.180] Probably for the best. [18:01.270 --> 18:04.360] One hotspot would also not let me do that. [18:04.600 --> 18:08.060] My second hotspot, why should I have two hotspots? [18:08.060 --> 18:09.720] But, that worked. [18:09.960 --> 18:19.750] So, I was connecting over the network to this local device because nothing else worked. [18:24.180 --> 18:35.540] So, one of the things that was useful to me before I actually was able to find a Raspberry Pi 4, the most important thing about these two boards is that they're in stock. [18:35.540 --> 18:38.510] You can buy them and have them, you know, soon. [18:39.820 --> 18:41.200] Definitely buy a heatsink, though. [18:43.160 --> 18:44.180] This one on the right. [18:45.750 --> 18:46.460] Which right? [18:46.560 --> 18:47.040] This right? [18:47.160 --> 18:51.960] Has a Raspberry Pi camera connector in case that is useful to you in projects. [18:52.540 --> 18:56.360] The one on the left, I think, is substantially faster. [18:58.470 --> 19:03.100] But, I'm also not sure what is taking up the most processing time. [19:04.620 --> 19:05.600] It is... [19:05.600 --> 19:06.060] Yeah. [19:06.200 --> 19:07.100] Definitely get a heatsink. [19:07.880 --> 19:10.530] Get a case with a fan, if possible, as well. [19:10.840 --> 19:11.820] As this will... [19:11.820 --> 19:14.900] This will max out available CPU. [19:17.520 --> 19:20.360] But, the cool thing with this is they have infrared receivers. [19:20.940 --> 19:22.250] So, when you are... [19:23.640 --> 19:28.560] When you are learning the device codes, it's just right there. [19:30.200 --> 19:31.290] There was a... [19:31.290 --> 19:32.680] I think I had to have it on another slide. [19:34.530 --> 19:34.960] Yep. [19:35.360 --> 19:35.460] Okay. [19:35.700 --> 19:38.120] So, they have the infrared detector built in. [19:39.600 --> 19:42.270] This took me a little bit too long to figure out. [19:43.080 --> 19:48.820] But, they moved it from the previous LIRC into the kernel itself. [19:49.200 --> 19:51.400] So, you have to set something in the config. [19:52.760 --> 19:59.200] You choose what pins you have, either on the PCB or as an output as well. [20:01.400 --> 20:05.100] And, you have very easy access to infrared. [20:05.100 --> 20:13.640] And, from there, you can use it as a remote control to interface with your other devices. [20:20.220 --> 20:23.060] So, this is where we have a little bit more story. [20:26.920 --> 20:35.060] So, for a very long time, I had been telling people to plug their cable into their television. [20:35.100 --> 20:45.580] And, even if they didn't have a cable TV subscription, my understanding was that the cable companies were supposed to provide over-the-air channels for free. [20:45.580 --> 20:53.460] As, maybe, this high moral notion of public safety. [20:53.820 --> 21:01.100] That the broadcast airwaves that belong to the people should be carried at, you know, just as a courtesy. [21:03.780 --> 21:09.760] But, they decided in this area, and probably everywhere else, to encrypt them. [21:11.300 --> 21:19.300] So, you get to rent a cable box for another $5 a month or whatever for your broadcast basic plan. [21:20.380 --> 21:21.100] Hooray. [21:22.500 --> 21:27.700] Maybe, maybe we should be taxing some of those rights of way that the cable companies are enjoying. [21:28.140 --> 21:28.800] But, anyway. [21:29.120 --> 21:31.780] So, this was a little bit annoying. [21:33.040 --> 21:39.820] One of the things, my television would tune all of the cable channels in about 8 minutes. [21:40.540 --> 21:44.380] And then, would take another 40 minutes to get rid of all these scrambled ones. [21:44.720 --> 21:47.760] Which was not ideal, but you didn't have to do it very much. [21:48.160 --> 21:49.000] Very often. [21:49.500 --> 21:57.240] So, once everything went away, except for home shopping network and all the placeholder channels, I decided, why not? [21:57.400 --> 22:00.140] Let's, let's go old school and get an antenna. [22:04.520 --> 22:07.400] And I learned a little bit too much about antennas. [22:07.840 --> 22:12.660] But, where I live is somewhere between New York and Philly. [22:12.960 --> 22:24.160] And I was thinking, well, if I have, you know, a 60, 80 mile range antenna, which, you know, theoretically works, but curvature of the earth and all that doesn't. [22:24.320 --> 22:26.780] So, I decided, why not? [22:26.780 --> 22:31.640] I thought, I'll get this antenna if I can point it at Philadelphia, which is more distant. [22:32.000 --> 22:38.640] Maybe I can get, you know, the stronger New York signals out of the back reception lobe of the antenna. [22:40.120 --> 22:46.740] The antenna itself is, I believe, a combination Yagi-Uda and Log Periodic. [22:46.880 --> 22:51.360] And whatever the interaction of those things didn't make it that possible. [22:51.360 --> 22:58.420] But, I also learned that ABC6 has decided that they want to stay on their original frequency. [22:59.580 --> 23:03.680] The call letters are WPVI. [23:04.100 --> 23:05.800] Don't get that in the wrong order. [23:07.080 --> 23:09.360] And VI meaning Roman numeral 6. [23:09.680 --> 23:13.780] So, they are, in fact, on the old low frequency. [23:15.120 --> 23:18.060] I think it's a high VHF, or it might be a low VHF. [23:18.540 --> 23:20.340] And so, you need a very large antenna. [23:21.680 --> 23:24.800] Which is probably why it's better to have it carried on cables. [23:26.080 --> 23:33.600] But, anyway, so, I have this new crazy idea to make an antenna. [23:33.920 --> 23:34.640] But where am I going to put it? [23:34.900 --> 23:35.960] I'm going to put it in the attic. [23:36.160 --> 23:37.920] Because I don't want to go outside ever. [23:38.920 --> 23:42.660] Especially if there's risk of contact with the ground at high velocity. [23:45.300 --> 23:47.000] So, bought some MDF. [23:47.000 --> 23:51.240] This is at my hackerspace. [23:51.400 --> 23:52.640] A former location though. [23:53.540 --> 23:56.020] And that's another different long weird story. [23:56.480 --> 23:59.600] But, got a homer bucket. [24:00.140 --> 24:01.340] Got some MDF. [24:01.500 --> 24:02.340] Did some measurements. [24:03.460 --> 24:04.920] Some time on the bandsaw. [24:05.800 --> 24:06.720] Drilled the holes. [24:07.000 --> 24:10.240] I feel like a genius for putting the second hole to lift it. [24:10.560 --> 24:13.660] Because otherwise this would have been much more difficult. [24:13.660 --> 24:15.840] And some bags of sand. [24:16.060 --> 24:18.060] So, this entire thing is portable. [24:18.780 --> 24:21.360] Other people have been doing similar things. [24:21.680 --> 24:23.280] But usually they use concrete. [24:23.480 --> 24:26.300] Which is, would be not great if you're renting. [24:27.140 --> 24:28.820] But, here's the antenna. [24:29.200 --> 24:31.340] Here's a wonderful pandemic haircut. [24:31.640 --> 24:33.120] That I acquired over time. [24:33.860 --> 24:35.940] And here's the antenna in the attic. [24:36.200 --> 24:38.040] Where no one has to think about it. [24:41.460 --> 24:42.580] But, yeah. [24:42.580 --> 24:45.020] So, that's sort of the physical hardware part. [24:50.640 --> 24:51.720] So, let's see. [24:51.800 --> 24:55.740] Some of the sort of theoretical underpinnings of this project. [24:55.780 --> 24:59.060] Which, I guess you need some theory. [24:59.320 --> 25:01.240] In order to know which direction you should go. [25:01.560 --> 25:05.540] But, there was in my early days of the Internet. [25:05.540 --> 25:11.440] I came across a sort of media experiment called the Zen TV experiment. [25:11.760 --> 25:19.660] And you are supposed to watch 15 or so minutes of any TV program with the sound off. [25:19.680 --> 25:25.740] So, you do not have the added sort of stimulation. [25:25.740 --> 25:30.500] But also, sort of convincing you of the reality of the show. [25:30.500 --> 25:33.080] And you're supposed to keep track of every technical event. [25:33.360 --> 25:34.900] So, if somebody zooms. [25:35.180 --> 25:36.800] If they cut to the next scene. [25:37.680 --> 25:38.680] If there's a fade. [25:38.860 --> 25:39.200] A wipe. [25:39.800 --> 25:40.500] Things like that. [25:40.840 --> 25:42.120] You're supposed to take note of it. [25:42.300 --> 25:47.720] And sort of, I guess, be aware of the mechanics of storytelling. [25:51.480 --> 25:58.540] So, this is, again, maybe would have been gone over in a first intro media studies. [25:58.540 --> 25:59.580] Or acting class. [25:59.980 --> 26:00.800] Or writing class. [26:01.020 --> 26:03.800] But, did not do that. [26:04.060 --> 26:08.160] So, the next part is you're supposed to watch, I think, a news program. [26:08.720 --> 26:12.580] And again, be conscious of what they are showing you. [26:13.220 --> 26:14.600] And how things are presented. [26:14.600 --> 26:16.820] And then the part that gets people angry. [26:16.980 --> 26:18.560] Is you're supposed to turn off the television. [26:18.760 --> 26:21.520] And watch a turned off television for 30 minutes. [26:21.920 --> 26:23.500] And how does that make you feel? [26:24.500 --> 26:25.760] I mean, you could... [26:25.760 --> 26:27.720] I hope that won't send anybody to therapy. [26:28.060 --> 26:31.400] But, it is good to be aware of your feelings. [26:31.440 --> 26:33.780] And not just as something that happens to you. [26:33.920 --> 26:40.180] But something that you can sort of notice and react to. [26:43.380 --> 26:43.780] The... [26:43.780 --> 26:45.720] Well, I had a thought just a moment ago. [26:46.820 --> 26:47.220] But... [26:53.270 --> 26:53.670] Anyway. [27:06.730 --> 27:08.150] Step away from the mic to breathe. [27:10.710 --> 27:11.110] But... [27:15.330 --> 27:24.170] So, you know, once we have sort of an understanding of the structure of, you know, the shows that they're trying to, you know, have things presented to us. [27:24.170 --> 27:27.870] The question is, can we do any sort of analysis on this? [27:28.170 --> 27:29.930] And sort of have a... [27:31.590 --> 27:38.130] Have sort of a framework or pattern for how these things are structured. [27:38.550 --> 27:46.350] You know, how can we maybe tell better stories or discover little tricks that people used. [27:47.470 --> 27:52.070] And the original thing was to do something like commercial detection. [27:52.370 --> 28:01.470] Because if you have a full long video file that's just a dump from a VHS from unknown time, maybe you want to just see the commercials. [28:01.470 --> 28:09.090] So, a long time ago, I saw a project that had gotten featured at some film festival. [28:11.390 --> 28:12.490] I think it was in Brooklyn. [28:13.370 --> 28:14.210] I didn't... [28:14.210 --> 28:15.710] I thought it was another more famous one. [28:15.870 --> 28:19.010] But they took movies and they made barcodes out of them. [28:20.250 --> 28:22.370] And the first one I saw was kind of uninspiring. [28:22.650 --> 28:24.770] But other people actually went and did the processing. [28:25.490 --> 28:27.770] I want to do one that's a little bit... [28:29.750 --> 28:30.770] Structured a little bit differently. [28:30.950 --> 28:33.170] I'd like to actually sort the pixels in some way. [28:33.570 --> 28:35.570] They just took a screen cap and squished it. [28:37.590 --> 28:59.830] But once you have this, you can make things like histograms and, you know, eventually use that as a data source and have some sort of, if not a neural network, some other kind of lower computational power machine learning to categorize what it is you are watching. [29:00.910 --> 29:08.510] I don't care that much about sports, but I appreciate that they are interesting because you don't necessarily know what the outcome is. [29:10.350 --> 29:12.650] So, good for sports fans. [29:13.870 --> 29:18.110] Although, I will buy a vicarious winter shirt if anyone produces one. [29:19.650 --> 29:31.650] Anyway, so, as another side effect of having this data source, you can do things like background analysis, see if there is any sort of motion going on. [29:32.370 --> 29:55.390] One of the demo filters that I got from the original Flask video streaming, it just averages a bunch of frames, compares it with the current one, does a little bit of processing on what has changed, and draws a bounding box around it. [29:56.490 --> 30:00.450] Animation especially, you can tell nothing changes in the background. [30:01.650 --> 30:08.310] And once it is pointed out, you sort of, again, become aware of what they want you to focus on. [30:09.690 --> 30:16.050] I mean, a lot of times for cartoons, it is a character's mouth, or, you know, something else that is moving. [30:17.990 --> 30:29.070] And, you know, animation is an artificial medium, but you sort of, you know, break it down from how it was created, and how that affects the finished product. [30:29.490 --> 30:45.710] Something I realized a long time ago, one of the side effects of animation production is that it is done in very small batches, and so the scenes are always changing, and so it's sort of, at the very least, entertaining to watch, because there's always something new. [30:46.170 --> 30:48.570] But that, again, is a side effect of how it is made. [30:53.490 --> 30:55.590] So, let's see what the next slide is. [30:57.950 --> 31:06.850] Right, so, mostly this is using OpenCV, Open Computer Vision, which was started a very long time ago. [31:07.890 --> 31:10.410] And a convenience package for IMUtils. [31:11.970 --> 31:16.550] This is run by, created and open sourced by Adrian Rosebrock. [31:18.710 --> 31:21.470] And, again, this is a bunch of convenience features. [31:22.070 --> 31:31.070] And one of the good thing is, you only need to change one line of code to go from a capture from a file, to get frames out of it to live video. [31:37.050 --> 31:39.550] Yeah, but again, there's lots of example code out there. [31:40.950 --> 31:44.450] There's lots of directions that this could go. [31:45.130 --> 31:49.130] If you want, you know, motion detection, that exists. [31:49.450 --> 31:50.690] But what if you want the opposite? [31:50.690 --> 31:52.790] You want the things that stay the same. [31:53.070 --> 31:59.490] In case, again, maybe you want to get good still frames of some sitcom's apartment. [32:00.310 --> 32:07.330] And then you can take that as data and put it somewhere else for reconstruction or photogrammetry. [32:07.970 --> 32:10.510] Or, again, if you want to steal someone's Zoom background. [32:15.090 --> 32:15.610] Yes. [32:16.430 --> 32:20.490] So, things do not go always in order. [32:24.390 --> 32:34.630] I guess one other side effect of perhaps being exposed to too many special effects reports, and that itself is sort of a narrative. [32:34.850 --> 32:36.130] It's like, this is how they did this. [32:37.370 --> 32:42.870] And, you know, you get lost in the method of creating it. [32:43.310 --> 32:51.410] I don't know if storytellers of ancient time gave little master classes on how they tell stories. [32:51.410 --> 32:57.130] But, you know, you have the special effects report, and you're like, yeah, that's cool. [32:57.450 --> 33:00.030] And then when you watch it, you're like, wow, that's cool. [33:00.030 --> 33:01.150] I know how they did that. [33:01.150 --> 33:07.590] And you might be completely oblivious to the emotional tone that they're trying to convey. [33:07.950 --> 33:10.890] Or, you know, great, they used this lens. [33:11.150 --> 33:15.950] But, you know, what does the sun rising over this mountain supposed to make you feel? [33:16.850 --> 33:20.730] Humans, aside from liking narrative, they have lots of feelings. [33:23.150 --> 33:31.810] And storytelling is another, you know, sort of artifact of the way humans are. [33:32.690 --> 33:44.890] But, so, one of the fun things of finding old videotapes, these two TV stations do not exist. [33:47.310 --> 33:52.050] Also, slightly uncomfortable by the Twin Towers here, but at least it's not WPIX 11. [33:55.050 --> 34:02.470] But, it's funny here with WNEW 5, which they're touting their 40 years of fine tuning. [34:03.390 --> 34:05.430] This, I think, was from 1983. [34:06.650 --> 34:12.970] And, I think maybe 1985 or 86, it became WNYW, which is now a FOX 5 station. [34:14.590 --> 34:21.930] WNYC, I believe, was part of the same group that had the radio station. [34:22.330 --> 34:24.470] And that, you know, came together and came apart. [34:25.170 --> 34:28.650] And so, this is a relic from the past, definitely. [34:29.330 --> 34:35.870] But, the one on the left here, somebody had HBO in the early 80s. [34:36.090 --> 34:40.790] And they put a tape in and they hit record for three or four hours. [34:42.010 --> 34:44.410] Which was sort of amazing. [34:44.590 --> 34:47.390] I actually was able to find out what day it was recorded. [34:49.210 --> 34:51.450] But, just totally wild stuff. [34:52.170 --> 34:53.150] Three movies. [34:54.030 --> 34:58.390] The first of which I had to search for because they had missed the intro. [35:01.530 --> 35:05.950] But, other things like Nightline, if you wait around, they will tell you what day it is. [35:08.150 --> 35:12.110] But, the other interesting thing is that we still have car ads. [35:12.510 --> 35:13.530] They had car ads. [35:15.110 --> 35:18.810] The cars earlier, you know, they could advertise for $4,000. [35:19.310 --> 35:20.050] Which is sort of amazing. [35:20.370 --> 35:22.070] But, that's inflation for you. [35:22.290 --> 35:24.550] Also, possibly no airbags. [35:27.810 --> 35:28.750] Other fun stuff. [35:28.910 --> 35:30.730] And I wish I could find the tape that I got this from. [35:30.990 --> 35:33.390] But, this was X-Files. [35:33.590 --> 35:34.290] It was a rerun. [35:34.550 --> 35:37.430] It was brought to you by the movie that was coming out soon, Strange Days. [35:38.290 --> 35:42.790] And, they even had a short promo to join their discussion on Delphi. [35:42.790 --> 35:50.870] So, this was before 1994 when commercial usage of the Internet was explicitly allowed. [35:51.410 --> 35:55.970] And also, yes, I know this is hilarious that these are literal screenshots. [35:59.170 --> 36:06.750] But, you know, some people get sent screenshots of like, can you believe that this is what I found? [36:07.330 --> 36:09.210] But, there was an ad for Next Step. [36:10.490 --> 36:15.750] Which was, you know, which is prevalent in the GNU operating systems now. [36:16.690 --> 36:21.690] But, was, I'm just, I'm very curious why they had an ad for it. [36:24.810 --> 36:38.190] But, yeah, then again, on Jason Scott's talk, he mentioned some tapes that he had found from someone where they were talking about this hot new OS from AT&T that was going to change everything. [36:39.130 --> 36:42.210] I guess it depends on your audience. [36:48.750 --> 37:06.570] So, one of the things that I wanted to do, and of course there is still time, but using the movie barcode type of analysis, and the great thing is once you've recorded something, you can just go back and take the file. [37:07.610 --> 37:13.850] And OpenCV has a lot of, I guess, decoders, but that's a solved problem. [37:13.850 --> 37:15.270] You can convert from one thing to another. [37:15.710 --> 37:28.030] But, taking two episodes of the same procedural, and seeing how they line up, seeing how they have arranged the beats, you know, and sometimes the law and order sound effect. [37:28.730 --> 37:35.130] But, you know, everything is the same except for where it's different. [37:36.090 --> 37:45.610] And I was also watching a kung fu movie that someone had on TV, and I was sort of wondering, how much of this movie did they actually spend fighting? [37:45.930 --> 38:00.890] Which you could do with a pose analysis, pose estimation library, and then you can have that as output in some sensible way to make it make sense. [38:00.890 --> 38:13.310] But, I don't know if you've ever watched a movie on Amazon Prime, but they have their little x-ray, and they will tell you about the actors that happen to be in that scene. [38:15.490 --> 38:23.510] What I had wanted to have prepared was an analysis of a Star Trek episode. [38:23.510 --> 38:33.750] It happened to be Best of Both Worlds Part 2, so Picard would not be in it as much, but Riker would. [38:33.930 --> 38:40.610] So, if you were a Riker liker, you could get some kind of percentage of appearance in various episodes. [38:47.350 --> 38:56.170] So, as a data source, live TV is sort of infinitely mineable wasteland. [38:56.790 --> 39:02.790] But, in case you have time to destroy, it's certainly always there. [39:04.250 --> 39:17.810] So, a lot of the ideas that I had with this were sort of helped and supported by one of the groups that we have. [39:18.650 --> 39:23.890] We are sort of in transition between Meetup and Discord and Jitsi. [39:23.890 --> 39:33.390] And the best thing is to just go on our website, find out what we are hosting now, and what the different topics are. [39:36.990 --> 39:37.590] Yeah. [39:37.850 --> 39:45.310] One of the previous talks was using neural networks to figure out, you know, generative MC Escher drawings. [39:47.250 --> 39:54.750] So, some people are using it for family photos and seeing if they can identify people and if it's the same person, ask questions. [39:54.930 --> 39:55.410] Who is this? [39:55.650 --> 39:56.670] How are they related to us? [39:57.050 --> 39:57.590] Things like that. [40:07.650 --> 40:09.190] It's always good to have notes, right? [40:11.570 --> 40:18.310] One of the other things that I had wanted to do with a VCR but the DVR does not have an analog tuner in it. [40:19.070 --> 40:32.430] It was some way to automate recording the video off of the VHS cassette, rewinding it, and then having the captions hard matted and automatically detecting what the captions are. [40:32.570 --> 40:36.330] So, you don't have to go through, do it manually, or lose it forever. [40:37.570 --> 40:38.870] It's also another fun one. [40:38.970 --> 40:42.350] If you watch a show from a certain time, sometimes the captions are sponsored. [40:42.350 --> 40:50.270] And they'll put the sponsoring companies, you know, tagline at the time, which is completely foreign to us now. [40:50.870 --> 40:54.190] But, anyway. [40:59.620 --> 41:00.220] Yep. [41:00.440 --> 41:07.960] And I guess if anybody has a cool project, send me an email. [41:09.680 --> 41:13.720] I'm reworking the website because, of course, everything is always in progress. [41:14.480 --> 41:18.800] And I'm going to put some of my other hardware and software projects up there. [41:19.340 --> 41:22.100] So, any questions? [41:25.630 --> 41:28.470] I guess a good question is why. [41:28.730 --> 41:30.190] But, you know... [41:30.190 --> 41:32.130] We do have a question over the Matrix chat. [41:32.270 --> 41:32.950] Okay, excellent. [41:33.290 --> 41:34.290] A clarification, actually. [41:34.410 --> 41:34.650] Yes. [41:34.650 --> 41:39.490] Someone was curious if you could clarify which HDMI to USB capture device you were using. [41:39.690 --> 41:40.470] What are some examples? [41:40.650 --> 41:42.510] Like the model, or the version, or the equipment? [41:45.170 --> 41:47.810] Unfortunately, I mean, there are a lot of them, which is great. [41:49.350 --> 41:51.290] Is it the one that just says USB 2.0? [41:51.290 --> 41:52.170] That was my question. [41:52.330 --> 41:52.990] I'm pretty sure... [41:52.990 --> 41:58.510] I mean, it, you know, can't zoom in on it, but it basically just says HDMI video capture. [41:58.510 --> 42:02.430] It is not a USB-C to HDMI out. [42:03.010 --> 42:03.930] It is... [42:03.930 --> 42:05.750] And it'll take up to 4K. [42:06.790 --> 42:08.750] It will only output 1080p. [42:09.290 --> 42:15.370] But, this one also useful because when there's no signal you get color bars. [42:16.350 --> 42:18.410] Previous one was just blank. [42:18.690 --> 42:23.890] Which is not great when you discover that it has actually died and you're not getting any video at all. [42:24.530 --> 42:25.170] Ever. [42:25.170 --> 42:34.090] But, yeah, again, I support the tiniest KVM use case for this as well. [42:37.570 --> 42:43.750] But, an unfortunate amount of time yesterday was spent getting the infrared output working. [42:44.090 --> 42:45.850] But, I successfully got it to turn off. [42:46.030 --> 42:47.170] So, I'm kind of happy. [42:48.530 --> 42:52.350] But, again, all the documentation for that sort of thing is online. [42:52.350 --> 42:59.370] I was not able to construct one and have a one, two, three times an LED joke. [43:00.210 --> 43:02.430] But, yeah. [43:02.690 --> 43:03.550] So, it's a... [43:03.550 --> 43:05.170] I think it's an interesting project. [43:05.170 --> 43:17.990] There's always something new being broadcast and untold things to discover in people's discarded VHS tapes. [43:17.990 --> 43:18.830] Or donated. [43:19.190 --> 43:21.730] Or purchased at a yard sale. [43:22.510 --> 43:23.250] But, anyway. [43:24.350 --> 43:25.630] Thank you for coming. [43:25.830 --> 43:28.630] Is there a pause story somewhere where all this... [43:28.630 --> 43:29.930] There will be. [43:30.550 --> 43:34.590] There is not as much code as I thought. [43:35.130 --> 43:39.750] The starting point was a Flask live video streaming. [43:40.630 --> 43:46.270] And, again, there are other no processing streaming solutions out there. [43:46.930 --> 43:49.070] So, the real point of this. [43:49.230 --> 43:50.410] And it takes every frame. [43:50.590 --> 43:51.830] It does the processing. [43:52.110 --> 43:54.970] And then it reencodes it as a multi-part JPEG. [43:55.150 --> 43:56.630] And just sends it along. [43:56.830 --> 44:00.730] Which is also why it will consume any CPU power that you have available. [44:01.890 --> 44:06.410] Although, having multiple people view it doesn't make it get worse. [44:06.670 --> 44:09.070] So, that's an upside, at least. [44:11.110 --> 44:11.750] All right. [44:11.810 --> 44:12.470] Any other questions? [44:15.230 --> 44:15.730] Excellent. [44:15.730 --> 44:17.230] Well, thank you, Adam, for the presentation. [44:17.230 --> 44:21.690] And thank you, audience, for being here to participate in the presentation. [44:22.470 --> 44:24.870] In about 15 minutes, we'll have our next talk. [44:24.970 --> 44:27.990] Hackers can help open technical problems investigative journalism. [44:28.750 --> 44:33.650] And the Matrix chat for this talk will be open through the end of the conference and beyond. [44:33.650 --> 44:40.270] So, if you want to communicate with Adam at all about his work, go ahead and log into the Matrix chat. [44:40.750 --> 44:41.690] Thank you very much.