Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 为什么ffmpeg处理时间如此之慢?_Laravel_Ffmpeg - Fatal编程技术网

Laravel 为什么ffmpeg处理时间如此之慢?

Laravel 为什么ffmpeg处理时间如此之慢?,laravel,ffmpeg,Laravel,Ffmpeg,我正在使用ffmpeg转换和压缩视频。当我上传视频文件时,需要很长时间来处理。视频可能是1.2mb,甚至5.8mb,甚至10mb,但仍然很慢,我只是在那里盯着屏幕等了20分钟甚至更长时间。我可以做些什么来加快这个过程?如果你需要我为你提供我的代码在这里 $viddy=new Video; $file = $request->file('file'); $fileName =uniqid().$file->getClientOriginalName();

我正在使用ffmpeg转换和压缩视频。当我上传视频文件时,需要很长时间来处理。视频可能是1.2mb,甚至5.8mb,甚至10mb,但仍然很慢,我只是在那里盯着屏幕等了20分钟甚至更长时间。我可以做些什么来加快这个过程?如果你需要我为你提供我的代码在这里

    $viddy=new Video;   
  $file = $request->file('file');   
 $fileName =uniqid().$file->getClientOriginalName();

 $request->file->move(public_path('/app'), $fileName);
            $name_file=uniqid().'video.mp4';
         $ffp=FFMpeg::fromDisk('local')
         ->open($fileName)
    ->addFilter(function ($filters) {
        $filters->resize(new \FFMpeg\Coordinate\Dimension(640, 480));
    })
    ->export()
    ->toDisk('s3')
    ->inFormat(new \FFMpeg\Format\Video\X264('libmp3lame'))

    ->save($name_file);

               $imageName = Storage::disk('s3')->url($name_file);


    $viddy->title=$imageName;
    $viddy->save();
提前感谢

处理视频的速度很慢,而真正提高速度的唯一可靠方法是投入更多资源,这通常是不值得的。YouTube之所以发展迅速,至少部分原因是他们拥有谷歌的资源,而你我这样的人通常都没有

但是,通过将视频处理移动到YouTube几乎肯定也会使用的消息队列,可以加快用户对速度的感知。这样,请求将很快完成,您可以在后台处理队列。然后,当它完成时,您可以以适当的方式通知用户,无论是电子邮件还是通过WebSocket发出的通知。正如Derek Pollard提到的,Laravel有自己的队列实现,您应该参考文档

另一种选择可能是将视频处理交给专用的微服务,在这种情况下,一旦处理完成,微服务将需要通知您的应用程序。或者,如果您的预算允许,第三方服务也会做同样的事情。无论如何,这类任务最好是异步完成的,而不是让用户等待20分钟左右。

处理视频的速度很慢,唯一可靠的加速方法是投入更多资源,这通常是不值得的。YouTube之所以发展迅速,至少部分原因是他们拥有谷歌的资源,而你我这样的人通常都没有

但是,通过将视频处理移动到YouTube几乎肯定也会使用的消息队列,可以加快用户对速度的感知。这样,请求将很快完成,您可以在后台处理队列。然后,当它完成时,您可以以适当的方式通知用户,无论是电子邮件还是通过WebSocket发出的通知。正如Derek Pollard提到的,Laravel有自己的队列实现,您应该参考文档


另一种选择可能是将视频处理交给专用的微服务,在这种情况下,一旦处理完成,微服务将需要通知您的应用程序。或者,如果您的预算允许,第三方服务也会做同样的事情。无论如何,这类任务最好是异步完成,而不是让用户等待20分钟左右。

需要多长时间?你的系统有多快?@James谢谢你的回复,你看到当你在电视上上传视频时,处理速度有多快吗?这就是我想要的。我不应该长时间盯着屏幕等我的视频上传。最重要的是,视频文件甚至都不大YouTube不会在与上传相同的请求中处理视频文件。是的,YouTube很可能只在初始请求时处理上传,然后在后台使用作业队列处理@DerekPollard好的,我现在明白了。需要多长时间?你的系统有多快?@James谢谢你的回复,你看到当你在电视上上传视频时,处理速度有多快吗?这就是我想要的。我不应该长时间盯着屏幕等我的视频上传。最重要的是,视频文件甚至都不大YouTube不会在与上传相同的请求中处理视频文件。是的,YouTube很可能只在初始请求时处理上传,然后在后台使用作业队列处理@DerekPollard好的,我现在明白了。好的,我会试试的。非常感谢。好的,我会试试的。非常感谢。