【问题标题】:Converting MP4 to WAV将 MP4 转换为 WAV
【发布时间】:2024-01-01 09:26:01
【问题描述】:

我正在用 Java 创建一个小型音频播放器,可以很好地播放某些格式(例如 WAV)。我发现这是因为javax.sound 不支持 MP4。从我读过的内容来看,从 MP4 转换为 WAV 是无损的,所以我相信这不应该那么困难。我知道有很多第三方库可以做到这一点,但我对下载一个应该相当简单的东西不感兴趣。我已经查看了每个 ISO 的特定 ISO,试图了解数据是如何存储的,以便能够创建 BufferedReaderBufferedWritter 以查看是否可以手动转换它,但我无法找到信息我在寻找。在纯 Java 1.7.0 中执行此操作的方法是什么(我知道 JavaFX 有一个 MediaPlayer,但不幸的是我不能使用 1.8.0)。

或者,如果有人知道我可以在哪里找到构成 MP4 和 WAV 的每个容器的特定容器信息(例如标头大小/信息、数据、ACK/NACK 等)。

【问题讨论】:

  • 是什么让您认为这很简单?这实际上是极其复杂的。 MP4 文件中可能使用的编解码器都经过了数十年的研究。使用现有的编解码器。更好的是,使用 FFmpeg 并让它为您完成所有工作。我不明白你为什么认为你不能使用现有的图书馆。

标签: java audio audio-streaming audio-converter


【解决方案1】:

关于 MP4 到 wav 并没有什么直截了当的地方。拳头,MP4 是一个容器而不是编解码器。因此,您的 MP4 可能包含 wav、mp3、aac、AC3、DD+ 等。所有这些格式都需要不同的解码器才能“转换”为原始 PCM。

【讨论】:

  • 我的 MP4 容器中不会还有一个标头可以说明 wav/mp3/aac 在其中的位置吗?
  • 基本流会被分成很多块,每个块都可以通过解析'stco'原子找到。
  • 谢谢!我能够使用它来获取 mp3,然后将其转换为 PCM。