About this document
Written June 2009 for DVswitch Version 0.8.2
This is not really part of using DVswitch, but it is a logical next step once you have used DVswitch to record something.
It should be read start to finish to get an understanding of the system, and then use the script and docs for ffmpeg2theroa and ncftpput as reference materials.
Introduction
You have used DVswitch to record an event. Now you have a bunch of files. One thing you can do with these files is post them on the Internet so that others can view them using their home internet connection and a web browser.
blip.tv has proven to be a very good host for such things. They accept fairly large uploads (over 30 min) in a variety of formats (including .ogv, although they don't officially support it yet) and play nice with providing the content in both flash and the original form uploaded. They have a nice UI for browsing uploads as well as allowing videos to be viewed as part of another web page, or downloaded. Blip was recommend to me by a Miro developer because of how easy it was to interoperate. They also support ftp uploads, which makes it easy to script the encode and upload process, which is what this document is about. For a large event like DebConf or PyCon, it is worth it to upgrade to the Pro account to get use of the additional features. But for what we are talking about here, the standard is fine.
Post production:
- Create account on blip.tv
- Categorize and Name the talks: trash, talk1, talk2
- Transcode talks from .dv to .ogv
- Upload to blip.tv
- Announce
- Clean up
Steps
Create an account on http://blip.tv/users/create
It is about that easy, and support@blip.tv is very friendly if you have any problems.
About the only decision is: Is the account for a single group that will have many people uploading, or are you going to be the only one uploading, and likely for more than just one group? I recommend using a personal account first, and if the need for a single group arises, whoever thinks that is a good idea can take care of creating it. It is a security risk to make the user name and the show name the same thing, so don't do that.
Categorize
You have a dir with some .dv files, a new one for each time you hit Cut. Some will be junk, like the 5 min between when you started recording and when the presenter actually started his talk. Use your favorite movie player to figure out which are junk, and which are content. Mkdir trash, move the junk into the trash. Better to move than delete – makes it much easier to un-delete, and the files are so large that even deleting can take long enough that you want to do it later.
Transcode and Upload
Once you have the .dv files sorted out, plug values into the following script:
#!/bin/bash -x
# dv2blip .sh
# transcodes dv to ogv and uploads to blip.dv
# blip.tv account user/password:
USER=you
PW=1234
# ffmpeg2theora options
F2OOPS="-f dv -A 96 --optimize --videoquality 7 -V 700"
TITLE=Meeting_Setup
SRC=$TITLE.dv
DST=$TITLE.ogv
ffmpeg2theora $SRC $F2OOPS -o $DST
ncftpput -u $USER -p $PW ftp.blip.tv / $DST
ffmpeg2theora is very cpu intensive, and the ogv is about 10mb per minute, so a 30 min talk will produce 300meg, which will take however long it takes to upload. Blip will convert the .ogv to flash, which takes a little longer than realtime (a 30 min talk will take 45 min to convert.) I try to get this script running right after the meeting so everything is ready the next morning. The longer you wait, the less likely it is you will ever do it. It helps to have just seen the talks, and people who want to review something or missed the meeting will really appreciate having them posted so quickly.
Splitting and Joining
If you hit Cut when you didn't need to, you can cat the two files back together (.dv files have no header, they are just a sequence of frames, so cat file1.dv file2.dv > fileA.dv is perfectly valid (and fast, and no quality loss.)
If a talk is longer than 45 minutes, you will need to split it into multiple files, or blip will fail to convert it to flash. When you are reviewing, find an appropriate place to break. It is nice to include a bit of the end of one part at the beginning of he next, about 20 seconds.
TITLE=Meeting_Setup
SRC=$TITLE.dv
QTY=2
DST=$TITLE\(2of$QTY\).ogv
ffmpeg2theora $SRC $F2OOPS --starttime 1800 --endtime 3400 -o $DST
ncftpput -u $USER -p $PW ftp.blip.tv / $DST
DST=$TITLE\(1of$QTY\).ogv
ffmpeg2theora $SRC $F2OOPS --starttime 35 --endtime 1811 -o $DST
ncftpput -u $USER -p $PW ftp.blip.tv / $DST
Do them in reverse order and they will end up in proper order on blip.tv's interface.
Sometimes there will be junk at the beginning of content, like when the presenter says he is starting his talk, and then stops for a min to wait for people to sit down. Or there is some junk at the end, like when there isn't a formal “the talk is over” point, so you didn't hit Cut until minutes after anything interesting happened. When you are reviewing the files, figure out good start and end times,
Announce
Once the file is uploaded to blip it will take a few minutes for it to show up, and then more time for it to be converted to flash. Once that is successful you can tell the world.
Clean up
It is best to wait a few days before you delete the .dv files. At the time of this writing (2009), I don't think it is practical to archive them unless you think you are going to have a use for them. You are welcome to spend $100 on a 1TB drive that will hold 80 hours of footage. If the goal was to get the event posted on blip, once it is on blip you should feel free to delete the files from your system.
Conclusion
It takes a lot of work to collect the equipment, configure and test the system, transport the equipment to the venue, acquire a helper, set everything up, operate the equipment while attending an event you might want to pay close attention to, tear down and put away the equipment, review, upload, verity and then contend with “can you fix this?” But assuming the event was worth attending in person, many many people will appreciate your efforts. Some will think you, and you will know you are making the world a better place.