搜索
首页 电脑/网络

详解laravel如何安装FFmpeg并进行视频文件处理

全部回答

2023-04-18

0 0

    Ubuntu 18。04 安装FFmpeg1。下载源码编译安装1。1 下载源码github地址:github。com/PHP-FFMpeg/PHP-FFMpeg1。2 安装依赖的库主要安装三个:yasm ,sdl1。
  2 和 sdl2。0安装 yasmsudo apt-get install yasm安装sdl1。  2sudo apt-get install libsdl1。2-dev安装 sdl2。
  0sudo apt-get install libstdl2-devsudo apt-get install libstdl2-dev如果sdl2。0 安装出现错误的话可以选择编译安装方式:官网下载最新版本: www。
    libsdl。org/download-2。0。php解压后进入到目录中,依次执行以下命令:。/configuremakesudo make install1。3编译安装ffmpeg进入ffmpeg文件夹,依次执行以下命令:。
  /configuremakesudo make install在这里插入图片描述1。  4 测试是否安装成功ffmpeg -versionffplay -versionlaravel 安装PHP-FFMpeg扩展composer require php-ffmpeg/php-ffmpeg基本使用1。
  1、 引入到项目引入完成,它需要制定 两个配置文件信息,以便我们正常使用,也就是上文所讲的 ffmpeg 和 ffprobe1。  2、全局配置到 AppServiceProvider。
  php 中添加代码public function boot() { $this->registerSingleObject(); } private function registerSingleObject() {// $ffmpeg = FFMpeg:create(array(// 'ffmpeg。
    binaries' => '/usr/local/ffmpeg/ffmpeg'// 'ffprobe。binaries' => '/usr/local/ffmpeg/ffprobe'// 'timeout' => 3600, // The timeout for the underlying process// 'ffmpeg。
    threads' => 12, // The number of threads that FFMpeg should use// )); $this->app->singleton('ffmpeg' function ($app) { return FFMpeg:create([ 'ffmpeg。
    binaries' => '/usr/local/ffmpeg/ffmpeg' 'ffprobe。binaries' => '/usr/local/ffmpeg/ffprobe' ]); }); $this->app->singleton('ffprobe' function ($app) { return FFProbe:create([ 'ffprobe。
    binaries' => '/usr/local/ffmpeg/ffprobe' ]); }); }使用单例模式获取 FFMpeg 和 FFProbe 对象,其中 exec('which ffmpeg') 是获取 程序位置信息,以便创建类基础封装举例:视频的第一秒为封面获取视频基础信息<phpnamespace AppHelpers;use FFMpegCoordinateTimeCode;use IlluminateSupportStr;class FFMpegUtil{ // 获取视频信息 public static function getVideoInfo($streamPath) { $ffprobe = app('ffprobe'); $stream = $ffprobe->streams($streamPath)->videos()->first(); return $stream ? $stream->all() : []; } // 截取 public static function getCover($streamPath, $fromSecond) { $ffmpeg = app('ffmpeg'); $video = $ffmpeg->open($streamPath); $frame = $video->frame(TimeCode:fromSeconds($fromSecond)); //提取第几秒的图像 $fileName = 'video/' 。
     Str:random(12) 。 'jpg' if (!is_dir(storage_path("video"))) { mkdir(storage_path("video"), 0777); } $frame->save(storage_path($fileName)); return $fileName; }}业务使用接受 Request 对象传入的 视频 为例子public function saveVideotoQiniu($file) { Auth:loginUsingId(1); if ($user = getUser()) { // 1。
    判断是否存在此视频 $path = $file->getRealPath(); $hash = md5_file($path); $video = Video:firstOrNew(['json->hash' => $hash]); if ($video->id) { $video->touch(); return $video; } // 2。
    保存到 云 $cdn_path = $this->saveFile($file); $db_path = getPath($cdn_path); // 3。获取截图 $fileName = FFMpegUtil:getCover($path, 1); $image = $this->saveImage(new UploadedFile(storage_path($fileName), 'file。
    jpg')); //4。
    设置视频信息 $data = []; $data = FFMpegUtil:getVideoInfo($path); $duration = array_get($data, 'duration'); $duration = $duration > 0 ? ceil($duration) : $duration; $video->path = $db_path; $video->user_id = $user->id; $video->setJsonData('width' array_get($data, 'width')); $video->setJsonData('height' array_get($data, 'height')); $video->duration = $duration; $video->setJsonData('cover' $image->path); $video->save(); } }例子中的 saveImage 是将图片上传到 云端的函数,返回上传后的图片 url更多laravel技术文章,请访问laravel教程栏目!。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
电脑/网络
电脑装机
程序设计
硬件
笔记本电脑
互联网
操作系统/系统故障
软件
反病毒
百度
举报
举报原因(必选):
取消确定举报