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

 更新时间:2024年01月17日 10:01:08   作者:下页、再停留  
这篇文章给大家介绍了使用PHP利用ffmpeg获取音频、视频的详细信息,音视频总时长、码率、视频分辨率、音频编码、音频采样频率、实际播放时间、文件大小,文中给出详细的代码示例,具有一定的参考价值,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、目的

使用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手机号码归属地查询代码(API接口/mysql)

    PHP手机号码归属地查询代码(API接口/mysql)

    本文来介绍一下关于手机号码归属地实现方法,我们可以利用api接口与mysql+php来实例有需要的同学看看
    2012-09-09
  • 深入PHP内存相关的功能特性详解

    深入PHP内存相关的功能特性详解

    本篇文章是对PHP中内存相关的功能特性进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP实现的AES加密、解密封装类与用法示例

    PHP实现的AES加密、解密封装类与用法示例

    这篇文章主要介绍了PHP实现的AES加密、解密封装类与用法,结合实例形式分析了php封装的aes加密解密操作类及相关使用技巧,需要的朋友可以参考下
    2018-08-08
  • php删除文本文件中重复行的方法

    php删除文本文件中重复行的方法

    这篇文章主要介绍了php删除文本文件中重复行的方法,涉及php操作文本文件的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • vs中通过剪切板循环来循环粘贴不同内容

    vs中通过剪切板循环来循环粘贴不同内容

    只要按Ctrl+Shift+V键,就可以在过去剪切或复制到剪切板上的20条内容间进行循环粘贴,太帅了哈哈!
    2011-04-04
  • PHP简单读取xml文件的方法示例

    PHP简单读取xml文件的方法示例

    这篇文章主要介绍了PHP简单读取xml文件的方法,涉及php针对xml文件节点操作相关实现技巧,需要的朋友可以参考下
    2017-04-04
  • JS实现php的伪分页

    JS实现php的伪分页

    假如某一个页面的数据很多,不方便全都显示出来,而且假设里面有个播放器,不希望在翻页的时候播放器会终止的话,就可以采用这个方法尽管可以用Ajax,但是在数据比较少的情况下,这个方法更有优势
    2008-05-05
  • php对大文件进行读取操作的实现代码

    php对大文件进行读取操作的实现代码

    在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心, 下面将从一个需求入手来说明对于读取大文件时,常用的操作方法
    2013-01-01
  • 分享一个漂亮的php验证码类

    分享一个漂亮的php验证码类

    这篇文章主要为大家分享了一个漂亮的php验证码类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • PHP依赖注入原理与用法分析

    PHP依赖注入原理与用法分析

    这篇文章主要介绍了PHP依赖注入原理与用法,简单讲述了依赖注入的概念、原理并结合实例形式分析了php实现与使用依赖注入的相关操作技巧,需要的朋友可以参考下
    2018-08-08

最新评论

?


http://www.vxiaotou.com