PHP利用FFmpeg实现获取远程视频的时长和截图

科技   2025-01-03 15:56   湖南  

 

今天小编就为大家分享一篇关于PHP利用FFmpeg实现获取远程视频的时长和截图,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧。

 

以下是两种PHP利用FFmpeg实现获取远程视频的时长和截图的方法:

方法一:使用命令行方式

<?php
// 远程视频的url
$videourl = 'http://your-video-url/video.mp4';

// 获取视频时长
$durationcommand = "ffmpeg -i {$videourl} 2>&1 | grep 'duration' | cut -d '=' -f 2 | cut -d ',' -f 1";
$durationoutput = shell_exec($durationcommand);
$duration = trim($durationoutput);

// 获取视频截图(这里获取视频第10秒的截图)
$thumbnailtime = 10;
$thumbnailcommand = "ffmpeg -i {$videourl} -ss {$thumbnailtime} -vframes 1 thumbnail.jpg";
shell_exec($thumbnailcommand);

// 输出视频时长
echo "视频时长:"$duration"<br>";
// 可以进一步处理截图文件,比如将其保存到指定目录或在网页上显示等
// 这里只是简单输出截图文件名
echo "视频截图:thumbnail.jpg";
?>

方法二:使用PHP-FFmpeg库

// 引入自动加载文件
require'vendor/autoload.php';

// 创建FFmpeg实例
$ffmpeg = FFMpeg::create();

// 打开远程视频
$video = $ffmpeg->open('https://xxx.mp4');

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

// 获取视频的第一帧并保存为图片
$outputImage = '/data/b.jpg'
$frame = $video->frame(TimeCode::fromSeconds(0));
$frame->save($outputImage'image/jpeg');
echo "视频截图:"$outputImage;

在实际应用中,需要注意对用户输入的视频url进行严格验证和过滤,防止恶意脚本注入等安全问题。

 


精英博客探索
关注热点,传递正能量。
 最新文章