This page descibes how Calvary Chapel North Jersey does their podcast. It is intended as a reference for CCNJ, and also to help other churches setup their own Podcasts.
First, the purpose of the podcast is to help spread the Gospel. Jesus tells us to "Go into all the world and preach the gospel to every creature." Mark 16:14-18. The Internet is a well suited tool for reaching the whole earth, and the costs are less than producing CDs or tapes.
One of the goals is to keep everything as simple as streamlined as possible. The initial recording is done with a hardware CD recorder. This recorder is plugged into the sound board, and is operated by a remote control. We paid $400 for ours and it works very well. We also purchase high quality recordable CD's. Low quality CD's can cause recording errors, so avoid them at least use as a recording master. One limitation of the CD is that you can only record 80 minutes of audio. For normal messages this has not been a problem, however, sometimes recorded discussions get cut off. We decided originally has discussed using a digital audio recorder, but decided on using a CD recorder. Here are some of the reasons why:
- Simplicity: All the media person has to do is put a CD in the drive and press record.
- Durability: Once they message is recorded onto CD, there is no worry about it getting accidentally deleted.
- Quality: Many other recorders compress the recording, and loose fidelity. With CD, our master copy is uncompressed, and we can always compress it into any format.
- Duplication: With the master on a CD, all we have to do to create a copy is drop it into a duplicator. It does not need to be transferred to a hard drive first.
- Storage: We are able to store hundreds of messages in low cost binders.
Converting to MP3
At the end of the service we have the service we have the message on CD, and then we must convert it, and upload it to the website. By having the audio on a CD, the person who records the message does not need to be the same person who uploads it. We use a Windows XP computer to upload convert the CD to an MP3 and upload it to the Internet. A Mac would probably be even better suited to this task. The process is as follows:
- Insert the CD into the computer
- Launch a program called Audiograbber. Audiograbber is a free program which can 'rip' the CD, and turn it into an MP3. Many programs can do this, but I choose audio grabber for these reasons:
- It's Free
- It has easy to set options to control the quality. We encode at 64kbps Mono using the LAME encoder.
- It makes it easy to set the ID3 tags - that is the artist, title, and album for the track.
- It can 'normalize' the audio level. This isn't foolproof, but it can help make the messages from one week to the next have about the same volume.
- It's fairly fast and has a nice user interface.
- Enter in the name of the message into the 'Track' field. For CCNJ this is normally the scripture covered.
- Enter in the speaker's name in the 'Artist' field. Normally this is 'Pastor Tim Gentle'.
- Enter 'Calvary Chapel North Jersey' into the 'Album' field. This makes all the podcasts group nicely in iTunes or your iPod.
- Enter 'Podcast' or 'Spoken Word' for Genre.
- Once the fields are filled out, all one has to do is press 'Grab'. This will read the CD and create the MP3 file.
- After Audiograbber is finished, one needs to rename the file. We give all of our files a consistant name, which is both used for the website and for making the directory readable. Our files are named [swf]YYYYMMDD.mp3, where s, w, or f is for Sunday, Wednesday, or Friday.
- Lastly, the person double clicks on the 'upload' script which is found on the desktop. Everything after this point is handled automatically, so the person is done after this step.
For the upload script, I installed cygwin which provides a Unix emulation layer on Windows. This allows the files to be transferred via rsync instead of ftp. rsync is much faster than ftp and can transfer just the differences in a file. This is important, because if you edit the id3 information in an mp3, you don't have to reupload the whole file. Additionally, you can install public keys so rsync can run without specifying a password. Here's the script which does the upload:
echo "Uploading to website" chmod --quiet 666 /cygdrive/c/website/studies_mp3/* ssh -l ccnorthj -p 572 ccnorthjersey.org echo test rsync -avz -e "ssh -p 572" /cygdrive/c/website/studies_mp3/[swf]*.mp3 email@example.com:/home/ccnorthj/www/studies_mp3/ wget --delete-after http://ccnorthjersey.org/podcast/loaddb.php </geshi>
We use Linksky's 'Ultimate Linux' hosting for $10 per month. For this we get a shared server, 20GB of storage, and 'unlimited' bandwidth. No site really offers 'unlimited' bandwidth, but we've typically transfer 10-15 GB per month, and haven't had any problems. Most any web host could run our website, but most hosts don't offer ssh access. ssh is what enables rsync to work, and also makes it much easier to maintain the website. With ssh, you can use a program like putty to terminal into your server. All our software requires is a webhost with PHP and one MySQL database. Generally this is standard with all 'linux hosting' plans, and can be found with some 'Windows hosting'. I recommend using linux hosting unless you have a very specific reason not to.
After an mp3 is uploaded to the website, the script requests a special webpage, which tells the server to reindex the mp3's. Here are the scripts used in the site, and what they do:
- http://ccnorthjersey.org/studies.php view source Generates the HTML pages for browsing the messages. By default it shows you the most recent studies.
- http://ccnorthjersey.org/podcast/rss.php view source Generates the RSS feed.
- http://ccnorthjersey.org/podcast/loaddb.php view source The special script which indexes the mp3s on the server. Originally, I had the directory indexed on every page view, but this turned out to be slow. If you want to purge all the indexed data, simply append '&drop' to the end of the URL. The upload script requests this page after the mp3s have been uploaded. This also helps ensure that the webpage / RSS feed isn't updated until the complete mp3 file has been uploaded. If the feed were to get updated before the file was completely uploaded, some people would get a partial message.
- http://ccnorthjersey.org/podcast/config.php This file contains the username and password for the database. You can't browse this file, but basically it looks like this:
<?php $db_user = 'ccnorthj_user'; $db_password = 'ccnorthj_password'; ?>
- http://ccnorthjersey.org/podcast/Studies.php view source This gets the data from the database and presents it to the RSS or HTML page.
- http://ccnorthjersey.org/podcast/getid3 download This is an open source project which reads the id3 information imbedded in an mp3 file. It works for all sorts of media formats besides mp3. I've included a copy of the source here, only because I know this version works with the scripts which I wrote. You can get the latest version from http://getid3.sourceforge.net/ .
The default webpage displays recent Wednesday, Friday, and Sunday messages. The date for each message is determined by the filename. For example, s20060924.mp4 is assumed to have been recorded on Sunday, Sept 24 2006. The mp3 may be encoded on a date different than the original recording, so the file date may not be accurate. If the file name doesn't conform to our format, the software will use the last modified date of the file.
Calvary Chapels generally teach expositionally, and study the Bible verse by verse. Because of this, the title of each message is generally the scripture which was covered. When a message is uploaded to the website, the software looks at the title, and if it appears to have a scripture reference, it will categorize and sort as such. This allows messages to be sorted by the book of the Bible. Additionally, if you are viewing all the message in a book, it will sort them in scripture order. This is important because the alphabetical order is different than the numeric order of the books. If the message is topical, and doesn't have a scripture reference in the title, the software will still categorize it by the speaker of the message.
Having the mp3's available for download on the website is great, but this in and of itself is not a podcast. A podcast is a mp3 with a RSS feed. The RSS feed allows for the mp3 to be syndicated. The software on the website automatically generates the RSS feed. The feed is simply an XML file which discribes the mp3s on the server. The URL for CCNJ is http://ccnorthjersey.org/podcast/rss.php. Some browsers will display the XML if you view it. The main advantage of having a feed is it allows people to subscribe and automatically receive the latest content from the website. People can install software on their PC to subscribe to podcasts. The most common software to receive podcasts is iTunes. Additionally iTunes can automatically put new content onto one's iPod.
With the RSS feed, the podcast can be added to podcast directories. The iTunes store has a directory of podcasts, and you can find the CCNJ podcast by searching for it. I've also submitted the feed to other directories including Yahoo, Odeo, and Calvary Chapel Podcasting. Once the feed has been added to a few directories, people around the world will start being able to find and listen to the podcast.
Originally the messages we put online were not in mp3 format, but rather Real Audio. There are several compression formats which offer better quality, higher compression or smaller files than MP3's do, however, the real advantage of the MP3 format is it's universally available. Every portable music player can play MP3 format, usually in additional to a proprietary one. For example, the iPod supports MP3 and AAC. AAC is format which Apple has developed, and it has high quality. It is possible to have more than one format on the website, and for a while we had two formats available. However, because MP3's work one every computer and device, most people are happy with the single format. If in the future, we find that the mp3 format has been replaced by a better one, we can either convert the mp3s to the new format, or we can re-encode our audio from our master CD's.
Our hosting provider, LinkSky, provides us with 20GB of storage. We encode our MP3's as 64 kbps mono, and it takes roughly 0.5 MB per minute of audio. Here are some example sizes:
- 59 minutes - 27 MB
- 32 minutes - 15 MB
We do not use 'variable bit rate encoding' because this causes problems with some players. Variable bit rate encoding allows for smaller files by adjust the bit rate depending on the complexity of the signal. I.e., silent parts and pauses can be compressed to take a fraction of the normal space required.
If the upload script displays a strange rsync error, it's likely caused by a problem connecting to the server. Example:
protocol version mismatch -- is your shell clean? (see the rsync man page for an explanation) rsync error: protocol incompatibility (code 2) at /home/lapo/packaging/tmp/rsync -2.6.6/compat.c(64)
Open a Cygwin Bash shell and attempt to manually ssh to the server:
$ ssh -l ccnorthj ccnorthjersey.org Last login: Sun Jun 24 19:38:56 2007 from foobar.net Shell access is not enabled on your account! If you need shell access please contact support. Connection to ccnorthjersey.org closed.
This indicates that LinkSky has disabled the shell account (again). An email needs to be sent telling them to re-enable shell access.
I was getting this error after upgrading to php5:
[Fri Mar 14 19:39:56 2008] [error] [client 22.214.171.124] PHP Fatal error: Cannot access empty property in /home/ccnorthj/public_html/podcast/Studies.php on line 54 [Fri Mar 14 19:39:56 2008] [error] [client 126.96.36.199] PHP Notice: Undefined variable: getID3 in /home/ccnorthj/public_html/podcast/Studies.php on line 54
I changed $this->$getID3 to $this->getID3
Both the software which I wrote, and the getid3 library which it uses are licensed under the GNU GENERAL PUBLIC LICENSE. Basically, this means you can copy the software and use it for your own site for free. The GPL ensures that the software stays free and people can modify it to suit their own purposes. This wiki may be edited or copied, and is licensed under the GNU Free Documentation License.