如何使用hhxsv5/laravel-s的异步任务队列

如果你还没有安装hhxsv5/laravel-s,可以跳转去安装
laravel下安装laravels以及websocket的使用

此特性依赖Swoole的AsyncTask,必须先设置config/laravels.php的swoole.task_worker_num。异步任务的处理能力受Task进程数影响,需合理设置task_worker_num

创建任务类

<?php
/**
 * Created by PhpStorm.
 * User: wxiangqian
 */
namespace App\Tasks;

use Hhxsv5\LaravelS\Swoole\Task\Task;
use Illuminate\Support\Facades\Log;

class TestTask extends Task
{
   
    private $data;
    private $result;
    public function __construct($data)
    {
   
使用 pbmedia/laravel-ffmpeg 扩展可以很方便地对视频进行处理,包括抽帧、转码等。下面是使用公网上的视频进行抽帧的详细步骤: 1. 安装扩展包 在 Laravel 项目中通过 Composer 安装 pbmedia/laravel-ffmpeg 扩展包: ``` composer require pbmedia/laravel-ffmpeg ``` 2. 配置环境变量 在 .env 文件中添加以下环境变量: ``` FFMPEG_BINARY=/usr/bin/ffmpeg FFPROBE_BINARY=/usr/bin/ffprobe ``` 根据自己的实际情况修改 FFMPEG_BINARY 和 FFPROBE_BINARY 的值。 3. 创建抽帧任务 在 app/Jobs 目录下创建一个抽帧任务,例如 CreateThumbnailsJob。在任务类的 handle 方法中编写抽帧逻辑,例如: ```php use FFMpeg; class CreateThumbnailsJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $videoUrl; public function __construct($videoUrl) { $this->videoUrl = $videoUrl; } public function handle() { $ffmpeg = FFMpeg::create(); $video = $ffmpeg->open($this->videoUrl); $duration = $video->getDuration(); for ($i = 0; $i < $duration; $i += 10) { $video->frame(TimeCode::fromSeconds($i)) ->save(public_path('thumbnails/' . $i . '.jpg')); } } } ``` 以上代码会将视频的每 10 秒抽出一帧作为缩略图,并保存到 public/thumbnails 目录下。 4. 调用抽帧任务 在需要抽帧的地方调用 CreateThumbnailsJob 任务,例如: ```php use App\Jobs\CreateThumbnailsJob; $url = 'http://example.com/video.mp4'; CreateThumbnailsJob::dispatch($url); ``` 以上代码会在后台异步执行抽帧任务。 注意事项: * 如果视频文件比较大,可能需要设置 PHP 和 FFMpeg 的内存限制,以防止内存溢出。 * 如果公网上的视频需要登录或者携带 Token 才能访问,需要在代码中添加相应的登录或者 Token 信息。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值