使用PHP ffmpeg库转码视频

4

我需要上传视频,分别有360p、480p和720p三种格式/分辨率。

经过一些研究,我了解到有一些付费服务,比如Amazon Elastic Transcoder。但是我想使用开源软件,所以我找到了FFMPEG

另外,我想在转码后将视频上传到Amazon s3,因为视频可能很大,例如1GB

我找到了FFMPEG的PHP库Library Link

我已经安装了FFMPEG,并成功生成了新视频。但是我无法弄清楚如何生成不同的格式/分辨率,如360p、480p和720p

我的示例代码如下:

        error_reporting(E_ALL);
        ini_set('display_errors', 1);

        require 'vendor/autoload.php';

        //$ffmpeg = FFMpeg\FFMpeg::create();
        $video = $ffmpeg->open('assets/small.mp4');
        $video
            ->filters()
            ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
            ->synchronize();
        $video
            ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(2))
            ->save('assets/frame.jpg');

        $format = new FFMpeg\Format\Video\X264();
        $format->setAudioCodec("libmp3lame");

        $video->save($format, 'assets/new.mp4');

有人能为我提供一种方法,让我如何实现这个目标吗?

1个回答

4

我相信你已经理解了这一点,但我将其放在这里供以后参考。

// Create the formats in Kilo Bitrates
$_360p = (new FFMpeg\Format\Video\X264('libmp3lame'))->setKiloBitrate(500);
$_480p = (new FFMpeg\Format\Video\X264('libmp3lame'))->setKiloBitrate(750);
$_720p = (new FFMpeg\Format\Video\X264('libmp3lame'))->setKiloBitrate(1500);
// Open the video file
$video = $ffmpeg->open('assets/small.mp4')
                // Add all formats
                ->addFormat($_360p)
                ->addFormat($_480p)
                ->addFormat($_720p)
                // call the 'save' method with a filename...
                ->save('assets/new.mp4');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接