C# Winfrom使用ffmpeg转换视频格式

  //视频转码
        private void VideoConverter()
        {
            filelen = 0;
            ListView lv = listView1;

            for (int i = 0; i < lv.Items.Count; i++)
            {
                if (lv.Items[i].SubItems[3].Text != "已完成")
                {
                    Process p = new Process();

                    p.StartInfo.FileName = path + "ffmpeg";

                    //p.StartInfo.FileName = path + "ffmpeg.exe";

                    p.StartInfo.UseShellExecute = false;
                    string srcFileName = "";
                    string destFileName = "";
                    string newFileName = "";
                    string mbgs = "." + comboBox2.SelectedItem.ToString();

                    srcFileName = lv.Items[i].SubItems[1].Text;
                    newFileName = lv.Items[i].SubItems[0].Text.Split('.')[0];

                    destFileName = "\"" + label3.Text + "\\" + newFileName + DateTime.Now.ToString("yyyyMMddhhmmss");

                    p.StartInfo.Arguments = "-i " + srcFileName + " -y  -vcodec h264 -b 500000 " + destFileName + mbgs + "\"";    //执行参数

                    p.StartInfo.UseShellExecute = false;  不使用系统外壳程序启动进程
                    p.StartInfo.CreateNoWindow = true;  //不显示dos程序窗口

                    p.StartInfo.RedirectStandardInput = true;

                    p.StartInfo.RedirectStandardOutput = true;

                    p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中

                    p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);

                    p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);

                    p.StartInfo.UseShellExecute = false;

                    p.Start();

                    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

                    p.BeginErrorReadLine();//开始异步读取

                    p.WaitForExit();//阻塞等待进程结束

                    p.Close();//关闭进程

                    p.Dispose();//释放资源
                    setState(i);//更新文件状态
                    filelen += 1;//已转换文件数量
                }
            }

        }



下面是压缩前后的文件大小及画质对比


压缩前

压缩后



源码下载

猜你喜欢

转载自blog.csdn.net/wu_zongwen/article/details/79496431