• Transcoding

  last modified October 20, 2007 by daveut

Participants

  • Aleksi
  • Dave

A possible solution:

Pieces:


  • a semi-intelligent detached/asynchronous process that accepts transcoding requests from Plone, transcoded 1 or more derivative files and places files back into Plone.  This could run as a system daemon, a twisted process, or a lovely.remotetask.  The actual encoding tool could be ffmpeg, mencoder or another command line tool.  The encoder could also be a "Watch Folder" in some commercial encoding tool such as Cleaner, ProCoder, Squeeze, etc.
  • a folderish "Clip" content type to hold 1 or more versions of a single piece of audio or video content.
  • a mechanism for defining and storing possible encoding profiles(settings used by the transcoder such as width, height, bitrate, format, etc). 
  • a transport mechanism for file handling between Plone and the encoding process.  WebDAV may work well for this.
  • a version of ZODB with Blob file support is ideal

Process:


  1. User uploads source file into a folderish "clip" type that will contain 1 or more versions of the same content (e.g., the original file, a wmv version, a flv version, etc)
  2. User selects 1 or more encoding profiles
  3. Plone tells the encoding process where the new source file is located and what encoding settings to use
  4. The encoding process makes 1 or more transcoded versions of the source file and uploads them into the same "clip" as the source file



Issues
  • This subject integrates large file support issue because:
  1. we do not want store large files to ZODB
  2. we have to have video file for ffmpeg anyway, though getting files to/from Plone may best be done via WebDAV
  • Discover possibility to use native ZODB blob.  There's now a plone 3 buildout that does this.
  • Discover method how daemonized converter and zope could share information, webDAV?

Have a look at lovely.remotetask to handle the transcoding and not tie up a zope thread.