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

如何仅从MP4文件中提取音频并将其转换为C#中的FLAC文件?,c#,mp4,audio-recording,flac,audio-converter,C#,Mp4,Audio Recording,Flac,Audio Converter,我的目标是编写C语言,将Microsoft LYNC会议音频转换为文本。 到目前为止,这是我的项目。最初我试着从麦克风录音,保存到WAV,然后将WAV转换成FLAC,然后使用GoogleSpeechAPI将FLAC转换成文本。但我无法将麦克风音频录制为WAV格式 问题是它需要采用非常特定的WAV格式,即int16或int24,以便WAV与WAV到FLAC转换方法一起工作。我一直记录每个样本8位,而不是每个样本(16或24位) 所以,重新开始。Microsoft Lync直接记录会议并将其保存为M

我的目标是编写C语言,将Microsoft LYNC会议音频转换为文本。 到目前为止,这是我的项目。最初我试着从麦克风录音,保存到WAV,然后将WAV转换成FLAC,然后使用GoogleSpeechAPI将FLAC转换成文本。但我无法将麦克风音频录制为WAV格式

问题是它需要采用非常特定的WAV格式,即int16或int24,以便WAV与WAV到FLAC转换方法一起工作。我一直记录每个样本8位,而不是每个样本(16或24位)


所以,重新开始。Microsoft Lync直接记录会议并将其保存为MP4格式的视频。如果我能以某种方式编写代码将MP4转换为FLAC,这也会解决我的问题。有任何代码示例吗?

我最近有一个ASP.NET MVC 5应用程序,我需要将.mp4转换为.webm,并且成功地工作了,因此这是一个应用与视频文件相同的概念的想法,但在本例中,它们将是音频文件

首先,下载可执行文件并将其复制到项目/解决方案中的文件夹中

将音频文件转换为FLAC的命令如下:

ffmpeg -i audio.xxx -c:a flac audio.flac
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();
}
您可以将其封装在C#方法中,以执行FFMPEG,如下所示:

ffmpeg -i audio.xxx -c:a flac audio.flac
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行“过程”缺少装配参考。我需要一个特殊的include语句还是添加一个dll文件?使用系统。Diagnostics@JonathanKittell有没有办法让YouTube视频使用这个功能?