如何在C#中从MP4文件中提取音频并将其转换为FLAC文件?

5
我的目标是编写C#代码,将Microsoft LYNC会议音频转换为文本。 这里是我的项目。最初,我尝试从麦克风录制音频,将其保存为WAV文件,然后将WAV文件转换为FLAC文件,并使用GoogleSpeechAPI将FLAC文件转换为文本。但是我卡在了如何将麦克风音频录制成符合要求的WAV格式上。 问题在于它需要非常特定的WAV格式,即int16或int24格式才能与WAV到FLAC转换方法一起使用。我一直在以每个样本8位的方式录制,而不是(16或24位)每个样本。 所以,重新开始。Microsoft Lync直接记录会议并将其保存为MP4格式的视频。如果我能想办法编写代码将MP4转换为FLAC,那么也可以解决我的问题。有任何代码示例吗?
1个回答

8
我最近有一个ASP.NET MVC 5应用程序,需要将.mp4文件转换为.webm格式,这个方法已经成功实现了,所以可以尝试将同样的概念应用于音频文件。
首先,您需要下载FFMPEG可执行文件,并将其复制到项目/解决方案中的某个文件夹内。
将音频文件转换为FLAC的命令可能如下所示:
ffmpeg -i audio.xxx -c:a flac audio.flac

您可以将此代码包装在 C# 方法内,以这样的方式执行 FFMPEG:
public string PathToFfmpeg { get; set; }    

public void ToFlacFormat(string pathToMp4, string pathToFlac)
{
    var ffmpeg = new Process
    {
        StartInfo = {UseShellExecute = false, RedirectStandardError = true, FileName = PathToFfmpeg}
    };

    var arguments =
        String.Format(
            @"-i ""{0}"" -c:a flac ""{1}""", 
            pathToMp4, pathToFlac);

    ffmpeg.StartInfo.Arguments = arguments;

    try
    {
        if (!ffmpeg.Start())
        {
            Debug.WriteLine("Error starting");
            return;
        }
        var reader = ffmpeg.StandardError;
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            Debug.WriteLine(line);
        }
    }
    catch (Exception exception)
    {
        Debug.WriteLine(exception.ToString());
        return;
    }

    ffmpeg.Close();
}

第 5 行缺少“process”程序集引用。我需要一个特殊的包含语句或添加一个 dll 文件吗? - Awesome_girl
使用 System.Diagnostics - Jonathan Kittell
@JonathanKittell 有办法让它与 YouTube 视频一起使用吗? - J86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接