【问题标题】:How to merge(Mix) two stereo mp3 audio file如何合并(混合)两个立体声 mp3 音频文件
【发布时间】:2019-05-19 13:45:00
【问题描述】:

我有两个立体声文件:1.mp3、2.mp3

我想以特殊方式合并这两个音频文件

我的意思是我希望 3.mp3 是一个立体声文件,它的左声道有 1.mp3,右声道有 2.mp3

【问题讨论】:

  • 您需要对 mp3 数据进行解码、混合,然后再次对其进行编码,不能只混合压缩数据。
  • 是的,这是可能的,但它比用胶带和打包线将两个文件粘在一起更难。
  • this question 的答案建议使用一个名为 mp3wrap 的工具。
  • 如果您不介意质量略有下降,您也可以将它们都转换为原始文件,加入原始文件并转换回 mp3。
  • @immibis 如何混合原始文件?

标签: c++ c audio mp3 voice


【解决方案1】:

您可以通过以下步骤实现:

  1. 解码 1.mp3 和 2.mp3 文件

  2. 保存解码后的原始数据(在不同的 WAVE 格式文件或内存中)

  3. 将 1.mp3 解码原始数据的第一或第二通道值逐一替换为 2.mp3 解码原始数据的第一或第二通道值(注意这会导致音频质量损失)

    李>
  4. 根据合并后的音频数据特征构造WAVE(raw audio data format) header

  5. 使用构造的 WAVE 标头和合并的音频数据创建 WAVE 格式的 3.wav 文件

  6. 将 3.wav 文件转换为 3.mp3 文件格式

执行这些步骤需要您知道:

  • 如何解码 mp3 文件以获取原始数据

  • 如何操作缓冲区中的数据字节

  • WAVE 声音文件格式

  • 如何将 wav 转换为 mp3

要解码和编码不同格式的音频文件,您可以使用一些适当的声音库(例如BASS) - 这可以帮助您完成 1 和 6 步。要构建 WAVE 格式的音频数据,您应该熟悉 WAVE File Format 以及音频数据通道如何在缓冲区中对齐 - 这可以帮助您完成 3、4 和 5 步

【讨论】:

    【解决方案2】:

    mp3 是压缩的音频数据。您不能使用文件操作直接混合它们。 您可以做的一件事是使用 ffmpeg 库将 mp3 转换为原始 PCM,混合通道,然后将其转换回 mp3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2016-05-22
      • 2012-03-02
      相关资源
      最近更新 更多