·您当前的位置:首页 > 技术教程 > FFmpeg技术 >

[ffmpeg]php调用FFmpeg来取取视频时长等元数据信息

时间:2017-03-14 10:59酷播
[ffmpeg]php调用FFmpeg来取取视频时长等元数据信息,这篇文章给大家分享了利用PHP中的FFmpeg读取视频播放时长与码率等信息,有需要的朋友们可以参考借鉴。下面来一起看看吧。

这篇文章给大家分享了利用PHP中的FFmpeg读取视频播放时长与码率等信息,有需要的朋友们可以参考借鉴。下面来一起看看吧。

请注意:这篇文章中会用到passthru,可能部分虚拟主机会将此命令禁用。

代码如下:

PHP

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

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器