phpffmpegffmpeg-php

FFMpeg Merge audio and video files


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.


Solution

  • 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