TRANSCODER/UPLOADER CLIENT

From Transmission
Jump to: navigation, search

Contents

Project Overview

Codecs_Research

Project Workspace

Codecs_Workspace

Client Side Encoder / Uploader / Torrent Creator

Research question:

Research into the development of a desktop transcoder/uploader application that could work locally to 
encode the file and then upload it to a specified site.

J has produced code for a front-end for ffmpeg2theora (as has somebody else?) and also an uploader client for v2v that also creates and uploads a torrent. The functions of uploading/transcoding do not appear to have been combined to date.

Emailing transmission list to ask if this has been done by him experimentally, or if he has planned to do it at any stage.

Transcoder/Uploader - EngageMedia Findings

describe desired functionality - user-friendly creation and upload of Ogg files plus adding of Metadata, describe why we would want to use Bittorrent protocol - resumable uploads, describe ffmpeg2theora, describe v2v uploader, describe how joining of these two applications may work, describe proposed user-experience, describe how the client may be designed to interact with Drupal and Plone

The v2v uploader client uses the BitTorrent protocol to upload ogg/theora files to a v2v video server. This has advantages in that the bittorent protocol is a resumable, fault-tolerant distribution mechanism, compared to a standard web form upload process via HTTP. This desktop GUI application (written in python, and a cross-platform GUI library) could be extended to allow users to browse for non-ogg videos files, transcode them on their own computer using ffmpeg2theora into ogg, then follow the same process as above, that is, a BitTorrent protocol upload. The uploading process would be extended to allow publishing into certain CMSs eg Plone and/or Drupal.


Functionality - User Perspective

For a user contributing video to a Transmission network video-sharing website, the ability to encode and upload to Ogg easily on any platform would greatly increase the uptake of FOSS codecs.

One way this can be done is on the server side - for any file to be uploaded and then be trancoded by the server to Ogg. However the file must still be compressed into some format in order for it to be uploaded. Therefore it makes sense to do the encoding on the client-side, to an Ogg file that is high enough quality and resolution to be downloaded and screened or re-edited.

As uploading via the web has it's own problems - http transfer can be interrupted due to network dropouts and cannot be resumed. Thus it makes sense to combine the functionalities of transcoding and uploading into one client application.

The user would have this experience using the client:

(first use)

  • visit target CMS
  • download client installer
  • install client

(subsequent use)

  • open client

PANE ONE

  • click "Contribute Video to [target CMS]"

PANE TWO

  • fill out metadata fields required by target CMS, including choosing categories etc. by drop-down
  • browse for video
  • browse for thumbnail
  • click "Contribute"

PANE THREE

  • fill out username and password (if network connection successful)

(PANE THREE.A)

  • (if network connection un-succesful, user receives prompt to check internet connection and may click button to re-try)

PANE FOUR

  • user can see progress bar for transcoding with message "Transcoding..."

(PANE FOUR.A)

  • (if transcoding unsuccessful, user receives prompt with button to turn off transcoding)

PANE FIVE

  • user can see progress bar for uploading with message "Uploading..."

(PANE FIVE.A)

  • if uploading unsuccessful, user recieves prompt with email address for target CMS saying "Report Error to [target CMS]"

PANE SIX

  • user receives notification "Your contribution was successful" with a link to the user's folder or member page on the target CMS which will invoke default browser, and a button saying "Contribute Another Video" which will start the process again

Functionality - Details

The client must have these functions:

  • transcode to one Ogg preset
  • ability to add metadata/licenses to create an entry in the target CMS that does not also need to be updated via the web (create a one-step process)
  • ability to be configured for target CMS - server settings, target folder, username/password
  • upload via a resumable protocol so upload may continue once network is reconnected after dropout
  • cross-platform - available for easy install on Linux, Mac and Windows

Client Specification

The v2v uploader client uses the BitTorrent protocol to upload ogg/theora files to a v2v video server. This has advantages in that the bittorent protocol is a resumable, fault-tolerant distribution mechanism, compared to a standard web form upload process via HTTP. This desktop GUI application (written in python, and a cross-platform GUI library) could be extended to allow users to browse for non-ogg videos files, transcode them on their own computer using ffmpeg2theora into ogg, then follow the same process as above, that is, a BitTorrent protocol upload. The uploading process would be extended to allow publishing into certain CMSs eg Plone and/or Drupal.

Method A: Join Existing Uploader/Torrent Creator to Existing Ogg Transcoder

Do some investigation into the joining of these three things in order to be able to package a Transcoder/Uploader/TorrentCreator application, cross-platform.

Investigate these additions to v2v Uploader:

  • Configuration File/Widget distributed with the Uploader, allowing different server settings to be added. Each website using the Uploader could then simply load their configuration file by default with the program.

- v2v Uploader already seems to offer this to an extent - server, port, username and password settings are available in the interface.

  • Distribute ffmpeg2theora with the Uploader and configure the Uploader to offer the transcode function built in (by default it would be enabled). the Uploader would have to input the file into ffmpeg2theora, wait for a result and then when successful add the encoded file to the upload with metadata, otherwise reporting an error. "turn off transcoding" would be the option offered when an error occurred.

Method B: Create Original Interface To Existing Torrent Creation, Transcoding and Uploading Libraries

Investigate the creation of a Java/Python/??? front-end that is therefore cross-platform. Investigation would be necessary into finding libraries for each function on each platform, and the application would have to be packaged with the necessary libraries in different platform versions.

This would probably be a cumbersome project, in initial development and also in terms of maintaining updates for all the different libraries.

What would be a simpler way to approach this?

Have Java do the uploading, and therefore only have to maintain the different transcoding/torrent creation libraries?

More thought on this one...

This all seems unnecessary if v2v uploader may be extended with Ogg transcoding functionality. We will investigate this first to hopefully avoid replicating the work J has already done

Links and Notes

Client side uploader

The CC Publisher is written in Python. It appears to have many bugs - areas of the GUI are drawn incorrectly, I experienced a crash during operation on the Mac binary and Andy experienced slowness and incorrect drawing of GUI on Linux.

CCPublisher

CCPublisher Development Site

OurMedia Publisher

Client side torrent-creator/uploader

This GUI seems more stable than the CC Publisher. The interface is better too, rather than a wizard it is a one-page interface. A compromise could be reached by offering a 3 page wizard instead of a many page wizard.

v2v client made by J - subversion

downloads of v2v client binaries here

see TRANSCODERS for client side transcoders

v2v encoder/uploader

Crashes on startup on my PPC Mac OS 10.3 Powerbook - can't test... Will try on Intel.

http://v2v.cc/~j/V2VUpload.dmg

Personal tools