使用FFMPEG / Splicer和C#

时间:2016-09-23 14:06:42

标签: c# video ffmpeg splicer

我一直在尝试开发一个C#应用程序很长一段时间,它打算在服务器上运行。它从数据库中获取信息并使用它制作视频。我一直在为那个porpuse(Aforge)使用库。但现在看起来我必须使用FFMPEG将5 mp4合二为一。我的问题是:

  1. 我是否必须从下载中“执行”exe文件才能使其正常工作?或者我可以像其他库一样使用dll(比如Aforge)?

  2. FFMPEG对我来说非常复杂。我一直在尝试使用Splicer。我很乐意使用非常漂亮和干净的example。但我不能让Splicer工作。我正在使用VS 13.我的Splicer如何工作?将dll添加到“调试文件夹”然后只添加引用?如果是这样的dll?

  3. 到目前为止,这是我的代码。它没有显示任何错误,但它没有做任何事情(我将引用和splicer.dll添加到我的项目中)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Splicer;
    using Splicer.Renderer;
    using Splicer.Timeline;
    
    namespace MergeVideos
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
                string firstVideoFilePath = @"C:\file1.avi";
                string secondVideoFilePath = @"C:\file2.avi";
                string outputVideoPath = @"C:\output.avi";
    
                using (ITimeline timeline = new DefaultTimeline())
                {
                    IGroup group = timeline.AddVideoGroup(32, 720, 576);
    
                    var firstVideoClip = group.AddTrack().AddVideo(firstVideoFilePath);
                    var secondVideoClip = group.AddTrack().AddVideo(secondVideoFilePath, firstVideoClip.Duration);
    
                    using (AviFileRenderer renderer = new AviFileRenderer(timeline, outputVideoPath))
                    {
                        renderer.Render();
                    }
                }
    
            }
        }
    }
    

    提前致谢!

1 个答案:

答案 0 :(得分:0)

所以我一直在研究这个问题,我想就我的问题发表一个答案,这个答案并不是很受欢迎。

  1. 您不必执行exe或添加任何dll引用来获取ffmpeg,您只需通过命令行执行unziped exe,如下所示:

    var p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Arguments = "/k ffmpeg -f concat -i mylist.txt -c copy output";
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true;
    p.Start();
    
    1. FFMPEG并不复杂,您只需阅读一些文档并查看一些示例。网络上有很多信息和示例代码。