FFMpeg 合并音视频文件

FFMpeg Merge audio and video files

我需要合并一个音频 (.mp3) 和视频 (.mov) 文件并使用 FFMpeg PHP 库输出一个 mp4 文件。

以下作品:

$ffmpeg = \FFMpeg\FFMpeg::create([
    'ffmpeg.binaries'  => 'C:/ffmpeg/bin/ffmpeg.exe',
    'ffprobe.binaries' => 'C:/ffmpeg/bin/ffprobe.exe'
]);

/* Open video file */
$video = $ffmpeg->open('sample.mov');

/* Resize video */
$video
    ->filters()
    ->resize(new \FFMpeg\Coordinate\Dimension(320, 240))
    ->synchronize();

/* Take screenshot from video */
$video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('screen.jpg');

然而这并不是我所需要的。 下面的命令行代码正是我要找的,但我不知道如何将它转换成与上面相同的格式($ffmpeg 版本)。

exec("ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4");

问题: 任何人都知道如何将 exec 转换为上面的 PHP?

谢谢大家。

你能试试完整路径吗

$cmd = 'C:\ffmpeg\bin\ffmpeg.exe -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4';
exec($cmd, $output)

看起来它没有在 PHP-FFMPEG 包中实现,你必须那样做。

https://github.com/PHP-FFMpeg/PHP-FFMpeg/issues/346#issuecomment-292701054

没有明确的 PHP-FFMPEG 函数,但可以构建您的自定义命令。

这里是一个合并 PNG 图像和 MP3 文件生成 MP4 视频的示例。

$ffmpeg = \FFMpeg\FFMpeg::create();
$advancedMedia = $ffmpeg->openAdvanced(['image.png', 'audio.mp3']);
$advancedMedia->map([], new \FFMpeg\Format\Video\X264('aac', 'libx264'), 'output.mp4')->save();

文档的更多详细信息in the "AdvancedMedia" paragraph