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');

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

相关推荐
YYDataV数据可视化11 小时前
音视频呼叫完整时序图
音视频
m0_7381207211 小时前
sqli-labs过关解析(17- 20附带源码解析)
数据库·sql·web安全·php·ctf·安全性测试
mseaspring12 小时前
35.7k Star的开源项目,用Claude Code 调用Remotion 以编程的方式自动生成视频
音视频
BryanGG14 小时前
[教程]通用稳定器运镜技巧
音视频·稳定器·运镜
lucky670714 小时前
Laravel 9.x LTS重磅升级:六大核心改进
java·php·laravel
YYDataV数据可视化14 小时前
【音视频通话系统】架构详解
音视频·webrtc·实时音视频
linux_cfan15 小时前
打造智慧校园视听新基建:高校与在线教育平台 Web 视频播放器选型指南 (2026版)
前端·学习·音视频·教育电商
Zhu_S W15 小时前
Java图论基础:有向图与无向图详解
开发语言·php
lucky670716 小时前
Laravel5.x核心特性全解析
mysql·php·laravel
lucky670716 小时前
Laravel 10.X 新特性全解析
php·laravel