我有一个工具可以在1中加入2个mp3文件。
第一个文件(背景)将是一些声音(音乐,由用户提交), 第二个文件将是一个mashine(谷歌)说话文本,由提交(由用户)。
在输出中我需要一个单独的mp3文件,背景音乐和说话机器人文本可以播放到其中。
我无法真正找到任何PHP独立解决方案,如某些库或类似的东西,只有shell命令atc。
还有一些图书馆吗?
或者有一些独特的shell命令可以在所有操作系统上合并文件吗?
或者我如何完成任务?
答案 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'));