원문  : http://osskorea.tistory.com/133



FFMPEG(http://www.ffmpeg.org/)를 사용하여 ASP.NET에서 썸네일을 만든다거나 클래스를 만들고 해당 동영상이 들어오면 영상파일을 다른 포맷으로 압축하여 저장한다던지 할 때 필요한 예제이다.
예외처리나 안전하게 활용할 수 있는 코드처리는 안되어 있고 아래 첨부한 출처와 파일에서 좀 더 활용 가능한 전체 클래스 소스를 소개하였다. (테스트에 사용한 프레임워크 : 닷넷 프레임워크 4.0)

1. 필요한 파일은 ffmpeg.ext pthreadGC2.dll SDL.dll 이다.

2. 웹프로젝트를 만들고 다음과 같이 코딩하여 테스트 하여 본다.
        protected void Button1_Click(object sender, EventArgs e)
        {
            // 프레임 미리보기 (쎰네일)
            var video = Page.MapPath("test1.mpg"); //source
            var thumb = Page.MapPath("") + "\\frame.jpg"; //target
            var ffmpeg = new Process
            {
                StartInfo =
                    {
                        Arguments = " -i \"" + video + "\" -s 108*80  -vframes 1 -f image2 -vcodec mjpeg \"" + thumb + "\"", FileName = Page.MapPath("ffmpeg.exe")
                    }
            };
            ffmpeg.StartInfo.UseShellExecute = false;
            ffmpeg.StartInfo.CreateNoWindow = true;
            ffmpeg.StartInfo.RedirectStandardOutput = false;
            ffmpeg.Start(); //return true/false
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            //파일변환
            var video = Page.MapPath("test1.mpg"); //source
            var mpg = Page.MapPath("") + "\\video.mpg"; //target
            var ffmpeg = new Process
            {
                StartInfo =
                {
                    Arguments = " -i \"" + video + "\" -target vcd \"" + mpg + "\"",
                    FileName = Page.MapPath("ffmpeg.exe")
                }
            };
            ffmpeg.StartInfo.UseShellExecute = false;
            ffmpeg.StartInfo.CreateNoWindow = true;
            ffmpeg.StartInfo.RedirectStandardOutput = false;
            ffmpeg.Start(); //return true/false
        }

        //함수로 만들어서 사용하는 예
        public void Convert(string sourcevideo)
        {
            var formatedvideo = DateTime.Now.Ticks + ".flv";
            // video = Page.MapPath("test.wmv");
            var mpg = Page.MapPath("~/Videos/") + formatedvideo;
            var ffmpeg = new Process
            {
                StartInfo =
                    {
                        Arguments = " -i \"" + sourcevideo + "\" -target vcd \"" + mpg + "\"",
                        FileName = Page.MapPath("~/ffmpeg/ffmpeg.exe"),
                        CreateNoWindow = true,
                        UseShellExecute = false
                    }
            };
            ffmpeg.StartInfo.UseShellExecute = false;
            ffmpeg.StartInfo.CreateNoWindow = true;
            ffmpeg.StartInfo.RedirectStandardOutput = false;
            ffmpeg.Start();


by SJ.. 2012. 6. 8. 11:17