0
votes

I need to Merge an audio (.mp3) and video (.mov) file and output an mp4 file using FFMpeg PHP library.

The following works:

$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');

However it's not quite what I need. The following command line code is exactly what I'm looking for but I can't figure out how to convert it into the same format as the above ($ffmpeg version).

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

Question: Anyone know how to convert the exec into PHP above?

Thanks guys.

1
No need for -strict experimental unless your ffmpeg is a thousand years old.llogan
Thanks @llogan I've removed it. Have you used the \FFMpeg\FFMpeg library? How to run this exec command it appears to do nothing when runDonal.Lynch.Msc
No, sorry. Only familiar with the ffmpeg command-line tool.llogan

1 Answers

1
votes

Can you try with full paths

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

Looks like its not implemented in PHP-FFMPEG package, you have to do it that way.

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