laravel7使用pbmedia/laravel-ffmpeg扩展怎么使用公网上的视频进行抽帧,详细说明
时间: 2024-03-16 07:43:28 浏览: 107
laravel-ffmpeg:该软件包提供与FFmpeg的Laravel集成。 Laravel的文件系统处理文件的存储
使用 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 信息。
阅读全文