views:

302

answers:

2

Hi, I'm building a cms and I want users to be able to upload videos but I'm not familiar with video upload & conversion. Is there an example or has anybody coded a solution like this? I heard about ffmpeg but I don't know how to integrate it with asp.net.

As simple solution I can make my clients upload flv files but then I would still need to get a screenshot from that fvl.

Thanks

+1  A: 

I've used ffmpeg, but I found it easier to just use the pre-compiled .exe version. So in the backend, I would just launch ffmpeg.exe with the required command-line arguments to do the conversion, let it run and when it was finished the completed file was all ready to go.

Dean Harding
@codeka: Can you post example command? Does ffmpeg requires to be installed server side or just exe is enough? Because if it is enough I'll place it at bin folder.
HasanGursoy
I downloaded the exe from: http://ffmpeg.arrozcru.org/ the command-line is pretty simple and fairly well documented here: http://www.ffmpeg.org/ffmpeg-doc.html
Dean Harding
+1  A: 

Answering author's question:

Does ffmpeg requires to be installed server side or just exe is enough?

ffmpeg.exe will be enough, no installation is required.

The code below gets a screenshot on captureTime on video specified by videoFilename variable, and saves it to the imageFilename path.

Process ffmpeg = new Process();
ffmpeg.EnableRaisingEvents = true;
ffmpeg.StartInfo = new ProcessStartInfo
{
    FileName = this.ffmpegPath,
    Arguments = string.Format(
        "-i \"{0}\" -an -y -s 320x240 -ss {1} -vframes 1 -f image2 \"{2}\"",
        this.videoFilename,
        DateTime.MinValue.Add(this.captureTime).ToString("HH:mm:ss:ff", CultureInfo.InvariantCulture),
        this.imageFilename
    ),
    WorkingDirectory = this.workingDirectory,
    UseShellExecute = false,
    RedirectStandardError = true,
    RedirectStandardOutput = true,
    WindowStyle = ProcessWindowStyle.Hidden
};

ffmpeg.Start();
ffmpeg.WaitForExit(this.timeout);
Alex
@Alex: I couldn't get it work with Asp.net on localhost but the command works just fine: C:\inetpub\wwwroot\ffmpeg.exe -i "c:\inetpub\wwwroot\test.flv" -an -y -s 320x240 -ss 00:00:03:00 -vframes 1 -f image2 "c:\inetpub\wwwroot\test.jpg"
HasanGursoy
@HasanGursoy: what is the problem with ASP.NET? Maybe this is security issue?
Alex
@Alex: Exactly. There was no error so I couldn't debug. The output directory must have write permission.
HasanGursoy