📜  在 laravel 中上传视频 - PHP (1)

📅  最后修改于: 2023-12-03 15:07:42.403000             🧑  作者: Mango

在 Laravel 中上传视频

在 Laravel 中上传视频可以使用 Laravel 自带的文件上传功能及一些第三方包。本文将介绍两种方式:使用 Laravel 自带文件上传功能和使用第三方包上传视频。

使用 Laravel 自带文件上传功能

在 Laravel 中使用文件上传功能需要使用表单中的 file 类型 input。我们可以使用 Laravel 提供的 Illuminate\Http\Request 类来获取上传的文件。我们需要在表单里设置 enctypemultipart/form-data 类型,告知服务器我们将上传二进制数据。

如下是一个上传视频的表单:

<form action="/upload" method="POST" enctype="multipart/form-data">
   <input type="file" name="video">
   <input type="submit" value="上传">
</form>

在 Laravel 的 Controller 中可以使用如下代码获取上传的视频:

public function upload(Request $request)
{
    $video = $request->file('video');
    if ($video) {
        // 上传视频成功
    } else {
        // 上传视频失败
    }
}
使用第三方包上传视频

如果使用 Laravel 自带文件上传功能不能满足我们的需求,我们可以考虑使用第三方包。既然是上传视频,我们不妨使用 ffmpeg 工具来处理视频。我们可以使用 PHP-FFMpeg 第三方包来集成 ffmpeg 工具。

composer require php-ffmpeg/php-ffmpeg

使用 PHP-FFMpeg 可以轻松地获取视频的信息、转码、裁剪、剪辑等功能,例如,我们可以使用以下代码来获取视频时长:

use FFMpeg\FFProbe;

$durationInSeconds = FFProbe::create()
    ->format('your/video.mkv')
    ->get('duration');

我们可以使用以下代码来上传视频:

use FFMpeg\FFMpeg;

public function upload(Request $request)
{
    $video = $request->file('video');
    if ($video) {
        $ffmpeg = FFMpeg::create();
        $videoFile = $ffmpeg->open($request->file('video'));
        $videoFile->save('path/to/directory/new-file-name.mp4');
        // 上传视频成功
    } else {
        // 上传视频失败
    }
}
总结

以上就是在 Laravel 中上传视频的两种方式:使用 Laravel 自带文件上传功能和使用第三方包。根据项目的需求来选择合适的方式。