class: center, middle ## Through 6/18/24 --- ### Summary This cycle I mostly spent time finishing remaining tasks in my command line application to automate video processing. Many of these things have been long-term goals of mine for a long time now, so it is nice to see everything finally come together. --- #### Outline - [Review](#4) - [Automated silence removal](#5) - [Automated topic transition scaffolding](#6) - [Automated transcripts](#7) - [The upshot of all this](#8) - [Consistent content posting the next little bit](#9) - [Upcoming plans](#10) --- ### Review Last ministry progress summary, I said I had these three immediate short-term goals: - Setting up completely automatic silence removal in the video editing process (to further save me time---right now it is still a bit tedious, since I have to process segment by segment using a GUI tool). This will entail switching us away from Zoom, since Zoom recordings don't seem to play nice with the scriptable command-line tool I'd like to use, for some strange reason. I'm going have us try Microsoft Teams next, I think. - Setting up further automation with the topic transitions in videos. I would like to automatically generate the topic transition video segments in a hands-off (completely automated) way. Right now I have to manually record the short segments one by one. - Setting up a BibleDocs podcast on the podcasting platform [PodBean](https://www.podbean.com/), to include all the content from our Ichthys group Bible studies (at least that is the content stream I'll start with for podcasting---I will probably expand to others too, later). I need to support ripping mp3 audio off of the mp4 videos, and generating proper mp3 metadata/episode descriptions so that podcast episode timestamps will work properly on Apple Podcasts and Spotify (the two most dominant podcast apps, at present). I'll be going over what progress I've made on these (and some other things besides). --- ### Automated silence removal It turns out that there is a somewhat obscure recording setting on Zoom that I hadn't come across before called "Optimize for 3rd party video editor." Turning this setting on will cause Zoom recordings to take up much more hard disk space (e.g., hundreds of MBs for long records, rather than tens of MBs), but the videos are presumably less compressed will play nice with follow-on video processing steps (at least that is the idea, I think). Thus far, my experience has borne this out. In the tests I've run since turning this setting on, I've had no issues with my command line tool for removing silence in videos, even though it went kind of crazy with Zoom recordings before. This is good news, since it means we won't have to switch away from Zoom in our group recordings. It turns out that other options I was considering (e.g., Microsoft Teams, Google Meet) do not allow for full-screen screen recording (since at least at time of writing, they inject a "people list" into the frame that you cannot remove), so wouldn't have worked nearly as well anyway. Becasue of this, I am thankful I figured out how to make the Zoom recordings work alright with the rest of my automated video processing workflow. At any rate, after determining that we can in fact keep using Zoom, I wired up the silence removal step in my automated video processing command line tool, so that it will now get automatically run, rather than me manually have to process each segment like I was having to do before. --- ### Automated topic transition scaffolding I also set up the part of my automated video processing workflow that automatically generates topic transition segments. Here's how it works at a high level: - From the Markdown content file, I automatically parse out the content headers into `segments.xlsx`, and add any other miscellaneous headers that need adding (like Intro and outline, Summary and outro, etc.) - Then using that list, I automatically build an HTML slideshow presentation (via [remark](https://github.com/gnab/remark)), with one slide for each content header that will be video-internal (so e.g., the very first section will not have a transition slide) - After that, I turn the slideshow presentation into a series of 1920x1080 .png images using an NPM package called [decktape](https://github.com/astefanutti/decktape) - Then I turn each image into a three-second-long 25-frames-per-second video file using [ffmpeg](https://ffmpeg.org/), and add "dummy" audio tracks to these short topic transition segments so that they can subsequently be successfully concatenated with all the main content recording segments using the [ffmpeg concat filter](https://ffmpeg.org/ffmpeg-filters.html#concat) to automatically combine all the video and audio streams across video files. Basically, while I was previously make all these topic transition segments manually by hand (and then using a script to standardize them to all be three seconds long), now the entire thing is automated from front to back. --- ### Automated transcripts I also set up a process to utilize the Python package [youtube-transcript-api](https://github.com/jdepoix/youtube-transcript-api) to automatically pull YouTube's autogenerated transcripts into my Markdown content files, without any manual cleanup on my part. Previously I was using some regular expressions and a rather sophisticated spreadsheet to do much the same (which took a good bit of the manual work out of it, but still required a few minutes of effort per video), but now it is all completely automatic. --- ### The upshot of all this That was all perhaps a bit technical. Long-time followers of this ministry will probably remember that I've been talking about getting to "content production mode" for literal years now, with there always being "process" things getting in the way of me getting there fully. Regardless of the nitty-gritty details, the point of everything I have just gone through is that there is no more process stuff holding me back on video content anymore! I mean, there are certainly some refinements I could make (such as automatically uploading videos using API keys and such for authentication), but really, where I am now is sufficient for me to finally throw that full content production switch to "ON" once for all. If I were only doing videos, I'd now be done. However, that brings us to the third goal we discussed at the beginning of this update: supporting a podcast form of the content. While I have now finished the video automation side of things, I now need to work on the podcast automation side of things (and hosting and syndicating the podcast, etc.). Fortunately, this should be *far* easier than the video side of things, since the processing steps ought to be largely apples-to-apples, just with some minor tweaks here and there. I am hoping I can knock it out rapidly to get out of this limbo phase we've been it. I'm taking time off work for a couple weeks in the near future in order to visit family, and historically, my "vacation time" has always been when I get the most software development work done in any given year. So I am optimistic. --- ### Consistent content posting the next little bit Podcast automation aside, since I've now finished the video side of things, I'm all set for getting through the backlog of recorded content and getting it all posted to YouTube/the site. I've made a pretty good dent already, and will be releasing a video a day (or thereabouts) for the next couple weeks at least. Most of this content is from our group study of BB1: Theology but there is also a separate four-video playlist in there too. I recorded this other playlist several months back when a friend asked me some questions (so it falls into the Q&A > Reader Correspondence content type). --- ### Upcoming plans Podcast stuff. That's really it for the moment, since I want to finish that before tackling anything else.
--- #### Outline - [Review](#4) - [Automated silence removal](#5) - [Automated topic transition scaffolding](#6) - [Automated transcripts](#7) - [The upshot of all this](#8) - [Consistent content posting the next little bit](#9) - [Upcoming plans](#10)