从wav中提取视频中的音频

Joh*_*ers 3 c++ audio video extract

我知道有一个类似于我的问题:从视频文件中提取wav文件

我是C++的新手,了解COM库+视频和音频需要directX.我一直在寻找教程和示例代码,但收效甚微.

我的问题是如何编写应用程序以获取视频文件(任何类型)并将提取的音频保存为我的应用程序中的.wav,而不是使用其他应用程序,如graphedit或virtualdub?

小智 5

你不能使用像ffmpeg或它使用的库之一吗?或者也许mencoder,它可以做同样的事情.据我所知,他们都有一个命令行界面,他们可能也有一些API ...


Jas*_*n B 5

我将通过动议仅使用 ffmpeg 的构建来执行音频提取。它可以通过一个简单的命令完成,而不是很可能需要数百行代码(如果您要检查处理不同视频格式和编解码器时可能发生的所有可能问题)。

ffmpeg -i video.avi -vn soundfile.wav
Run Code Online (Sandbox Code Playgroud)

您可以使用 libavformat 和 libavformat(ffmpeg 后面的库)来做同样的事情,但除非您需要在输出到 wav 之前对原始音频进行一些处理,否则除了知识之外没有任何收获。

ffmpeg 很好,因为可执行文件包含您可能需要的所有音频和视频解码器,因此该解决方案具有高度可移植性。你没有安装编解码器或任何东西。输入视频文件可以是 ffmpeg 支持的任何格式或编解码器,您不必费心在代码中对它们进行不同的处理。

从 C++ 中,您可以通过在代码中构建命令行字符串并从代码中启动该过程来调用 ffmpeg(作为新的 C++,您可能需要研究如何执行此操作,但这很容易)。