Convert Viedo to .Flv Using c#.net on Web

The method to convert video to .flv is too easy. You can downlaod following files from here or .net.
1) ffmpeg.exe
2) ffplay.exe
3) pthreadGC2.dll

After dowloading all the files

Follow the steps wrtitren:-

1)Make a new .net web site or windows application.
2)Copy and paste all the 3 above written files to root location
3)Copy and Paste code written below
4)Put an upload to page and rename to “fileuploadImageVideo”
5)put and button and rename to btn_Submit
6)Make 3 folders OriginalVideo, ConvertVideo, Thumbs
7)Import Class “using System.IO;”

private bool ReturnVideo(string fileName)
{
string html = string.Empty;
//rename if file already exists

int j = 0;
string AppPath;
string inputPath;
string outputPath;
string imgpath;
AppPath = Request.PhysicalApplicationPath;
//Get the application path
inputPath = AppPath + "OriginalVideo";
//Path of the original file
outputPath = AppPath + "ConvertVideo";
//Path of the converted file
imgpath = AppPath + "Thumbs";
//Path of the preview file
string filepath = Server.MapPath("~/OriginalVideo/" + fileName);
while (File.Exists(filepath))
{
j = j + 1;
int dotPos = fileName.LastIndexOf(".");
string namewithoutext = fileName.Substring(0, dotPos);
string ext = fileName.Substring(dotPos + 1);
fileName = namewithoutext + j + "." + ext;
filepath = Server.MapPath("~/OriginalVideo/" + fileName);
}
try
{
this.fileuploadImageVideo.SaveAs(filepath);
}
catch
{
return false;
}
string outPutFile;
outPutFile = "~/OriginalVideo/" + fileName;
int i = this.fileuploadImageVideo.PostedFile.ContentLength;
System.IO.FileInfo a = new System.IO.FileInfo(Server.MapPath(outPutFile));
while (a.Exists == false)
{

}
long b = a.Length;
while (i != b)
{

}

string cmd = " -i "" + inputPath + "" + fileName + "" "" + outputPath + "" + fileName.Remove(fileName.IndexOf(".")) + ".flv" + """;
ConvertNow(cmd);
string imgargs = " -i "" + outputPath + "" + fileName.Remove(fileName.IndexOf(".")) + ".flv" + "" -f image2 -ss 1 -vframes 1 -s 280x200 -an "" + imgpath + "" + fileName.Remove(fileName.IndexOf(".")) + ".jpg" + """;
ConvertNow(imgargs);

return true;
}
private void ConvertNow(string cmd)
{
string exepath;
string AppPath = Request.PhysicalApplicationPath;
//Get the application path
exepath = AppPath + "ffmpeg.exe";
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = exepath;
//Path of exe that will be executed, only for "filebuffer" it will be "flvtool2.exe"
proc.StartInfo.Arguments = cmd;
//The command which will be executed
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start();

while (proc.HasExited == false)
{

}
}
protected void btn_Submit_Click(object sender, EventArgs e)
{
ReturnVideo(this.fileuploadImageVideo.FileName.ToString());
}

Now run the application select a video file, that will get converted and come to ConvertVideo Folder

Download Full Project.

Reference: http://forums.asp.net/t/1356425.aspx

17 Comments

  1. Hey Rana,

    Thanks for this post.
    I have a class that converts a video using fvec. The converted video is created in a different folder, but the problem is that while the process is running the flv video is created in this folder with 0 bytes and raises until it ends.
    How can I “hide” the new flv and show it ONLY when the process finishes? (without write it in a temporarly file and then move it).

    Thanks!

  2. Atul Shende

    very nice and exactly working code sir, from long time i am searching this type of code.
    thank you for this post sir.
    one suggestion sir add given line in web.config

    this will allow upload a file up to size of 200Mb.
    your code is very nice works for small size but for big size it won’t work..

Leave a Reply