Creating a video CD (VCD) from a YouTube video

As a Christmas gift for my father, I transferred a YouTube video of a public service announcement that he remembered fondly from his childhood to optical media so he could watch it on the television instead of on the computer.

There were some unique sets of constraints that made this an interesting project. First, I came to my parents’ house with only a Dell Mini netbook (with no optical drive) running Ubuntu Linux.  None of the computers had DVD writeable optical drives, but they could burn CDs.  My parents’ DVD player can play video CDs (VCDs) so I decided this would be a good option.

Capturing the video

I downloaded the YouTube video using the UnPlug extension for Firefox.  I chose to save the MP4 version of the video.

Transcoding the video

Since I would be burning the video on my mom’s notebook, I read the help documentation for the CD writing software to determine which video format the software needed to create a VCD.

VLC is usually my go-to tool for working with video, but I got errors about not having the correct codecs.  Rather than messing around, I wanted to just get the project done.  So, my next choice was FFmpeg.   It was a good choice because the software, though a command-line utility, has a preset for creating an mpeg file suitable for burning a VCD.

ffmpeg -i High\ Flight\ \(John\ Gillespie\ Magee\ Jr\ Poem\).mp4 -target ntsc-vcd high_flight.mpg

I was able to do this with the version of ffmpeg included with Ubuntu 10.04, but as ffmpeg is cross-platform it should be straightforward to do this on other platforms.

Burning the VCD

I copied the file to my Dropbox and downloaded it to my Mom’s computer using the services web interface.  Her burning software allowed me to just drag-and-drop the file into the burning program’s window.

Global hotkeys for VLC

For reporting, I often need to fill in my notes with a recording I made of an interview.  This means I need global hotkeys so I can start/stop the player while I’m in my word processor or note-taking program (tomboy or zotero).

VLC has native support for global hotkeys, but for whatever reason, I couldn’t get them to work to map ++ to play/pause with Ubuntu 9.10.

My workaround is based on VLC global hotkeys in Ubuntu with Compiz. But, I use VLC’s remote control interface to control the player instead of the HTTP interface as suggested in the howto.

  • Make sure netcat is installed. We’ll use this to send controls to the remote control interface of VLC.
    $ sudo apt-get install netcat
  • Open up the CompizConfig:
    $ ccsm 
  • Click the checkbox next to Commands and then click on Commands
  • In the Commands tab, type echo “pause” | nc localhost 7777 -q 1 in the Command line 0 field (or the first available field if you have other commands). This command tells the play to toggle pausing the playback.
  • In the Commands tab, type echo “rewind” | nc localhost 7777 -q 1 in the Command line 1 field (or the first available field if you have other commands). This causes the player to rewind playback a few seconds.
  • In the Key Bindings tab, click the Disabled button in the row labeled Run command 0 (or whatever command you specified in the previous steps) and set the hotkey to whatever you want (I use ++).
  • Repeat the previous step for the rewind command (I used ++ because ++ was a hotkey used by another program).
  • Close CompizConfig.

Then, if I run VLC with both the normal and remote control  control interfaces, setting up the remote control interface on port 7777 on my local machine, my global hotkey will work:

$ vlc --extraintf rc --rc-host localhost:7777

You might want to create an alias for running vlc with these options by editing ~/.bash_aliases or ~/.bashrc:

...
alias vlctranscribe='vlc --extraintf rc --rc-host localhost:7777'
...

I’m not quite sure how all the remote control commands work.  For instance, I thought the rewind command would play backwards at the maximum rate, but instead it jumps playback back a few seconds.  I thought the fastforward command would do the opposite of rewind, but instead it slows down playback incrementally.  So, for now, I just have play/pause and jump backwards hotkeys, but that’s enough to make transcribing interview recordings much, much easier.

Backing up and verifying files in Mac OS

There are some interesting backup tools for system backups (Time Machine) but I want to just be able to copy and verify a directory (and its children).  I’ve heard that the commercial product Retrospect provides copy and verify functionality, but I’m cheap.

This is the method that I used.  I’d be interested on hearing feedback about it:

# Copy the files using ditto 
$ ditto /Volumes/Backup/columbus_da/ /Volumes/ghingexternal/columbus_da

# Get md5s for the original and copied files
$ find /Volumes/ghingexternal/columbus_day/ -exec md5 '{}' \; > md5s-new.txt
$ find /Volumes/Backup/columbus_day/ -exec md5 '{}' \; > md5s-old.txt

# Strip out the directory prefix from the md5 files
$ mv md5s-old.txt md5s-old.txt.bak
$ mv md5s-new.txt md5s-new.txt.bak
$ sed 's/\/Volumes\/ghingexternal\///' md5s-new.txt.bak > md5s-new.txt
$ sed 's/\/Volumes\/Backup\///' md5s-old.txt.bak > md5s-old.txt

# Compare the md5s of the copied files
$ diff md5s-old.txt md5s-new.txt

hfs+ on linux

I got a new MacBook from work and need to migrate files from my old Dell notebook running Xubuntu Linux.  Luckily, I had recovered a drive from a bricked machine that was donated to pages that I could use to transfer the files.

I don’t like the Fat32 file system, so I formatted the external drive as hfs+.  My workstation, running Debian, mounted the drive fine, but I couldn’t write.  I found that I had to disable journaling on the drive before I could write it in Linux:

