<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jesal gadhia &#187; ffmpeg</title>
	<atom:link href="http://jesal.us/tag/ffmpeg/feed/" rel="self" type="application/rss+xml" />
	<link>http://jesal.us</link>
	<description></description>
	<lastBuildDate>Fri, 19 Mar 2010 05:32:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to manipulate video in .NET using ffmpeg (updated)</title>
		<link>http://jesal.us/2008/04/how-to-manipulate-video-in-net-using-ffmpeg-updated/</link>
		<comments>http://jesal.us/2008/04/how-to-manipulate-video-in-net-using-ffmpeg-updated/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 18:25:55 +0000</pubDate>
		<dc:creator>J</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[ffmpeg]]></category>

		<guid isPermaLink="false">http://jesal.us/blog/?p=86</guid>
		<description><![CDATA[Based on the reader comments on my previous entry on this topic I was able to fix some of the issues that others were experiencing.
I changed how the output is read, instead of reading the entire stream at once, its now read line-by-line as ErrorDataReceived and OutputDataReceived events are raised. Also added an extra option [...]]]></description>
			<content:encoded><![CDATA[<p>Based on the reader comments on my <a href="http://www.calistomind.com/2008/03/12/how-to-manipulate-video-in-net-using-ffmpeg/">previous entry</a> on this topic I was able to fix some of the issues that others were experiencing.</p>
<p>I changed how the output is read, instead of reading the entire stream at once, its now read line-by-line as ErrorDataReceived and OutputDataReceived events are raised. Also added an extra option in the command line (-ar 44100) to explicitly set the audio frequency to default since it wasn&#8217;t being applied to some video formats resulting in an error. And lastly, the console window is now set as hidden.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode">
<span class="kwrd">private</span> <span class="kwrd">void</span> ConvertVideo(<span class="kwrd">string</span> srcURL, <span class="kwrd">string</span> destURL)
{
    <span class="kwrd">string</span> ffmpegURL = “~/project/tools/ffmpeg.exe”;
    DirectoryInfo directoryInfo = <span class="kwrd">new</span> DirectoryInfo(Path.GetDirectoryName(Server.MapPath(ffmpegURL)));

    ProcessStartInfo startInfo = <span class="kwrd">new</span> ProcessStartInfo();
    startInfo.FileName = Server.MapPath(ffmpegURL);
    startInfo.Arguments = <span class="kwrd">string</span>.Format(“-i \”{0}\” -aspect 1.7777 -ar 44100 -f flv \”{1}\”", srcURL, destURL);
    startInfo.WorkingDirectory = directoryInfo.FullName;
    startInfo.UseShellExecute = <span class="kwrd">false</span>;
    startInfo.RedirectStandardOutput = <span class="kwrd">true</span>;
    startInfo.RedirectStandardInput = <span class="kwrd">true</span>;
    startInfo.RedirectStandardError = <span class="kwrd">true</span>;
    startInfo.CreateNoWindow = <span class="kwrd">true</span>;
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;

    <span class="kwrd">using</span> (Process process = <span class="kwrd">new</span> Process())
    {
        process.StartInfo = startInfo;
        process.EnableRaisingEvents = <span class="kwrd">true</span>;
        process.ErrorDataReceived += <span class="kwrd">new</span> DataReceivedEventHandler(process_ErrorDataReceived);
        process.OutputDataReceived += <span class="kwrd">new</span> DataReceivedEventHandler(process_OutputDataReceived);
        process.Exited += <span class="kwrd">new</span> EventHandler(process_Exited);

        <span class="kwrd">try</span>
        {
            process.Start();
            process.BeginErrorReadLine();
            process.BeginOutputReadLine();
            process.WaitForExit();
        }
        <span class="kwrd">catch</span> (Exception ex)
        {
            lblError.Text = ex.ToString();
        }
        <span class="kwrd">finally</span>
        {
            process.ErrorDataReceived -= <span class="kwrd">new</span> DataReceivedEventHandler(process_ErrorDataReceived);
            process.OutputDataReceived -= <span class="kwrd">new</span> DataReceivedEventHandler(process_OutputDataReceived);
            process.Exited -= <span class="kwrd">new</span> EventHandler(process_Exited);
        }
    }
}
<span class="kwrd">void</span> process_OutputDataReceived(<span class="kwrd">object</span> sender, DataReceivedEventArgs e)
{
    <span class="kwrd">if</span> (e.Data != <span class="kwrd">null</span>)
    {
        lblStdout.Text += e.Data.ToString() + “&lt;br /&gt;”;
    }
}
<span class="kwrd">void</span> process_ErrorDataReceived(<span class="kwrd">object</span> sender, DataReceivedEventArgs e)
{
    <span class="kwrd">if</span> (e.Data != <span class="kwrd">null</span>)
    {
        lblStderr.Text += e.Data.ToString() + “&lt;br /&gt;”;
    }
}
<span class="kwrd">void</span> process_Exited(<span class="kwrd">object</span> sender, EventArgs e)
{
    <span class="rem">//Post-processing code goes here</span>
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://jesal.us/2008/04/how-to-manipulate-video-in-net-using-ffmpeg-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to manipulate video in .NET using ffmpeg</title>
		<link>http://jesal.us/2008/03/how-to-manipulate-video-in-net-using-ffmpeg/</link>
		<comments>http://jesal.us/2008/03/how-to-manipulate-video-in-net-using-ffmpeg/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 06:02:04 +0000</pubDate>
		<dc:creator>J</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[ffmpeg]]></category>

		<guid isPermaLink="false">http://jesal.us/blog/2008/03/12/how-to-manipulate-video-in-net-using-ffmpeg/</guid>
		<description><![CDATA[In this case I&#8217;m resizing the video and converting it to FLV format. For more ffmpeg commandline options - http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html


private void ConvertVideo(string srcURL, string destURL)
{
    string ffmpegURL = "~/project/tools/ffmpeg.exe";
    DirectoryInfo directoryInfo = new DirectoryInfo(Path.GetDirectoryName(Server.MapPath(ffmpegURL)));

    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = Server.MapPath(ffmpegURL);
    [...]]]></description>
			<content:encoded><![CDATA[<p>In this case I&#8217;m resizing the video and converting it to FLV format. For more ffmpeg commandline options - <a href="http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html">http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html</a></p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode">
<span class="kwrd">private</span> <span class="kwrd">void</span> ConvertVideo(<span class="kwrd">string</span> srcURL, <span class="kwrd">string</span> destURL)
{
    <span class="kwrd">string</span> ffmpegURL = <span class="str">"~/project/tools/ffmpeg.exe"</span>;
    DirectoryInfo directoryInfo = <span class="kwrd">new</span> DirectoryInfo(Path.GetDirectoryName(Server.MapPath(ffmpegURL)));

    ProcessStartInfo startInfo = <span class="kwrd">new</span> ProcessStartInfo();
    startInfo.FileName = Server.MapPath(ffmpegURL);
    startInfo.Arguments = <span class="kwrd">string</span>.Format(<span class="str">"-i \"{0}\" -s 368x216 -aspect 1.7777 \"{1}\""</span>, srcURL, destURL);
    startInfo.WorkingDirectory = directoryInfo.FullName;
    startInfo.UseShellExecute = <span class="kwrd">false</span>;
    startInfo.RedirectStandardOutput = <span class="kwrd">true</span>;
    startInfo.RedirectStandardInput = <span class="kwrd">true</span>;
    startInfo.RedirectStandardError = <span class="kwrd">true</span>;

    <span class="kwrd">using</span> (Process process = <span class="kwrd">new</span> Process())
    {
        process.StartInfo = startInfo;

        <span class="kwrd">try</span>
        {
            process.Start();
            StreamReader standardOutput = process.StandardOutput;
            StreamWriter standardInput = process.StandardInput;
            StreamReader standardError = process.StandardError;
            process.WaitForExit();

            lblError.Text = standardError.ReadToEnd();
            lblOutput.Text = standardOutput.ReadToEnd();
        }
        <span class="kwrd">catch</span> (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jesal.us/2008/03/how-to-manipulate-video-in-net-using-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
