ffmpeg - 我能把音频通道画成图像吗?

10
我在想是否可以使用ffmpeg将视频或音频文件的音频通道绘制成图像,或者是否有其他工具可以在Win2k8 x64上完成此操作。我正在将其作为用户上传视频或音频文件后编码过程的一部分进行处理。
我正在使用ColdFusion 10处理上传,并调用cfexecute运行ffmpeg。
我需要的图像类似于这样(不包含水平线):

1
这个工具wav2png似乎是专门为此目的而制作的。你只需插入一个WAV文件,就可以得到一个PNG图像。但它只适用于Linux和OS X系统。 - slhck
显然,wave2png 可能在 Windows 上编译。我的 C++ 世界到处都是蛛网。我想知道是否有人在这方面有过任何成功经验。但是,它需要 .wav 文件,可以使用 ffmpeg 创建。不确定。 - Redtopia
2
你可以使用 ffmpeg -i input output.wav 从任何输入获取一个 WAV 文件。 - slhck
我想应该有一种方法可以做到这一点...谢谢! - Redtopia
1个回答

11

你可以很容易地通过编程实现这个功能。

学习FFmpeg的基础知识。我建议你编译这个示例。它解释了如何打开视频/音频、识别流并循环处理数据包。

一旦你有了数据包(在这种情况下,你只关心音频包),你会解码它(文档中的第87行)并获得音频的原始数据。这就是波形本身(音频的模拟“位图”)。

你还可以学习这个示例。这第二个示例是如何写入视频/音频文件。虽然你不想写任何视频,但是通过这个示例,你可以很容易地理解音频原始数据包的工作方式,如果你看到函数get_audio_frame()和write_audio_frame()。

你需要了解如何创建位图。任何平台都有一个简单的方法来做到这一点。

所以,答案是:是的,使用FFmpeg可以实现这个功能!但你必须稍微编写一些代码以获得你想要的结果...

更新:

抱歉,还有内置功能:

你可以使用这些过滤器... 或者

showspectrum、showwaves、avectorscope

这里有一些如何使用它的示例:FFmpeg Filters - 12.22 showwaves


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