27 - Podcasts in ExpressionEngine - Build or Rent?
Looking to build a podcast or archive of audio files on your ExpressionEngine site? You essentially have two options - build it all within EE, or rent some capabilities from an Application Service Provider (ASP) and integrate their output into your EE-based site. In this chapter I’ll look at the advantages and disadvantages of each approach and lay out the direction for the sample Church Site I’m building.
You can’t talk to a church these days without the idea of putting their sermons online coming up. It’s plain to see why - much effort goes into the sermon, getting it online would increase it’s reach, and (lazy pastors recycling old messages notwithstanding) it’s fresh, regular, original content for a church website.
So how to tackle this?
From one perspective a sermon archive/podcast is just another content type. Sermons posted online can be described with a relatively simple assortment of fields - title, date, description, category, audio file, it’s ordinal position within a series, length, speaker name, scripture verses covered, etc. If you’ve been following along in this series you’re probably already jumping ahead mentally…setting up a new weblog, a new field group, creating the fields…and you’re correct. An all-native ExpressionEngine approach is perfectly valid. EE’s custom fields and weblog-as-data-containers would make this a very straightforward build.
However - it’s possible that you might run into a couple of issues that start to make an ASP-based approach look attractive. Those issues are file size and it’s half-brother: bandwidth.
Let’s look at file size first. Sermons tend to generate audio files that will be larger than you will able to upload, by default, through the standard file upload process in EE. Usually you will be limited to uploading files sized somewhere between 2MB and 5MB (This isn’t actually an EE limit, but rather a PHP-level limit set on the server). A 20 minute sermon will easily eat that up - and the hour-ish long messages at my own church tend to put out .MP3 files closer to 60MB.
You can, from within ExpressionEngine’s interface, tell what size file uploads your install is capable of. It’s the PHP Info screen and is found under Admin › Utilities › PHP Info. You want to look for “upload_max_filesize” and see what it’s set to. Here on Train-ee running on EngineHosting my limit is 5MB.
The other setting that might come into play is “memory_limit” - which you can also bump into by trying to process large files via EE and PHP.
These settings are configurable - so it’s possible that by contacting your web host you could have these two configurations upped to cover the size if your audio files. And certainly there are things you can do to affect the final size of the audio file - different audio codecs, different compression settings or killing the pastor’s mic after 15 minutes—all of these will work but the result might be an file that’s unbearable to listen to or an angry pastor.
One option around these PHP-related file size limits is to use an FTP client to move the audio files to the web server. Once on the web server a content administrator could still use EE’s “File Upload” process, but instead choose to view files that already exist on the server. The challenge with this process is that it becomes just a bit more complex than I prefer - I don’t like putting non web-heads in front of an FTP client. If your church has savvy audio techs that wouldn’t blink at FTP then this might be an acceptable solution.
The related issue to file size is bandwidth. The minute you start putting large files on your web server and encourage people to download them your bandwidth usage will increase. Depending on your web hosting agreement you could begin to incur additional costs for that bandwidth. Or worse yet - your entire site (and possibly email with it) goes offline once your monthly bandwidth has been consumed. For churches - who are typically on a pretty restrained budget - this could be the perfect setup for a technical faux pas—after finally getting the church podcast online and hyping it, the entire thing becomes unavailable.
Hire It Out
The other alternative is outsourcing the podcast functionality. There are businesses who’ve turned these challenges into a new offering - hosting specifically for podcasts. A podcast host will typically give you a non-FTP way to upload files and also offer enough bandwidth to cover a popular podcast. Decoupling the podcast from the rest of the website also guarantees that the availability of your website and email will never be affected by the podcast. Podcast hosts often have ways to embed the content back into your site through the use of a Flash-based media player.
A quick Google search turned up a few dedicated to serving churches (links not meant to be an endorsement, just a link):
However I’m always a bit reluctant to use services that are totally geared towards churches - like “Christian Webhosting”, or “Church Content Management Systems”. While I know these solutions work for many, I prefer to use non-religious commercial vendors. Why? Some of it is just personal preference - I want to try and avoid building a “Christian Bubble” around myself and my world. Some of it is admittedly prejudice - over the years I’ve noted that internet related businesses that specifically target Christians and Churches tend to be behind the curve in design, features and functionality. Regular commercial providers just seem to move faster and be more competitive. I also like the idea of my church-related work sitting side by side with non-church, non-Christian accounts from others - just on the off-chance that it may influence someone who wouldn’t run across it if it were on an all-Church/Christian server.
In that vein the one service I have used a few times to work with an ExpressionEngine site to deliver a podcast is HipCast. Their plans start at $10/mo for unlimited bandwidth (far cheaper than a couple of those I linked to above), and they also support the Metaweblog API.
For those that haven’t used the Metaweblog API—it’s essentially a way to create a door into the backend of ExpressionEngine that allows another application to create a post in a weblog. EE creates a key to the door that is given to the outside application, and the door is kept locked to everyone else.
In this case clients first upload a new audio file to Hipcast via a web browser. Once the file is on the Hipcast server, Hipcast updates a podcast feed with the new audio file. But - it gets better. Hipcast also uses the Metaweblog API to programmatically create a new post in the client’s EE site. In that post Hipcast places file information like title and date, but also places a small Flash player that allows site visitors to play the audio file right from the blog post. You can see an example on my church site here. I’ve also used Hipcast on a client site for a radio show - you can see an example of that here.
You can also use Hipcast to allow clients to literally phone it in - they can call Hipcast on the phone, punch in an account number, speak their piece, and—again through the Metaweblog API - a few minutes later a new post with the audio from the phone call pops out on their website. I once set this up for a soccer fan site where the site owner wanted to be able to call in updates while sitting at a game, but - inexplicably - once I finished the site the client turned it off and it’s never gone live. Ah well….
Deciding which way to go for this tutorial series is a pretty tough call. For any real-world client the price, ease of setup, functionality and unlimited bandwidth of the Hipcast-based approach is tough to argue. However I like to keep these tutorials more in native-EE land as that’s really the purpose of the site.
Let’s do this—if you’ve been following this series and have any input on direction leave a comment and tell me which would be more valuable to you - an all-EE approach? An integration with HipCast? Both?