Php 通过 FFmpeg 获取远程视频的时长和截图

突然发现 FFmpeg 这个软件还可以直接拉取远程视频的相关信息,也就是可以不通过下载视频到本地的方式,直接远程去获取视频时长和截图。

假设我们的视频url是:http://my.com/a.mp4

第一步,Linux 安装 FFmpeg 软件

第二步,通过composer安装FFmpeg的库

bash 复制代码
composer require php-ffmpeg/php-ffmpeg

1、获取远程视频时长

php 复制代码
use FFMpeg\FFMpeg;

require 'vendor/autoload.php';

$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open('https://xxx.mp4');

// 获取视频的时长(秒)
$duration = $video->getStreams()->first()->get('duration');

2、获取远程视频的第一帧

php 复制代码
use FFMpeg\Coordinate\TimeCode;
use FFMpeg\FFMpeg;

require 'vendor/autoload.php';

$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open('https://xxx.mp4');

// 获取视频的时长(秒)
$duration = $video->getStreams()->first()->get('duration');

echo $duration;
$outputImage = '/data/b.jpg';  // 替换为您希望保存第一帧的物理路径

// 提取第一帧(默认情况下,FFMpeg库将从视频的开始处获取第一帧)
$frame = $video->frame(TimeCode::fromSeconds(0));
         
// 将第一帧保存到指定的图像文件
$frame->save($outputImage, 'image/jpeg');

经测试,以上过程的调用,并不需要完全把视频下载到本地再解析,可以实现远程获取直接秒级返回!

相关推荐
微涼5301 小时前
【Python】在使用联网工具时需要的问题
服务器·python·php
jwn9992 小时前
Laravel5.x核心特性全解析
android·php·laravel
复园电子3 小时前
KVM与Hyper-V虚拟化环境:彻底解决USB外设映射掉线的底层架构优化
开发语言·架构·php
让学习成为一种生活方式4 小时前
国家水稻数据中心--随笔024
php
weixin199701080165 小时前
《米思米商品详情页前端性能优化实战》
前端·性能优化·php
lingggggaaaa6 小时前
PHP原生开发篇&文件安全&上传监控&功能定位&关键搜索&1day挖掘
android·学习·安全·web安全·php
李李李勃谦7 小时前
Flutter 框架跨平台鸿蒙开发 - 正则测试应用
flutter·华为·php·harmonyos
高山流水&上善8 小时前
基于BERT情感分析与多维度可视化的B站热门视频评论分析系统
人工智能·bert·音视频
jwn9998 小时前
Laravel 7.x核心特性全解析
php·laravel
QJtDK1R5a8 小时前
V4L2 vs GStreamer vs FFmpeg:Linux多媒体处理的三个层级
linux·运维·ffmpeg