PHP后端获取视频元数据信息_PHP视频元数据信息获取

星夢妙者
发布: 2025-10-12 19:44:01
原创
1039人浏览过
使用FFmpeg的ffprobe组件可获取视频元数据,通过PHP执行系统命令调用ffprobe并解析JSON输出,提取时长、分辨率、编码格式等信息,需注意文件路径安全与命令注入防护。

php后端获取视频元数据信息_php视频元数据信息获取

在PHP后端开发中,获取视频文件的元数据(如时长、分辨率、编码格式、帧率、比特率等)是常见的需求,比如用于视频上传校验、信息展示或转码准备。虽然PHP本身不直接支持解析视频元数据,但可以通过调用外部工具 FFmpeg 来实现。

使用FFmpeg获取视频元数据

FFmpeg 是一个强大的多媒体处理工具,能够读取几乎所有常见视频格式的详细信息。PHP 可以通过执行系统命令调用 ffprobe(FFmpeg 的组件)来获取结构化数据。

确保服务器已安装 FFmpeg,并且 PHP 有权限执行系统命令。

示例:使用 ffprobe 获取 JSON 格式的元数据

$videoPath = '/path/to/your/video.mp4';
$command = "ffprobe -v quiet -print_format json -show_format -show_streams '{$videoPath}'";
$output = shell_exec($command);
$metadata = json_decode($output, true);

// 输出结果示例
print_r($metadata);
登录后复制

解析关键元数据字段

返回的 JSON 数据包含多个层级,以下是常用信息的提取方式:

立即学习PHP免费学习笔记(深入)”;

千面视频动捕
千面视频动捕

千面视频动捕是一个AI视频动捕解决方案,专注于将视频中的人体关节二维信息转化为三维模型动作。

千面视频动捕 27
查看详情 千面视频动捕
  • 视频时长(秒)$metadata['format']['duration'] ?? null
  • 总文件大小(字节$metadata['format']['size'] ?? null
  • 比特率(bit/s)$metadata['format']['bit_rate'] ?? null

遍历流信息获取视频轨道:

foreach ($metadata['streams'] as $stream) {
    if ($stream['codec_type'] === 'video') {
        $width = $stream['width'];
        $height = $stream['height'];
        $fps = eval($stream['r_frame_rate']); // 如 "30/1" 转为 30
        $codec = $stream['codec_name'];
        $rotation = $stream['tags']['rotate'] ?? 0;
        break;
    }
}
登录后复制

封装成工具函数

可将功能封装为复用函数,便于项目调用:

function getVideoMetadata($filePath) {
    if (!file_exists($filePath)) {
        return ['error' => '文件不存在'];
    }

    $command = "ffprobe -v quiet -print_format json -show_format -show_streams '" . escapeshellcmd($filePath) . "'";
    $output = shell_exec($command);

    $data = json_decode($output, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return ['error' => '解析失败'];
    }

    return $data;
}
登录后复制

调用示例:

$meta = getVideoMetadata('./uploads/demo.mp4');
echo "视频时长:" . $meta['format']['duration'] . " 秒\n";
echo "分辨率:{$meta['streams'][0]['width']}x{$meta['streams'][0]['height']}\n";
登录后复制

注意事项与安全建议

  • 使用 escapeshellcmd() 防止命令注入,尤其是路径来自用户输入时
  • 限制允许解析的文件路径范围,避免敏感目录访问
  • 考虑设置执行超时,防止大文件长时间阻塞
  • 生产环境建议配合缓存机制,避免重复调用 ffprobe
基本上就这些。只要 FFmpeg 正确安装,PHP 就能高效获取视频元数据。

以上就是PHP后端获取视频元数据信息_PHP视频元数据信息获取的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号