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

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

相关推荐
DeepFlow 零侵扰全栈可观测7 分钟前
民生银行云原生业务的 eBPF 可观测性建设实践
运维·开发语言·分布式·云原生·金融·php
chao18984415 分钟前
基于 C# 实现 P2P 视频聊天工具
c#·音视频·p2p
寻星探路32 分钟前
深度解析网络编程套接字:从 Socket 底层原理到 Java 高性能实战
java·网络·人工智能·python·机器学习·php
weixin_4368040734 分钟前
在线媒体预览工具 - 免下载查看图片视频音频PDF
pdf·音视频·媒体
BingoGo44 分钟前
PHP 异步与多线程 从 TrueAsync 展望未来
后端·php
JaguarJack1 小时前
PHP 异步与多线程 从 TrueAsync 展望未来
后端·php·服务端
郑州光合科技余经理10 小时前
技术架构:上门服务APP海外版源码部署
java·大数据·开发语言·前端·架构·uni-app·php
以太浮标13 小时前
华为eNSP模拟器综合实验之-BGP路由协议的配置解析
服务器·开发语言·php
EasyCVR14 小时前
做融合通信项目总卡壳?EasyCVR如何破解视频项目困局?
音视频
liuhaikang19 小时前
鸿蒙VR视频播放库——md360player
音视频·vr·harmonyos