ASP.NET vUploader script is the most advance ajax video uploading and publishing script written using asp.net, c# and vb.net 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";
_mhandler.ProcessMedia();
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



Screenshot


http://www.mediasoftpro.com/gallery/4/aspnet-ajax-video-uploader-with-progress-bar-sc.aspx


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


 

;