You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg或PHP将不同格式编码的音频合并为单个MP3文件

合并不同编码音频文件的实现方案

一、使用FFmpeg直接合并

对于MP3、WAV、FLAC这类不同编码格式的音频文件,无法用你之前的concat协议方式合并,需要使用concat音频滤镜,对应你提到的视频示例,只需去掉视频相关参数即可。

示例命令(合并3个不同格式音频)

ffmpeg -i sample1.mp3 -i sample2.wav -i sample3.flac \
-filter_complex "[0:a][1:a][2:a]concat=n=3:a=1:v=0[outa]" \
-map "[outa]" -c:a libmp3lame -write_xing 0 merged.mp3

参数说明

  • -i:依次指定每个要合并的音频文件,有几个文件就加几个-i参数
  • -filter_complex "[0:a][1:a][2:a]concat=n=3:a=1:v=0[outa]":
    • [0:a]/[1:a]/[2:a]分别对应第1、2、3个输入文件的音频流
    • n=3:表示参与合并的音频文件总数
    • a=1:指定输出1条合并后的音频流
    • v=0:明确不需要处理视频流(因为我们只合并音频)
    • [outa]:给合并后的音频流命名,方便后续映射输出
  • -map "[outa]":指定输出文件使用这个合并后的音频流
  • -c:a libmp3lame -write_xing 0:设置输出编码为MP3,你可以根据需求替换:
    • 输出FLAC:-c:a flac
    • 输出WAV:-c:a pcm_s16le(或省略编码参数,默认会用无损PCM编码)

二、通过PHP调用FFmpeg实现合并

如果要在PHP项目中集成这个功能,可通过执行系统命令调用FFmpeg,示例代码如下:

<?php
// 待合并的音频文件列表(可替换为用户上传的文件路径)
$audioList = ['sample1.mp3', 'sample2.wav', 'sample3.flac'];
$fileCount = count($audioList);

// 构建FFmpeg输入参数,自动转义文件名防止命令注入
$inputParts = [];
foreach ($audioList as $file) {
    $inputParts[] = "-i " . escapeshellarg($file);
}
$inputCmd = implode(' ', $inputParts);

// 构建concat滤镜参数
$streamLabels = [];
for ($i = 0; $i < $fileCount; $i++) {
    $streamLabels[] = "$i:a";
}
$filterCmd = "[".implode("][", $streamLabels)."]concat=n=$fileCount:a=1:v=0[outa]";

// 输出文件路径
$outputFile = 'merged_audio.mp3';

// 完整FFmpeg命令
$ffmpegCmd = "ffmpeg $inputCmd -filter_complex '$filterCmd' -map '[outa]' -c:a libmp3lame -write_xing 0 ".escapeshellarg($outputFile);

// 执行命令并检查结果
exec($ffmpegCmd, $outputLogs, $returnCode);
if ($returnCode === 0) {
    echo "音频合并完成,输出文件:{$outputFile}";
} else {
    echo "合并失败,错误信息:".implode("\n", $outputLogs);
}
?>

注意事项

  • 确保服务器已安装FFmpeg,并且PHP拥有执行系统命令的权限
  • 对用户上传的文件名必须用escapeshellarg()转义,避免命令注入风险
  • 可根据业务需求调整输出音频格式和编码参数

内容的提问来源于stack exchange,提问作者sonam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:35:14