ffmpeg -i input_file.mp4 -an -vcodec copy output_file.mp4
Как я могу изменить это на что-то вроде этого ниже?
FFMpeg::fromDisk('local')
->open($filePath.$fileName)
->export()
->toDisk('local')
->inFormat(new \FFMpeg\Format\Video\X264('libmp3lame', 'libx264'))
->save($converted);
1. Какой из них лучше?
Слишком субъективно, зависит от ваших требований. Я бы пошел с .mp4, так как поддержка гораздо лучше в большинстве (современных) браузеров
-i is the input file e.g. input_file.mp4
-an Disable audio recording.
-c is codec. basically -c copy says copy without reencoding
copy ... well, copies to output file e.g. output_file.mp4
-vcodec sets the vide encoder.
При использовании вместе с копией -vcodec это повлияет на соотношение сторон, сохраненное на уровне контейнера, но не на соотношение сторон, сохраненное в закодированных кадрах, если оно существует.
2. Как использовать в Laravel
Несколько вариантов:
Я бы сначала проверил эту библиотеку: https://github.com/pascalbaljetmedia/laravel-ffmpeg
или если вы хотите свернуть свой собственный …
Laravel разветвлен от Symfony, так что вы можете использовать встроенный Runner процесса, найденный здесь: http://symfony.com/doc/current/components/process.html
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
$cmd = 'ffmpeg -i input_file.mp4 -an -vcodec copy output_file.mp4';
$process = new Process($cmd);
$process->run();
// executes after the command finishes
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
echo $process->getOutput();
Других решений пока нет …