Laravel ffmpeg编码无法转换失败

时间:2018-10-08 15:56:20

标签: laravel ffmpeg

我正在尝试使用FFmpeg转换视频,但是却收到一条错误消息,提示编码失败。我不确定我的编码方式是否可能错误。我就像一个人来看看我的代码,看看我是否做错了什么。这是我的代码

    $viddy=new Video;


        if($request->video){
            $my_video = $request->file('video');
          $video_name = uniqid().$my_video->getClientOriginalName();

     $ffmpeg = FFMpeg\FFMpeg::create([
    'ffmpeg.binaries'  => "C:/Users/jayjay/Desktop/ffmpeg/ffmpeg/bin/ffmpeg.exe",
    'ffprobe.binaries' => "C:/Users/jayjay/Desktop/ffmpeg/ffmpeg/bin/ffprobe.exe"
]);



        $videoName = Storage::disk('s3')->url($video_name);

$video = $ffmpeg->open($videoName);


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

                         //Save format to amasonS3
$video->save($format, Storage::disk('s3')->url('newvideo.mp4'));

        //Put the new video format in the database
          $viddy->video = $video;
        }

                $viddy->save();

1 个答案:

答案 0 :(得分:1)

您似乎在错误地调用save()方法,这可能是错误的结果。同样,打开文件时,使此包使用Facade可能会使事情变得更容易。像这样尝试:

$video = FFMpegFacade::fromDisk('s3')->open($folder . '/' . $filename)

...

$video->export()->toDisk('s3')->inFormat($format)->save($folder . '/' . $new_filename);

将视频保存到数据库是另一回事。如果要保存视频的原始数据,可以进行序列化和base64编码等。但是,由于将其存储到磁盘,通常更容易保存视频的路径:

$viddy->video = $folder . '/' . $new_filename;
$viddy->save();