【问题标题】:Transcode video with php ffmpeg library使用 php ffmpeg 库对视频进行转码
【发布时间】:2019-06-28 04:28:14
【问题描述】:

我需要上传 3 种格式/分辨率的视频,例如 360p、480p、720p。

经过一些研究,我知道有一些付费服务,例如 Amazone Elastic Transcoder。但我想做开源,所以我找到了 FFMPEG

我还想在转码后将视频上传到 Amazon s3 并且视频尺寸很大,比如视频可能包含 1GB 大小。

我有 FFMPEG Library Link

的 php 库

我已经安装了 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');

任何人都可以建议我如何实现这一目标吗??

【问题讨论】:

    标签: php amazon-s3 ffmpeg ffmpeg-php


    【解决方案1】:

    我很确定您已经知道了这一点,但我将其放在这里以供将来参考。

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

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2020-09-24
      • 2020-09-28
      • 2011-12-23
      • 1970-01-01
      • 2010-12-26
      相关资源
      最近更新 更多