Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# ASP.NET ffmpeg
In my project I am saving videos, converting formats to .swf using ffmpeg. Converting and saving the videos is working fine, but I have a problem with creating the thumbnails. It saves a "picture.jpg" but there is no image. looking at the thumbnail its only got the normal photoviewer sign which is fine, but when I try to open the image it gives a message of
Windows photo viewer: Windows photo viewer cant open this picture because the file appears to be damaged, corrupted, or is too large. (this image is 2.7MB) - Photos taken from my camera is about 5MB and that opens.
 
PictureViewer: couldn't display "image.jpg" because a suitable graphics importer could not be found.
 
Paint: Paint cannot read this file. This is not a valid bitmap file or its format is currently not supported.
The images won't open in any I done to save the image:
 
tring thumbpath, thumbname;
                string thumbargs;
                string thumbre;
                thumbpath = Server.MapPath("~\\uploads\\" + dtYear + "\\" + dtMonth + "\\Thumb\\");
 
                CreateDirectoryIfNotExists(thumbpath);
 
                // Create the path and file name to check for duplicates.
                pathToCheck = thumbpath;
 
                // Create a temporary file name to use for checking duplicates.
                tempfileName = "";
 
                // Check to see if a file already exists with the
                // same name as the file to upload.        
                if (System.IO.File.Exists(pathToCheck))
                {
                    int counter = 2;
                    while (System.IO.File.Exists(pathToCheck))
                    {
                        // if a file with this name already exists,
                        // prefix the filename with a number.
                        tempfileName = thumbpath + counter.ToString() + withoutext + ".jpg";
                        pathToCheck = tempfileName;
                        counter++;
                    }
 
                    outputfile = tempfileName;
                    // Notify the user that the file name was changed.
                    lblMsg.Text = "A file with the same name already exists." +
                        "<br />Your file was saved as " + counter.ToString() + withoutext + ".jpg";
                }
 
                thumbname = thumbpath + withoutext + "%d" + ".jpg";
                Session["thumbname"] = withoutext + "1" + ".jpg";
               // thumbargs = "-i {0} -f image2 frame-%1d.png -y {1};
                thumbargs = "-i " + inputfile + "-f image2 -ss 1.000 -vframes 1 " + thumbName;
                Process thumbproc = new Process();
                thumbproc = new Process();
                thumbproc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
                thumbproc.StartInfo.Arguments = thumbargs;
                thumbproc.StartInfo.UseShellExecute = false;
                thumbproc.StartInfo.CreateNoWindow = false;
                thumbproc.StartInfo.RedirectStandardOutput = false;
                try
                {
                    thumbproc.Start();
                    fuPath.PostedFile.SaveAs(thumbname);
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }
                thumbproc.WaitForExit();
                thumbproc.Close();
 
EDIT:
I've tried these arguments as well, still can't get the image to work...
It saves, just can't open it...
 
//thumbargs = "-i " + inputfile + " -an -ss 00:00:03 -s 120×90 -vframes 1 -f mjpeg " + thumbName;
               // thumbargs = "-i " + inputfile + "-f image2 -ss 1.000 -vframes 1 " + thumbName;
                thumbargs = "-i " + inputfile + " -vframes 1 -ss 00:00:10 -s 150x150 " + thumbName;
 
                //  thumbargs = "ffmpeg -i" + inputfile + " -ss 0:00:01.000 -sameq -vframes 1 " + withoutext + ".jpg";
                //  thumbargs = "-i " + inputfile + " -vframes 1 -ss 00:00:07 -s 150x150 " + thumbName;
 
EDIT:
 
 
I tried adding the argument to the command prompt to see if it works there but it gave me a message of : [NULL @ 000000000025f7a0] Unable to find a suitable output format for &#39;vframes&#39; vframes: invalid argument The line I used:
 
<pre lang="c#">>
ffmpeg -i VID2012.3GP vframes 1 VID2012.jpg
 
EDIT:
I changed a bit of my code. Debugging through my code there is no exception that is thrown, but if I point the mouse over the process (after it started) it "shows an exception of type System.InvalidOperationException"
 
thumbargs = "-i " + postedfilename + " vframes 1" + thumbName;
                ProcessStartInfo thumbProcstartIfo = new ProcessStartInfo();
                thumbProcstartIfo.FileName = @"\ffmpeg\ffmpeg.exe";
                thumbProcstartIfo.Arguments = thumbargs;
                thumbProcstartIfo.UseShellExecute = false;
                thumbProcstartIfo.CreateNoWindow = true;
                thumbProcstartIfo.RedirectStandardOutput = false;
 
                try
                {
                    using (var process = new Process())
                    {
                        process.StartInfo = thumbProcstartIfo;
                        process.Start();
                        process.WaitForExit();
                    }
                }
                catch (InvalidOperationException ex)
                {
                    lblMsg.Text = ex.ToString();
                }
Posted 28-May-13 22:49pm
Edited 30-May-13 2:01am
v7

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

This is simple, but what you really need to is read FFmpeg command-line help paying more attention. It is not as simple as it may look at first glance:
http://www.ffmpeg.org/ffmpeg.html[^].
 
—SA
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 304
1 Sergey Alexandrovich Kryukov 255
2 Shweta N Mishra 216
3 Maciej Los 210
4 PIEBALDconsult 184
0 OriginalGriff 7,660
1 Sergey Alexandrovich Kryukov 7,072
2 DamithSL 5,586
3 Manas Bhardwaj 4,946
4 Maciej Los 4,665


Advertise | Privacy | Mobile
Web03 | 2.8.1411023.1 | Last Updated 30 May 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100