我需要一个工具来连接2个mp3文件在1.
第一个文件(背景)将是一些声音(音乐,由用户提交),第二个文件将是一个机器(google)说话的文本,这是由用户提交的。
在输出中我需要一个mp3文件,背景音乐和会说话的机器人文本一起播放。
我真的找不到任何PHP独立的解决方案,比如一些库或类似的东西,只有shell命令。
有一些库吗?
或者有一些独特的shell命令可以在所有操作系统上组合文件?
或者我如何完成任务?
基于这个问题,您应该能够将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的工作方式进行了假设,因此您可能需要查阅文档,以便构建一个功能正常或更有效的命令集。
你可以这样做
file_put_contents('combined.mp3',
file_get_contents('file1.mp3') .
file_get_contents('file2.mp3'));