• C#中使用FFMPEG切割、合并视频。


    参考网址:https://blog.csdn.net/samwang_/article/details/70332924

    使用前先确保电脑已经安装了FFMPEG,并且配置好环境变量。检测是否安装配置好的方法:在cmd中输入ffmpeg

    class FFMEPG
    {
    //视频切割
    public string Cut(string OriginFile/*视频源文件*/, string DstFile/*生成的文件*/, TimeSpan startTime/*开始时间*/, TimeSpan endTime/*结束时间*/)
    {
    string strCmd = "-ss 00:00:10 -i " + OriginFile + " -ss " +
    startTime.ToString() + " -t " + endTime.ToString() + " -vcodec copy " + DstFile + " -y ";

    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "ffmpeg.exe";//要执行的程序名称
    p.StartInfo.Arguments = " " + strCmd;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = false;//可能接受来自调用程序的输入信息
    p.StartInfo.RedirectStandardOutput = false;//由调用程序获取输出信息
    p.StartInfo.RedirectStandardError = false;//重定向标准错误输出
    p.StartInfo.CreateNoWindow = false;//不显示程序窗口


    p.Start();//启动程序


    p.WaitForExit();//等待程序执行完退出进程

    if (System.IO.File.Exists(DstFile))
    {
    return DstFile;
    }
    return "";
    }
    //视频合并
    public string Combine(string File1, string File2, string DstFile)
    {
    string strTmp1=File1+".ts";
    string strTmp2 = File2 + ".ts";
    string strCmd1 = " -i " + File1 + " -c copy -bsf:v h264_mp4toannexb -f mpegts " + strTmp1 + " -y ";
    string strCmd2 = " -i " + File2 + " -c copy -bsf:v h264_mp4toannexb -f mpegts " + strTmp2 + " -y ";


    string strCmd = " -i "concat:" + strTmp1 + "|" +
    strTmp2 + "" -c copy -bsf:a aac_adtstoasc -movflags +faststart " + DstFile + " -y ";


    //转换文件类型,由于不是所有类型的视频文件都支持直接合并,需要先转换格式
    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "ffmpeg.exe";//要执行的程序名称
    p.StartInfo.Arguments = " " + strCmd1;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = false;//可能接受来自调用程序的输入信息
    p.StartInfo.RedirectStandardOutput = false;//由调用程序获取输出信息
    p.StartInfo.RedirectStandardError = false;//重定向标准错误输出
    p.StartInfo.CreateNoWindow = false;//不显示程序窗口


    p.Start();//启动程序
    p.WaitForExit();


    //转换文件类型,由于不是所有类型的视频文件都支持直接合并,需要先转换格式
    p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "ffmpeg.exe";//要执行的程序名称
    p.StartInfo.Arguments = " " + strCmd2;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = false;//可能接受来自调用程序的输入信息
    p.StartInfo.RedirectStandardOutput = false;//由调用程序获取输出信息
    p.StartInfo.RedirectStandardError = false;//重定向标准错误输出
    p.StartInfo.CreateNoWindow = false;//不显示程序窗口


    p.Start();//启动程序
    p.WaitForExit();


    //合并
    p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "ffmpeg.exe";//要执行的程序名称
    p.StartInfo.Arguments = " " + strCmd;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = false;//可能接受来自调用程序的输入信息
    p.StartInfo.RedirectStandardOutput = false;//由调用程序获取输出信息
    p.StartInfo.RedirectStandardError = false;//重定向标准错误输出
    p.StartInfo.CreateNoWindow = false;//不显示程序窗口


    p.Start();//启动程序


    //向CMD窗口发送输入信息:
    // p.StandardInput.Write("ipconfig");


    //string output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();//等待程序执行完退出进程
    //-ss表示搜索到指定的时间 -i表示输入的文件 -y表示覆盖输出 -f表示强制使用的格式


    if (System.IO.File.Exists(DstFile))
    {
    return DstFile;
    }
    return "";
    }
    }
     
     

  • 相关阅读:
    百度地图代码API
    3层下拉列表
    stl+数论——1247D
    数论+乱搞——cf181B
    思维+multiset优化——cf1249E
    线性基思想+贪心——cf1249C
    tarjan求强连通+缩点——cf1248E
    排序+模拟+优先队列——cf1248E
    栈+括号序列+暴力枚举——cf1248D1
    二分+贪心——cf1251D
  • 原文地址:https://www.cnblogs.com/zxtceq/p/10130610.html
Copyright © 2020-2023  润新知