c# - 使用 ffmpeg 在 c# asp.net 中合并视频

标签 c# asp.net merge ffmpeg

是否可以在 ffmpeg 的帮助下通过 c#asp.net 合并两个视频。在 ffmpeg 文档中,他们给了我们 cat 命令。但它不会在 asp.net 中工作。我以为它只适用于linux。

cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg

asp.net 执行此命令但没有输出。帮我。
namespace demo
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Button2_Click(object sender, EventArgs e)
        {
            string strFile = "cars1.flv";
            MergeFiles(strFile);
        }

        public void MergeFiles(string strFile)
        {
            string strParam;
            string Path_FFMPEG = Server.MapPath("~/ffmpeg/bin/ffmpeg.exe");

            //Converting a video into mp4 format
            string strOrginal = Server.MapPath("~/Videos/");
            strOrginal = strOrginal + strFile;
            string strConvert = Server.MapPath("~/Videos/ConvertedFiles/");
            string strExtn = Path.GetExtension(strOrginal);
            if (strExtn != ".mp4")
            {
                strConvert = strConvert + strFile.Replace(strExtn, ".mp4");
                strParam  = "-i " + strOrginal + " " + strConvert;
                //strParam = "-i " + strOrginal + " -same_quant " + strConvert;
                process(Path_FFMPEG, strParam);
            }

            //Merging two videos               
            String video1 = Server.MapPath("~/Videos/Cars1.mp4");
            String video2 = Server.MapPath("~/Videos/ConvertedFiles/Cars2.mp4");
            String strResult = Server.MapPath("~/Videos/ConvertedFiles/Merge.mp4");
            //strParam = "-loop_input -shortest -y -i " + video1 + " -i " + video2 + " -acodec copy -vcodec mjpeg " + strResult;

            strParam = " -i " + video1 + " -i " + video2 + " -acodec copy -vcodec mjpeg " + strResult;

            process(Path_FFMPEG, strParam);
        }

        public void process(string Path_FFMPEG, string strParam)
        {
            try
            {
                Process ffmpeg = new Process();
                ProcessStartInfo ffmpeg_StartInfo = new ProcessStartInfo(Path_FFMPEG, strParam);
                ffmpeg_StartInfo.UseShellExecute = false;
                ffmpeg_StartInfo.RedirectStandardError = true;
                ffmpeg_StartInfo.RedirectStandardOutput = true;
                ffmpeg.StartInfo = ffmpeg_StartInfo;
                ffmpeg_StartInfo.CreateNoWindow = true;
                ffmpeg.EnableRaisingEvents = true;
                ffmpeg.Start();
                ffmpeg.WaitForExit();
                ffmpeg.Close();
                ffmpeg.Dispose();
                ffmpeg = null;
            }
            catch (Exception ex)
            {

            }
        }

    }
}

最佳答案

最后我找到了我自己问题的答案。

以下方法解决了我的问题。

public void MergeFiles(string strFile)
        {
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.FileName = Server.MapPath("~/app.bat");
            p.Start();
            p.WaitForExit();
            p.Dispose();
        }

应用程序.bat

app.bat 包含以下代码。
copy e:\cars1.mpg /b + e:\cars2.mpg /b e:\output.mpg /b

注意:这仅适用于 Windows。这就是“cat”命令不起作用的原因。我们使用复制命令代替“cat”命令。

关于c# - 使用 ffmpeg 在 c# asp.net 中合并视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450255/

相关文章:

asp.net - 如何在转发器中找到一个 div/panel 并应用 css?

asp.net - 使用发布和 .dll .编译文件部署 ASP.NET 网站

java - 合并两个排序列表,但我的头没有更新 - Java

r - 将列从一个数据帧合并到另一个数据帧(left_join 不起作用)- rstudio

merge - 使用日期字段的 Mailchimp 条件合并标签不起作用

c# - 使用 LINQ 将项目移动到列表顶部

c# - 将 IEnumerable 转换为数组会导致数组为空

c# - 按发件人电子邮件地址查找电子邮件 - 过滤器语法

c# - 如何使用linq查询对象的子对象

c# - 在将 CamelCase 转换为带空格的字符串时忽略现有空格