I am converting videos to flv using ffmpeg.exe through c# and the process gets stuck and the conversion fails if the file size exceeds 14mb. I’ve tried to run ffmpeg directly through command prompt and it works fine regardless of size.
My conversion code is as follows:
OutputFile = SavePath + "SWF\\" + WithOutExt + ".flv";
FilArgs = string.Format("-i {0} -ar 22050 -qscale 1 {1}",InputFile,OutputFile);
Process proc;
proc = new Process();
try
{
proc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
proc.StartInfo.Arguments = FilArgs;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
string StdOutVideo = proc.StandardOutput.ReadToEnd();
string StdErrVideo = proc.StandardError.ReadToEnd();
}
finally
{
proc.WaitForExit();
proc.Close();
}
When I tried to manually stop the running process The stderroutput is as follows:
FFmpeg version SVN-r21231-Sherpya, Copyright (c) 2000-2010 Fabrice Bellard, et al.
built on Jan 16 2010 05:42:31 with gcc 4.2.5 20080919 (prerelease) [Sherpya]
libavutil 50. 7. 0 / 50. 7. 0
libavcodec 52.47. 0 / 52.47. 0
libavformat 52.47. 0 / 52.47. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.15. 0 / 1.15. 0
libswscale 0. 8. 0 / 0. 8. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ‘C:\Project-Folder-Files\ThirtySecondPitch\video\7.mp_c88a8ec2-3a60-4133-aee6-7e2d93b62324.mp4’:
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
Duration: 00:00:23.13, start: 0.000000, bitrate: 9261 kb/s
Stream #0.0(jpn): Video: mpeg4, yuv420p, 1280×720 [PAR 1:1 DAR 16:9], 9128 kb/s, 30 tbr, 30 tbn, 30 tbc
Stream #0.1(jpn): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
Output #0, flv, to ‘C:\Project-Folder-Files\ThirtySecondPitch\video\SWF\7.mp_c88a8ec2-3a60-4133-aee6-7e2d93b62324.flv’:
Stream #0.0(jpn): Video: flv, yuv420p, 1280×720 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 1k tbn, 30 tbc
Stream #0.1(jpn): Audio: libmp3lame, 22050 Hz, stereo, s16, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 19 fps= 0 q=1.0 size= 596kB time=0.50 bitrate=9839.2kbits/s
frame= 36 fps= 33 q=1.0 size= 1284kB time=1.07 bitrate=9822.2kbits/s
frame= 55 fps= 34 q=1.0 size= 2076kB time=1.70 bitrate=10013.6kbits/s
frame= 74 fps= 35 q=1.0 size= 2819kB time=2.35 bitrate=9822.2kbits/s
frame= 93 fps= 35 q=1.0 size= 3583kB time=2.95 bitrate=9943.3kbits/s
frame= 113 fps= 36 q=1.0 size= 4457kB time=3.63 bitrate=10056.2kbits/s
frame= 132 fps= 36 q=1.0 size= 5157kB time=4.26 bitrate=9922.3kbits/s
frame= 152 fps= 37 q=1.0 size= 5972kB time=4.91 bitrate=9961.6kbits/s
frame= 172 fps= 37 q=1.0 size= 6817kB time=5.62 bitrate=9943.9kbits/s
frame= 192 fps= 37 q=1.0 size= 7676kB time=6.27 bitrate=10030.1kbits/s
frame= 212 fps= 37 q=1.0 size= 8488kB time=6.92 bitrate=10045.9kbits/s
frame= 232 fps= 37 q=1.0 size= 9306kB time=7.58 bitrate=10062.8kbits/s
frame= 251 fps= 37 q=1.0 size= 10150kB time=8.26 bitrate=10072.1kbits/s
frame= 271 fps= 37 q=1.0 size= 10970kB time=8.88 bitrate=10117.6kbits/s
frame= 291 fps= 38 q=1.0 size= 11815kB time=9.56 bitrate=10123.7kbits/s
frame= 311 fps= 38 q=1.0 size= 12625kB time=10.24 bitrate=10100.1kbits/s
frame= 331 fps= 38 q=1.0 size= 13414kB time=10.89 bitrate=10088.0kbits/s
frame= 351 fps= 38 q=1.0 size= 14125kB time=11.55 bitrate=10021.7kbits/s
frame= 371 fps= 38 q=1.0 size= 14929kB time=12.25 bitrate=9983.0kbits/s
frame= 391 fps= 38 q=1.0 size= 15701kB time=12.90 bitrate=9967.8kbits/s
frame= 411 fps= 38 q=1.0 size= 16385kB time=13.56 bitrate=9899.9kbits/s
frame= 431 fps= 38 q=1.0 size= 17137kB time=14.21 bitrate=9878.7kbits/s
frame= 451 fps= 38 q=1.0 size= 17938kB time=14.92 bitrate=9851.7kbits/s
frame= 471 fps= 38 q=1.0 size= 18663kB time=15.57 bitrate=9820.0kbits/s
frame= 491 fps= 38 q=1.0 size= 19379kB time=16.22 bitrate=9786.4kbits/s
frame= 511 fps= 38 q=1.0 size= 20179kB time=16.90 bitrate=9780.9kbits/s
frame= 530 fps= 38 q=1.0 size= 20893kB time=17.53 bitrate=9764.8kbits/s
frame= 550 fps= 38 q=1.0 size= 21633kB time=18.18 bitrate=9747.3kbits/s
frame= 570 fps= 38 q=1.0 size= 22464kB time=18.89 bitrate=9743.5kbits/s
frame= 590 fps= 38 q=1.0 size= 23227kB time=19.54 bitrate=9737.7kbits/s
frame= 609 fps= 38 q=1.0 size= 23992kB time=20.17 bitrate=9745.8kbits/s
frame= 629 fps= 38 q=1.0 size= 24804kB time=20.85 bitrate=9747.4kbits/s
frame= 648 fps= 38 q=1.0 size= 25501kB time=21.45 bitrate=9740.6kbits/s
frame= 668 fps= 38 q=1.0 size= 26306kB time=22.13 bitrate=9739.7kbits/s
frame= 687 fps= 38 q=1.0 size= 27040kB time=22.80 bitrate=9713.2kbits/s
The problem is not in the size of file being converted.
You’re trying to perform two synchronous read to the end of both redirected streams. This may cause a deadlock (my guess: you’ve caught it because of lager file size).
So you should to comment one of these lines:
or read from one of the streams asynchronously.
FYI:
ffmpeguses stderr for logging purposes (suppose, you want to capture the output); and uses stdout to pipe out binary data(multimedia, snapshots, etc.). So I don’t see a real reason for stdout redirection.