Mark of Cain

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. 
An effort with this multidimensional impact gets my best efforts.
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.

Contact Email me at:

This is a temporary email address. Once you contact me, a permanent email address will be sent to you.

Feedback System

Feedback system to be put here. In the meantime please email me.