当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2024-03-16 13:24:07 浏览: 评论:0 

这篇文章给大家介绍了使用PHP利用ffmpeg获取音频、视频的详细信息,音视频总时长、码率、视频分辨率、音频编码、音频采样频率、实际播放时间、文件大小,文中给出详细的代码示例,具有一定的参考价值,需要的朋友可以参考下。

一、目的

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

二、下载并安装ffmpeg

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

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

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

三、PHP代码

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

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

  1. /** 
  2.  * 获取音视频基本信息 
  3.  */ 
  4. public function getVideoInfo($file
  5.      $command = sprintf('E:/phpstudy_pro/WWW/test/public/ffmpeg/bin/ffmpeg -i "%s" 2>&1'$file);  //你的ffmpeg路径 
  6.    
  7.      ob_start(); 
  8.      passthru($command); 
  9.      $info = ob_get_contents(); 
  10.      ob_end_clean(); 
  11.    
  12.      $data = array(); 
  13.      if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/"$info$match)) { 
  14.          $data['duration'] = $match[1]; //播放时间 
  15.          $arr_duration = explode(':'$match[1]); 
  16.          $data['seconds'] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //转换播放时间为秒数 
  17.          $data['start'] = $match[2]; //开始时间 
  18.          $data['bitrate'] = $match[3]; //码率(kb) 
  19.      } 
  20.      if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/"$info$match)) { 
  21.          $data['vcodec'] = $match[1]; //视频编码格式 
  22.          $data['vformat'] = $match[2]; //视频格式 
  23.          $data['resolution'] = $match[3]; //视频分辨率 
  24.          $arr_resolution = explode('x'$match[3]); 
  25.          $data['width'] = $arr_resolution[0]; 
  26.          $data['height'] = $arr_resolution[1]; 
  27.      } 
  28.      if (preg_match("/Audio: (\w*), (\d*) Hz/"$info$match)) { 
  29.          $data['acodec'] = $match[1]; //音频编码 
  30.          $data['asamplerate'] = $match[2]; //音频采样频率 
  31.      } 
  32.      if (isset($data['seconds']) && isset($data['start'])) { 
  33.          $data['play_time'] = $data['seconds'] + $data['start']; //实际播放时间 
  34.      } 
  35.      $data['size'] = filesize($file); //文件大小 
  36.      return $data
  37.    
  38. /** 
  39.  * 调用 
  40.  */ 
  41. public function video() 
  42.     // 定义视频路径 
  43.     $videoPath = 'E:/phpstudy_pro/WWW/test/public/uploads/8秒.mp4'
  44.     $video_info = $this->getVideoInfo($videoPath); 
  45.     echo '<pre>'
  46.     print_r($video_info); 

四、运行结果

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

Tags: PHP获取音频 ffmpeg获取音频

分享到: