Firefogg
Firefogg

video encoding and uploading for Firefox

Example using a simple multipart POST request(requires encoding to be finished):

To use Firefogg on your site, you have to use the Firefogg Javascript api.
This is an example that does not need any changes on your backend. You can just replace a multipart form.
For an example that support resumable upload and uploads while it is encoding check here.


if(typeof(Firefogg) == 'undefined') {
  alert('You dont have Firefogg, please go to http://firefogg.org to install it');
  window.open('http://firefogg.org');
}

var ogg = new Firefogg();

if(ogg.selectVideo()) {
  var options = JSON.stringify({'maxSize': 320, 'videoBitrate': 500});
  ogg.encode(options,
             function(result, file) {
                result = JSON.parse(result);
                update_progress(result.progress, result.state);

                ogg.post(uploadUrl, videoName, data,
                         function(result) {
                            result = JSON.parse(result);
                            update_progress(result.progress, result.state);
                            if(result.resultUrl) {
                                document.location.href = result.resultUrl;
                            }
                         },
                         function(progress) {
                            progress = JSON.parse(progress);
                            update_progress(progress.progress, progress.state);
                         }
                );
             },
             function(progress) {
                progress = JSON.parse(progress);
                update_progress(progress.progress, progress.state);
             }
  );
}

function update_progress(progress, text) {
    //do something with status and progress, i.e. set progressbar width:
    var progressbar = document.getElementById('progressbar');
    progressbar.style.width= parseInt(progress*200) +'px';
    progressbar.innerHTML = parseInt(progress*100) + '% - ' + text;
}