ASP.NET vUploader script is the most advance ajax video uploading and publishing script written using, c# and that allow user and site administrator to

  • upload unlimited videos at once via ajax uploader,
  • publish all videos one after another in background,
  • displaying publishing status via progress bar in real time
  • send all published video information (source filename, published filename, duration, duration in seconds and more) of each video at the end to server site scripting in order to allow developer to write code for saving information in database
  • support large video uploading via smaller chunks
  • with lots of customization options
  • builtin support for responsive bootstrap 3.0 themes
  • and more 

Two Pass Encoding Example

Configuration Options:

ASP.NET vUploader uses simple configuration options that can be set via web.config file. 

//set source path
<add key="sourcepath" value="contents/source/"/>
// set published path
<add key="publishedpath" value="contents/published/"/>
// set allowable file extensions
<add key="allowedextensions" value="mp4,avi,wmv,mpeg,mpg,webm,ogv,flv"/>
// set maximum video file upload
<add key="maxfilesize" value="1000mb"/>
// set chunk size
<add key="chunksize" value="4mb"/>
// set maximum allowed videos to be uploaded at once
<add key="maxallowedvideos" value="10"/>

Encoding Options:

To make it simple, developer can directly adjust encoding configurations, ffmpeg commands and other settings via code. /encode.ashx is the file responsible for publishing video. below is code responsible for starting publishing mp4 videos in background

private static string EncodeVideo(string Source, string Published)
MediaHandler _mhandler = new MediaHandler();
 string RootPath = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath);
 _mhandler.FFMPEGPath = HttpContext.Current.Server.MapPath("~\\ffmpeg\\bin\\ffmpeg.exe");
 _mhandler.InputPath = RootPath + "\\" + SourcePath;
 _mhandler.OutputPath = RootPath + "\\" + PublishedPath;
 _mhandler.BackgroundProcessing = true;
 _mhandler.FileName = Source;
 _mhandler.OutputFileName = Published;
 _mhandler.Parameters = "-c:v libx264 -preset medium -b:v 650k -c:a libvo_aacenc -b:a 96k";
 _mhandler.OutputExtension = ".mp4";
 if (_mhandler.vinfo.ErrorCode > 0)
 // remove file if failed to publish properly
 if (File.Exists(RootPath + "/" + _mhandler.InputPath))
 File.Delete(RootPath + "/" + _mhandler.InputPath);

// validation error occured, don't proceed more return "{\"encodeoutput\" : \"2.0\", \"ecode\" : \"" + _mhandler.vinfo.ErrorCode.ToString() + "\"}"; } else { _mhandler.vinfo.ProcessID = Guid.NewGuid().ToString(); // unique guid to attach with each process to identify proper object on progress bar and get info request _lst.Add(_mhandler); return "{\"encodeoutput\" : \"2.0\", \"ecode\" : \"" + _mhandler.vinfo.ErrorCode + "\", \"procid\" : \"" + _mhandler.vinfo.ProcessID + "\"}"; } }

User Control:

<uc1:upload ID="upload1" OutputFileExtension=".mp4" runat="server" />

Video Preview


It can be used in any type of application, its builtin with web form control but write in a way that can be easily translated to MVC framework.