.net C# Windows Forms使用FFMPEG更改视频格式没有响应

fykwrbwg  于 2023-05-23  发布在  .NET
关注(0)|答案(1)|浏览(221)

我试图使一个exe程序改变视频格式使用FFMPEG而不是在终端。格式化的视频将保存在下载文件夹中。我已经尝试了下面的代码,没有得到任何输出响应。我想知道我是否正确地使用了process()和StartInfo,作为我发现的示例和文档只是让我感到困惑。我已经仔细检查了ffmpeg.exe是否在bin文件夹中,StartInfo()只是用于获取信息,它位于Process()下。这就是为什么Process()可以访问信息并使用Start()启动进程的原因。请帮助并纠正我的理解。下面是我的部分代码:

private void convertButton_Click(object sender, EventArgs e)
    {
        String input = filepathTextBox.Text;
        String outputResolution = resolutionLabel.Text;
        String output;
        String outputFileType;
        int inputLength = input.Length;
        int l = 0;
        for (int i = (inputLength - 1); inputLength > -1; i--)
        {
            if (input[i] == '.')
            {
                l = i;
                break;
            }
        }
        output = input.Substring(0, l - 1);
        outputFileType = input.Substring(l + 1, inputLength - 1);
        Process process = new Process();
        process.StartInfo.UseShellExecute = true;
        process.StartInfo.FileName = "ffmpeg.exe";
        process.StartInfo.WorkingDirectory = @"C:\Users\User\Downloads\ffmpeg-2023-05-15-git-2953ebe7b6-full_build\bin";
        process.StartInfo.Arguments = "ffmpeg -i" + @"C:\Users\User\Downloads\file_example_MP4_640_3MG.mp4" + "-s 320x240 -r 25 -b:v 500000 -pix_fmt yuv420p -c:v libx264     -vprofile baseline -level  2.1 -x264opts  stitchable=1:level=3.0:keyint=15:ref=1:merange=16:mvrange=32 -acodec pcm_s16le -ar 16000 -ac 1" + @"C:\Users\User\Downloads\440.mp4";
        process.Start();
    }

输出:“myprogram.exe(CoreCLR:clrhost):已加载“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.15\System.Diagnostics.Process.dll”。已跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。“线程0x79e0已退出,代码为0(0x0)。

1aaf6o9v

1aaf6o9v1#

论证应该是这样的

$"-i {input} -s 320x240 -r 25 -b:v 500000 -pix_fmt yuv420p -c:v libx264 -vprofile baseline -level 2.1 -x264opts  stitchable=1:level=3.0:keyint=15:ref=1:merange=16:mvrange=32 -acodec pcm_s16le -ar 16000 -ac 1 {output}",

当文件名被分配时。一旦进程被启动,进程将转到以下路径,并使用命令(参数)执行exe文件。
对于上面的代码,我在ffmpeg exe中执行ffmpeg。这就是为什么它没有工作。

相关问题