PHP利用ffmpeg获取音频、视频的详细信息

 更新时间:2024年01月17日 10:01:08   作者:下页、再停留  
这篇文章给大家介绍了使用PHP利用ffmpeg获取音频、视频的详细信息,音视频总时长、码率、视频分辨率、音频编码、音频采样频率、实际播放时间、文件大小,文中给出详细的代码示例,具有一定的参考价值,需要的朋友可以参考下

一、目的

使用PHP利用ffmpeg获取音频、视频的详细信息,音视频总时长、码率、视频分辨率、音频编码、音频采样频率、实际播放时间、文件大小。

二、下载并安装ffmpeg

1、下载地址:https://www.ffmpeg.org/

2、解压放到项目下,文件夹下有三个exe

三、PHP代码

说明:ffmpeg 更换成自己实际存放地址;

getVideoInfo()方法有三个判断,分别是获取音视频基本信息(音视频时长、音视频秒数、开始时间、码率等),视频信息(视频编码、视频格式、视频分辨率、视频尺寸),音频信息(音频编码、音频采样频率)、音视频文件大小

/**
 * 获取音视频基本信息
 */
public function getVideoInfo($file)
{
	 $command = sprintf('E:/phpstudy_pro/WWW/test/public/ffmpeg/bin/ffmpeg -i "%s" 2>&1', $file);  //你的ffmpeg路径
 
	 ob_start();
	 passthru($command);
	 $info = ob_get_contents();
	 ob_end_clean();
 
	 $data = array();
	 if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $info, $match)) {
         $data['duration'] = $match[1]; //播放时间
         $arr_duration = explode(':', $match[1]);
         $data['seconds'] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //转换播放时间为秒数
         $data['start'] = $match[2]; //开始时间
         $data['bitrate'] = $match[3]; //码率(kb)
     }
     if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) {
         $data['vcodec'] = $match[1]; //视频编码格式
         $data['vformat'] = $match[2]; //视频格式
         $data['resolution'] = $match[3]; //视频分辨率
         $arr_resolution = explode('x', $match[3]);
         $data['width'] = $arr_resolution[0];
         $data['height'] = $arr_resolution[1];
     }
     if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) {
         $data['acodec'] = $match[1]; //音频编码
         $data['asamplerate'] = $match[2]; //音频采样频率
     }
     if (isset($data['seconds']) && isset($data['start'])) {
         $data['play_time'] = $data['seconds'] + $data['start']; //实际播放时间
     }
     $data['size'] = filesize($file); //文件大小
     return $data;
}
 
/**
 * 调用
 */
public function video()
{
	// 定义视频路径
	$videoPath = 'E:/phpstudy_pro/WWW/test/public/uploads/8秒.mp4';
	$video_info = $this->getVideoInfo($videoPath);
	echo '<pre>';
    print_r($video_info);
}

四、运行结果

以上就是PHP利用ffmpeg获取音频、视频的详细信息的详细内容,更多关于PHP ffmpeg获取音频信息的资料请关注脚本之家其它相关文章!

相关文章

  • PHP实现的多进程控制demo示例

    PHP实现的多进程控制demo示例

    这篇文章主要介绍了PHP实现的多进程控制demo,涉及php信号处理与进程控制相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • 在PHP中养成7个面向对象的好习惯

    在PHP中养成7个面向对象的好习惯

    在 PHP 编程早期,PHP 代码在本质上是限于面向过程的。过程代码 的特征在于使用过程构建应用程序块。过程通过允许过程之间的调用提供某种程度的重用。
    2010-01-01
  • PHP SM4加密的实现

    PHP SM4加密的实现

    这篇文章主要为大家详细介绍了PHP SM4加密的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • PHP new static 和 new self详解

    PHP new static 和 new self详解

    使用 self:: 或者 __CLASS__ 对当前类的静态引用,取决于定义当前方法所在的类:使用 static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。
    2017-02-02
  • PHP设计模式之组合模式定义与应用示例

    PHP设计模式之组合模式定义与应用示例

    这篇文章主要介绍了PHP设计模式之组合模式定义与应用,结合实例形式详细分析了PHP组合模式基本原理、定义与使用方法,需要的朋友可以参考下
    2020-02-02
  • php常用表单验证类用法实例

    php常用表单验证类用法实例

    这篇文章主要介绍了php常用表单验证类用法,实例分析了php针对表单元素常用验证技巧,需要的朋友可以参考下
    2015-06-06
  • php数组函数序列之array_key_exists() - 查找数组键名是否存在

    php数组函数序列之array_key_exists() - 查找数组键名是否存在

    array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false
    2011-10-10
  • PHP项目多语言配置平台实现过程解析

    PHP项目多语言配置平台实现过程解析

    这篇文章主要介绍了PHP项目多语言配置平台实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 微信公众平台开发教程⑥ 微信开发集成类的使用图文详解

    微信公众平台开发教程⑥ 微信开发集成类的使用图文详解

    这篇文章主要介绍了微信公众平台开发之微信开发集成类的使用,结合图文形式详细分析了微信开发集成类的原理、功能、用法及相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • 详解cookie验证的php应用的一种SSO解决办法

    详解cookie验证的php应用的一种SSO解决办法

    这篇文章主要介绍了详解cookie验证的php应用的一种SSO解决办法的相关资料,希望通过本文能帮助到大家让大家遇到这种类似问题解决,需要的朋友可以参考下
    2017-10-10

最新评论