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

我的目标是编写C#,将Microsoft LYNC会议音频转换为文本。 到目前为止, 这是我的项目。 最初我试图从麦克风录制,将其保存到WAV然后将WAV转换为FLAC并使用GoogleSpeechAPI将FLAC转换为文本。 但我把录音麦克风音频卡在了WAV格式。

问题是它需要采用非常特定的WAV格式,即int或int24,WAV可以使用WAV到FLAC转换方法。 我每个样本记录8位而不是每个样本(16或24位)。

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

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

首先,您将下载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(); }