ffmpeg - 如何从laravel中的视频中删除音频

时间:2018-03-15 06:17:25

标签: php laravel audio video ffmpeg

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 个答案:

答案 0 :(得分:1)

<强> 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派生的,因此您可以使用此处的内置Process 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();