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

一、目的

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

二、下载并安装ffmpeg

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

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

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

三、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 ffmpeg获取音频信息的资料请关注恩蓝小号其它相关文章!

原创文章,作者:HGPGC,如若转载,请注明出处:https://www.wangzhanshi.com/n/663.html

(0)
HGPGC的头像HGPGC
上一篇 2024年12月17日 17:53:09
下一篇 2024年12月17日 17:53:11

相关推荐

  • PHP中json浮点精度的解决方法

    前言 之前开发的接口需要用到json加签,有一次对接JAVA时,签名怎么都过不了,仔细对比了字符串,发现是PHP进行json_encode时,会将浮点型所有无意义的0给去掉(ech…

    php 2024年12月17日
  • PHP ceil()函数浮点数向上取整实现示例

    PHP中ceil()函数 在PHP中,ceil()函数用于向上取整。当我们需要将一个浮点数向上取整为一个大于等于该浮点数的最小整数时,就可以使用ceil()函数。 ceil()函数…

    php 2024年12月17日
  • php7下载安装imagick扩展

    适用于Centos6.x和Centos7.x系统,php使用7.1版本,wlnmp一键包已支持该扩展 imagick扩展包地址: https://pecl.php.net/pack…

    2025年1月1日
  • 浅谈laravel5.X安装centos6.5系统

    由于工作需要特去从零学习laravel。 真的是如laravel中文网所说的样子:一开始接触laravel最好是一键安装集成包,省得开头就被(composer)难住以至于未开始已经…

    2025年1月1日
  • php5有哪些魔术方法

    php5的魔术方法有:1、“__construct()”魔术方法,表示类的构造函数;2、“__destruct()”魔术方法,表示类的析构函数;3、“__call()”魔术方法,该…

    php 2025年1月2日
  • 向PHP传入参数的三种方法

    方法一:通过URL参数(GET请求) 概述:GET请求是最常见的HTTP请求方法之一,它通过将参数附加在URL的末尾来传递数据。这些数据以键值对的形式出现,并使用问号(?)和与号(…

    php 2024年12月17日
  • php7与php5的版本区别大不大呢

    php5与php7之间的区别: 1、性能提升:PHP7比PHP5.0性能提升了两倍。 2、以前的许多致命错误,现在改成抛出异常。 3、PHP 7.0比PHP5.0移除了一些老的不在…

    php 2025年1月1日
  • php7和PHP5对比有什么区别

    php7和PHP5对比的新特性和性能优化 1. 抽象语法树(AST) AST在PHP编译过程作为一个中间件的角色,替换原来直接从解释器吐出opcode的方式,让解释器(parser…

    php 2025年1月1日
  • PHP5魔术常量与魔术方法的用法

    魔术常量:1。__LINE__返回文件中的当前行号。2。__FILE__  返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE_…

    php 2025年1月2日
  • 如何解决php7无法加载curl的问题

    为了快速救火先贴出解决办法: #在apache 的主配置文件httpd.conf中加入 LoadFile "E:\myServer\php\libssh3.dll&quo…

    php 2025年1月1日

发表回复

登录后才能评论