Maison  >  Article  >  développement back-end  >  php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间

php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间

高洛峰
高洛峰original
2018-05-15 14:58:234575parcourir

FFmpeg是一个视频插件,我们可以利用调用FFmpeg接口来获取视频的相关信息,包括视频的播放时长,视频的码率,视频的缩略图以及视频创建时间,本文章向大家介绍php如何使用FFmpeg接口获取视频信息,需要的朋友可以参考一下。

FFmpeg获得视频文件的缩略图:

function getVideoCover($file,$time,$name) {
   if(empty($time))$time = '1';//默认截取第一秒第一帧
   $strlen = strlen($file);
   // $videoCover = substr($file,0,$strlen-4);
   // $videoCoverName = $videoCover.'.jpg';//缩略图命名
 //exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$time." -t 0.001 -s 320x240 ".$name."",$out,$status);
   $str = "ffmpeg -i ".$file." -y -f mjpeg -ss 3 -t ".$time." -s 320x240 ".$name;
   //echo $str."</br>";
   $result = system($str);
   }

Fmpeg读取视频播放时长和码率

<?php
define(&#39;FFMPEG_PATH&#39;, &#39;/usr/local/ffmpeg2/bin/ffmpeg -i "%s" 2>&1&#39;);
  
function getVideoInfo($file) {
   
  $command = sprintf(FFMPEG_PATH, $file);
   
  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[&#39;duration&#39;] = $match[1]; //播放时间
    $arr_duration = explode(&#39;:&#39;, $match[1]);
$data[&#39;seconds&#39;] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //转换播放时间为秒数
    $data[&#39;start&#39;] = $match[2]; //开始时间
    $data[&#39;bitrate&#39;] = $match[3]; //码率(kb)
  }
  if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) {
    $data[&#39;vcodec&#39;] = $match[1]; //视频编码格式
    $data[&#39;vformat&#39;] = $match[2]; //视频格式
    $data[&#39;resolution&#39;] = $match[3]; //视频分辨率
    $arr_resolution = explode(&#39;x&#39;, $match[3]);
    $data[&#39;width&#39;] = $arr_resolution[0];
    $data[&#39;height&#39;] = $arr_resolution[1];
  }
  if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) {
    $data[&#39;acodec&#39;] = $match[1]; //音频编码
    $data[&#39;asamplerate&#39;] = $match[2]; //音频采样频率
  }
  if (isset($data[&#39;seconds&#39;]) && isset($data[&#39;start&#39;])) {
    $data[&#39;play_time&#39;] = $data[&#39;seconds&#39;] + $data[&#39;start&#39;]; //实际播放时间
  }
  $data[&#39;size&#39;] = filesize($file); //文件大小
  return $data;
}
  
//用法
$video_info = getVideoInfo(&#39;video.mp4&#39;);
print_r($video_info);
?>

Fmpeg获得视频文件的总长度时间和创建时间

function getTime($file){
   $vtime = exec("ffmpeg -i ".$file." 2>&1 | grep &#39;Duration&#39; | cut -d &#39; &#39; -f 4 | sed s/,//");//总长度
   $ctime = date("Y-m-d H:i:s",filectime($file));//创建时间
   //$duration = explode(":",$time);
   // $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//转化为秒
   return array(&#39;vtime&#39;=>$vtime,
   &#39;ctime&#39;=>$ctime
   );
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间相关文章请关注PHP中文网!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn