如何合并(混合)两个立体声MP3音频文件
How to merge(Mix) two stereo mp3 audio file
我有两个立体声文件:1.mp3,2.mp3
我想以特殊方式合并这两个音频文件
我的意思是我希望3.mp3是一个立体声文件,在左通道中具有1.mp3,在右通道中的2.mp3
您可以按照以下步骤来实现这一目标:
-
解码1.mp3和2.mp3文件
-
保存解码的原始数据(在不同的波浪格式化文件或内存中)
-
用2.mp3解码的原始数据的第一个或第二个通道值替换1.mp3解码的原始数据的第一个或第二个通道值(请注意,这会导致音频的质量损失)
-
基于合并的音频数据功能
的构造波(原始音频数据格式)标题 创建波浪形成的3. WAV文件,使用构造的Wave标头和合并的音频数据
将3.wav文件转换为3.mp3文件格式
执行以下步骤需要您知道:
-
如何解码mp3文件获取原始数据
-
如何操纵缓冲区中的数据字节
-
Wave声音格式
-
如何将WAV转换为Mp3
对于以不同格式解码和编码音频文件,您可以使用一些适当的声音库(例如低音) - 这可以帮助您完成1和6步。为了构建波浪形成的音频数据,您应该熟悉Wave File格式以及如何在缓冲区中对齐音频数据通道 - 这可以帮助您执行3、4和5步
mp3是压缩音频数据。您无法使用文件操作直接混合它们。您可以做的一件事是使用FFMPEG库将MP3转换为RAW PCM,混合通道,然后将其转换回MP3。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 两个字符串在 c++ 中不相等
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 两个文件使用彼此的功能-如何解决
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 将fold表达式与std::一起用于两个元组
- 如何在C++中比较两个char数组
- 给定两个偶数,求出它们之间所有偶数的平方和
- 比较两个大小不等的映射c++
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 如何在for循环中包含两个索引值的测试条件
- 在声明中合并两个常量"std::set"(不是在运行时)
- 如何合并(混合)两个立体声MP3音频文件