Перекодировать видео с помощью библиотеки php ffmpeg - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно загрузить видео в 3 форматах / разрешении как 360p, 480p, 720p.

После некоторых исследований я узнал, что есть некоторые платные услуги, такие как Amazone Elastic Transcoder .Но я хочу сделать с открытым исходным кодом, поэтому я нашел FFMPEG .

Также я хочу загрузить видео на Amazon s3 после того, как транскод и видео в большом размере, как видеоможет содержать 1 ГБ .

Я получил библиотеку php для FFMPEG Ссылка на библиотеку

Я установил 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 Ответ

0 голосов
/ 31 июля 2018

Я почти уверен, что вы уже поняли это, но выкладываю это здесь для дальнейшего использования.

// 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');
...