首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ffmpeg连接两个视频。

使用ffmpeg连接两个视频。
EN

Stack Overflow用户
提问于 2016-10-03 18:59:35
回答 3查看 982关注 0票数 0
代码语言:javascript
复制
     string strParam;          
        string Path_FFMPEG = @"C:\Windows\system32\cmd.exe";
        string WorkingDirectory = @"C:\Users\Braintech\documents\visual studio 2013\Projects\convertVideo\convertVideo";            
        string command1 = "ffmpeg -i video1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts";
        string command2 = "ffmpeg -i video2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts";
        string command3 = "ffmpeg -i" + "concat:intermediate1.ts|intermediate2.ts" + " -c copy -bsf:a aac_adtstoasc Output.mp4";
        string Command = @"" + command1 + " & " + command2 + " & " + command3 + " ";      

        strParam = "ffmpeg -f concat -i " + file + " -c copy " + strResult;

        process(Path_FFMPEG, Command, WorkingDirectory);
   public static void process(string Path_FFMPEG, string Command, string WorkingDirectory)
    {
        try
        {           

            Process ffmpeg = new Process();
            ProcessStartInfo ffmpeg_StartInfo = new ProcessStartInfo(Path_FFMPEG, Command);
            ffmpeg_StartInfo.WorkingDirectory = WorkingDirectory;              
            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(30000);              
            ffmpeg.Close();
            ffmpeg.Dispose();
            ffmpeg = null;
        }
        catch (Exception ex)
        {

        }
    }

我正在尝试合并两个视频使用ffmpeg。但是,当我手动在cmd上运行该命令时,它可以手动运行,但无法使用c# code.it works执行。但是当我尝试使用c#来运行时,它不是works.Please来帮助别人。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-10-03 19:06:04

基本上,不要试图将其加载到数组中。对于大文件,您应该有一系列采用路径或StreamFile()方法重载,并知道如何操作。例如:

代码语言:javascript
复制
return File("/TestVideo/Wildlife.wmv", "video/x-ms-wmv");

或者:

代码语言:javascript
复制
return File(videoPath, "video/x-ms-wmv");

然而,视频实际上是一个特例,可能会从更专业的处理中受益。

票数 1
EN

Stack Overflow用户

发布于 2016-10-03 19:30:19

返回byte数组实际上是行不通的。

因此,与其将整个视频作为byte数组返回,为什么不将其保存在某个地方(例如:您的Web API),如果它还没有保存为文件,并将视频URI作为响应发送回来?

您将要使用的视频播放器肯定知道如何处理该URI。

另一种选择是在Web API中启用206 PARTIAL CONTENT支持,并在视频播放器中使用Web API的URI。

查看此处https://stackoverflow.com/a/33634614/2528907

票数 0
EN

Stack Overflow用户

发布于 2021-11-05 18:38:18

问题出在路径。您应该在命令中提供文件路径

下面的代码可能会有所帮助

其中mylist.txt文件包含

文件“01.mp4”文件“04.mp4”

代码语言:javascript
复制
Dim _ffmpeg As String = "D:\Develop\Experiment\mergermp4Vb\mergermp4Vb\Videos\ffmpeg.exe"
 Dim   params = "-f concat -i D:\Develop\Experiment\mergermp4Vb\mergermp4Vb\Videos\mylist2.txt -c copy D:\Develop\Experiment\mergermp4Vb\mergermp4Vb\Videos\0104.mp4"
    Dim _FFmpegProcessPropertys As New ProcessStartInfo
    _FFmpegProcessPropertys.FileName = _ffmpeg

    _FFmpegProcessPropertys.Arguments = params
    _FFmpegProcessPropertys.UseShellExecute = False
    _FFmpegProcessPropertys.RedirectStandardOutput = True
    _FFmpegProcessPropertys.RedirectStandardError = True
    _FFmpegProcessPropertys.CreateNoWindow = True
    Dim FFmpegProcess = Process.Start(_FFmpegProcessPropertys)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39830015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档