$ diskutil disableJournal /Volumes/ghingexternal

Note: that command has to be run on the Mac.

Once I did this, I could write to the disk, but only as root.  Permissions of hfsplus partition, a thread on the Ubuntu message boards, provides this insight which is likely the case:

I got a new MacBook from work and need to migrate files from my old Dell notebook running Xubuntu Linux.  Luckily, I had recovered a drive from a bricked machine that was donated to pages that I could use to transfer the files.

I don’t like the Fat32 file system, so I formatted the external drive as hfs+.  My workstation, running Debian, mounted the drive fine, but I couldn’t write.  I found that I had to disable journaling on the drive before I could write it in Linux:

$ diskutil disableJournal /Volumes/ghingexternal

Note: that command has to be run on the Mac.

Once I did this, I could write to the disk, but only as root.  Permissions of hfsplus partition, a thread on the Ubuntu message boards, provides this insight which is likely part of the problem (since the mountpoint of the hfs+ formatted drive has uid:gid 99:99 on my Linux box):

I have to preface my entry with the warning that I am a complete newbie. I was having the same problem with accessing my files on my hfs+ partition. What I discovered is that by default OSX doesn’t allow any access for the gid for files and folders in your User’s folders. I don’t know if this is the wisest thing, but I went into the Finder, did a “Get Info” on all the files/folders I wanted to access in Ubuntu, I then went under permissions and switched the Group ID to something I could use in Ubuntu. I then made sure that the line in the fstab that mounts my hfs+ partition had a “gid=XXX” statement that matched what I set in OSX. I also made sure that the user I was using in Ubuntu was part of the group mentioned above. If this doesn’t make sense, let me know and I will clarify. Also, if you need help with OSX permissions, here is a link to an Apple KB article: http://docs.info.apple.com/article.html?artnum=107039

Core technologies/concepts for community organizing

Last summer at the AMC, I presented a session about Web 2.0 and social movements.  Because I inherited the session from someone else, I kept the session proposer’s rubric of introducing technologies/services by name  (Twitter, Jott, del.icio.us) so that people would be able to link the name/buzz with an idea of what it could do.  If I had it to do all over again, I would start with core concepts and technologies that I see as being really helpful with my own use of tech. in organizing.   These would be things that underly a lot of Web 2.0 services and also make technology more fluid for users of all levels of technological familiarity. I’m starting a list here.  What core concepts/technologies do you all use?

RSS Feeds/Aggregation

One of the biggest frustrations that I (and other users I would suspect) have with the multitude of useful sites is having to have a bunch logins and remember which information lives where.  One has to choose between using the right tool for the job and making it easy to locate and access information.  E-mail is one convergence point, but that doesn’t neccessarily mesh with every service that people might use.  Services from del.icio.us to Twitter to Google Calendar to most blogging platforms all allow you to publish RSS feeds.  I would explain what a feed does, show what a feed looks like in various services, and then show how to aggregate and organize feeds with a web-based aggregator and a desktop app.

Feeds are so important because understanding them is crucial for mashing up services or making them easier for collaborations.  Examples:

  • Blog to twitter using Twitterfeed
  • Twitter “mailing” list using #hashtags and RSS Feed for http://search.twitter.com/

Email Filters

People are often overwhelmed by mailing lists, but few know that you can pretty easily filter out all the different kinds of e-mails that you get to do the inbox triage that everyone is familiar with for you.  I think having imapfilter or Thunderbird sort my mail into folders is super-useful, if only to evaluate the actual importance of data.  If I never click on a partcular folder where some of my mail is auto-sorted, do I really need to be on that mailing list anyway?

Human URLs (TinyURL or similar services)

Things like Google Docs often generate long, difficult to remember addresses for important information.  If people have to first dig through an e-mail with a link to a shared resource (and do this every time they want to access it), they’re going to be less likely to use it.  If they can just remember it (or enough of it that it is found in their browser’s location history) I think these online resources will get more use.

Mailing Lists

I think we all take these for granted, but there are ways to use these that make them more or less effective.  What strategies do you use to handle list management and message moderation.  How do you not flood people’s mailboxes?  How do you make it easy for people to (un) subscribe to lists?  This is more a discussion of usage than particular technologies.

Chat

Electronically mediated communication can often be ambiguous.  I find that I often spend extra time trying to disambiguate something in e-mail when it would have been way, way faster to call and let someone as questions.  Still, a lot of collaboration that I do involves looking at text or files together.  Chat is really crucial for these kinds of tasks.  I use it every day at work.

SMS

I don’t have a texting plan and I share my mobile phone, so I’m not the hugest txter but I like that it’s more purvasive than e-mail but less intrusive than a phone call because it lets people get the information first before deciding their timeline or content for response.  It’s also better than a call or voicemail for infromation that you might have to lookup again (a phone number or address for instance).

Skype/Conferencing

For the times when you want to be more personal than chat, voice/video conferencing is perfect.  We have a fancy system at work for having meetings that span Indy and Bton but I think folks can achieve much of the same functionality with Skype, cheap webcams, and projectors.

Paypal

Cash rules everything around me … There are probably better alternatives, especially if the organization seeking cash is a 501(c)3, but Paypal is definitely the easiest to use.  The awesome Pledgie service helps you use Paypal to organize campaigns.