Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet die FFmpeg-Schnittstelle, um die Wiedergabedauer, Bitrate, Miniaturansicht und Erstellungszeit des Videos zu ermitteln

PHP verwendet die FFmpeg-Schnittstelle, um die Wiedergabedauer, Bitrate, Miniaturansicht und Erstellungszeit des Videos zu ermitteln

高洛峰
高洛峰Original
2018-05-15 14:58:234703Durchsuche

FFmpeg ist ein Video-Plug-in, um videobezogene Informationen zu erhalten, einschließlich der Videowiedergabezeit, Video-Bitrate, Video-Miniaturansichten und Videoerstellungszeit Erhält Videoinformationen, können bedürftige Freunde darauf verweisen.

FFmpeg ruft die Miniaturansicht der Videodatei ab:

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 liest die Videowiedergabedauer und Bitrate aus

<?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 ruft die Gesamtzahl ab der Videodatei Länge und Erstellungszeit

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
   );
}

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt, und ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.

Weitere Artikel zu PHP, die die FFmpeg-Schnittstelle verwenden, um die Wiedergabedauer, Bitrate, Miniaturansicht und Erstellungszeit des Videos zu ermitteln, finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn