Video support

The other pull request had some issues, partially because we changed the API, and also because it just didn't work.  This is working video support.