Почему время обработки ffmpeg такое медленное? - PullRequest
0 голосов
/ 11 ноября 2018

Я использую ffmpeg для конвертации и сжатия видео.Когда я загружаю свой видеофайл, обработка занимает много времени.Видео может быть 1,2 МБ или даже 5,8 МБ или даже 10 МБ, и оно все еще медленное, я просто смотрю на экран, ожидая 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();

Заранее спасибо

1 Ответ

0 голосов
/ 11 ноября 2018

Обработка видео медленная , и единственный надежный способ ускорить его - это потратить на это больше ресурсов, что обычно не стоит. YouTube работает быстро, по крайней мере, отчасти потому, что у него есть ресурсы Google, чего обычно нет у нас с вами, как у меня.

Однако вы можете ускорить восприятие пользователем скорости, переместив обработку видео в очередь сообщений (которую почти наверняка использует и YouTube). Таким образом, запрос будет быстро завершен, и вы сможете обработать очередь в фоновом режиме. Затем, когда он будет завершен, вы сможете соответствующим образом уведомить пользователя, будь то электронное письмо или уведомление через Websockets. Как упоминал Дерек Поллард, у Laravel есть собственная реализация очереди, и вам следует обратиться к документации для этого.

Другим вариантом может быть передача видеообработки выделенному микросервису, и в этом случае микросервису необходимо будет уведомить ваше приложение после завершения обработки. Или есть сторонние сервисы, которые будут делать то же самое, если ваш бюджет это позволяет. Независимо от этого, этот тип задачи лучше всего выполнять асинхронно, а не заставлять пользователя ждать около 20 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...