我正在尝试使用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();
答案 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();