💭
PHP-FFMPEG#動画データの音声を削除する方法、ミュートにする方法
はじめに
PHP-FFMPEGを使って元動画からプレビュー用の動画を生成する際に音声データを消したいことがあったがドキュメントを探しても分からなかったので方法を残しておきます。
方法1
\FFMpeg\Filters\Audio\SimpleFilter(['-an'])
を使う
-an
オプションは音声を削除するFFMpegのオプション
※ -an
ではなく-vn
にすると動画が削除される
$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open($pathfile);
$video->addFilter(new \FFMpeg\Filters\Audio\SimpleFilter(['-an']);
$video->save($format, $outputPathfile);
参考
方法2
音声削除用のフィルターを自作してaddFileter()
に入れる
$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open($pathfile);
$video->addFilter(new VideoMuteFilter();
$video->save($format, $outputPathfile);
class VideoMuteFilter implements VideoFilterInterface
{
/**
* @var int
*/
private int $priority;
/**
* A custom filter, useful if you want to build complex filters
*
* @param int $priority priority
*/
public function __construct(int $priority = 0)
{
$this->priority = $priority;
}
/**
* @return int
*/
public function getPriority(): int
{
return $this->priority;
}
/**
* @param \FFMpeg\Media\Video $video video
* @param \FFMpeg\Format\VideoInterface $format format
* @return array
*/
public function apply(Video $video, VideoInterface $format): array
{
return ['-an'];
}
}
環境
php-ffmpeg: v0.19.0
Discussion