如何在PHP中混合/合并2个mp3文件?

时间:2015-07-06 18:42:43

标签: php mp3

我有一个工具可以在1中加入2个mp3文件。

第一个文件(背景)将是一些声音(音乐,由用户提交), 第二个文件将是一个mashine(谷歌)说话文本,由提交(由用户)。

在输出中我需要一个单独的mp3文件,背景音乐和说话机器人文本可以播放到其中。

我无法真正找到任何PHP独立解决方案,如某些库或类似的东西,只有shell命令atc。

还有一些图书馆吗?

或者有一些独特的shell命令可以在所有操作系统上合并文件吗?

或者我如何完成任务?

2 个答案:

答案 0 :(得分:2)

基于this question,您应该能够将FFMPEG安装到您的服务器上(希望不是共享主机?)并使用

//Reduce background volume, assuming it's input2.mp3
shell_exec('ffmpeg -i input2.mp3 -af "volume=0.3" backround.wav');
//Merge the two
shell_exec('ffmpeg -y -i input1.mp3 -i background.wav -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3');

然后您可以简单地提供output.mp3文件。如果这是由在apache(或其他Web主机,而不是CLI)下运行的PHP执行的,那么您需要确保您的www-data用户具有对输入文件的读访问权限,并对输出进行写访问。目录

您的所有临时输出(如背景)都应保存为.wav,并且只能转换回.mp3以获得最终输出。在每一步重新压缩音频可能会导致最终输出非常差。

我正在假设FFMPEG如何在这里工作,因此您可能需要查阅它的文档,以便构建一组功能更强大或更有效的命令。

答案 1 :(得分:-1)

你可以简单地这样做

file_put_contents('combined.mp3',
file_get_contents('file1.mp3') .
file_get_contents('file2.mp3'));