Video and Podcast Unattended Creation
Edited: September 3rd, 2019
FFmpeg is a powerful media manipulation tool. It is the foundation for many well known audio and video programs such as YouTube, Chrome, Blender, and Firefox. It is also a rock solid tool on the command line and in scripts.
Part of my contribution to the kingdom is to produce a weekly video and podcast of our local worship service. Those finished products get posted on Youtube and syndicated through various podcast feeds. This effort helps in the following ways:
- expands our ministry beyond those in physical attendance
- introduces our brand to the seeking community
- allows those who are temporarily absent to stay in step with the congregation as a whole
- provides a refresher portal for attendees who need to revisit a spiritual truth
- and establishes an online archive of the declaration of the Gospel by my pastor.
But grinding this out week after week has its share of monotony and distractions. When I volunteered for this post-production project, I was told it would take “about an hour.” Some weeks I would spend around 90 minutes. Okay. That’s about an hour. Then some weeks would take 2 hours+ due to the technical difficulties and distractions on my part – mainly distractions on my part. One trip away from my desk at an inopportune time means that I would delay the progress of the project. Additionally, one skipped tick in the proper check box would mean that I’d have to re-render the project. This “about an hour” project has been known to gobble up my afternoon.
Enter unattended automation through scripting. What if it were possible to load the files onto my workstation, call a script, then walk away? Then at the end of the process get a notification that the finished projects both video and podcast were finished and ready to be distributed? Follow along with me and I will share what I have discovered.
Here is what my script does:
1. Stitches together the various video files from our camera for the worship service
2. Cuts and trims the concatenated video file to the determined millisecond
3. Overlays an animated lower-third of the speaker’s name at the beginning of the video
4. Overlays a transparent branding logo in the lower right corner for the video’s duration
5. Normalizes the audio in the video
6. Encodes the video with all of the recommended Youtube flags for faster online processing
7. Standardizes the file naming so that it matches the pattern of previous and future weeks and includes the sermon series, sequence number, and sermon title
8. Rips the audio from the finished video for the podcast
9. Compresses the podcast audio for listeners who wear earbuds
10. Automatically adds an intro audio bumper to the podcast which is specific to the speaker or generic for a guest
11. Attaches a wrap up audio bumper to the end of the podcast
12. Encodes the podcast in the mp3 container
13. Populates the mp3 ID tags of the podcast for speaker, sermon series, sermon title, sequence number (track), genre, and date
14. Adds an album cover ID tag to the mp3 for visual branding
15. Standardizes the file name of the podcast so that it matches the pattern of previous and future weeks to include sermon series, sermon title, and sequence number
16. Copies the created video and podcast to storage
17. Tidies up the working directory by removing any temporary files that were created
18. Sends a text message to me when the files are finished and includes processing and rendering information in the text message
I do all of this AUTOMATICALLY each week in less than 10 minutes (last week’s 36 minute sermon took six minutes and fifty seconds – 6:50!) on a machine that is 8 years old and running free software.