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获取音频信息的资料请关注脚本之家其它相关文章!
相关文章
PDO版本问题 Invalid parameter number: no parameters were bound
发现在客户的某个PHP版本下,执行某类操作的时候,总是会报如下错误 Invalid parameter number: no parameters were bound,经google,发现是php版本过低导致2013-01-01
解析php中array_merge与array+array的区别
本篇文章是对php中array_merge与array+array的区别进行了详细的分析介绍,需要的朋友参考下2013-06-06
php使用json_decode后数字对象转换成了科学计数法的解决方法
这篇文章主要介绍了php使用json_decode后数字对象转换成了科学计数法的解决方法,涉及php操作json格式数据与数值转换相关技巧,需要的朋友可以参考下2017-02-02
PHP实现的mysql操作类【MySQL与MySQLi方式】
这篇文章主要介绍了PHP实现的mysql操作类,结合实例形式分析了MySQL与MySQLi方式连接与操作MySQL数据库的常用方法封装与使用技巧,需要的朋友可以参考下2017-10-10


最新评论