Home >Backend Development >PHP Tutorial >How to use php to operate flv files to obtain screenshots

How to use php to operate flv files to obtain screenshots

墨辰丷
墨辰丷Original
2018-06-12 16:33:241439browse

This article mainly introduces the method of PHP to obtain the video preview from the FLV file. It analyzes the techniques of operating the flv file to obtain screenshots with PHP. It has certain reference value. Friends who need it can refer to it

The example in this article describes how PHP obtains a video preview from an FLV file. The specific implementation method is as follows:

The code is as follows:

<?php
// references http://www.longtailvideo.com/support/forum/Modules/12661/External-PHP-with-FFmpeg-using-readfile-
// generate a preview image from an FLV file on-the-fly, or to save
// call with: ffmpeg_image.php?file=video.flv&time=00:00:05&browser=true
// call with: ffmpeg_image.php?file=video.flv&percent=75.3&browser=true
// no time defaults to "00:00:01" (one second), no browser defaults to "true"
$videofile = (isset($_GET[&#39;file&#39;])) ? strval($_GET[&#39;file&#39;]) : &#39;video.flv&#39;;
$image = substr($videofile, 0, strlen($videofile) - 4);
$time = (isset($_GET[&#39;time&#39;])) ? strval($_GET[&#39;time&#39;]) : &#39;00:00:01&#39;;
// debug ("  File: ", $videofile);
// debug (" Image: ", $image);
// debug ("  Time: ", $time);
// check time format
if (!preg_match(&#39;/\d\d:\d\d:\d\d/&#39;, $time))
{
  $time = "00:00:00";
}
if (isset($_GET[&#39;percent&#39;]))
{
  $percent = $_GET[&#39;percent&#39;];
// debug (" Percent: ", $percent);
  ob_start();
  exec("/usr/bin/ffmpeg -i \"". $videofile . "\" 2>&1");
  $duration = ob_get_contents();
  ob_end_clean();
  // debug ("Duration: ", $duration);
  preg_match(&#39;/Duration: (.*?),/&#39;, $duration, $matches);
  $duration = $matches[1];
// debug ("Duration: ", $duration);
  $duration_array = split(&#39;:&#39;, $duration);
  $duration = $duration_array[0] * 3600 + $duration_array[1] * 60 + $duration_array[2];
  $time = $duration * $percent / 100;
// debug (" Time: ", $time);
  $time = intval($time/3600) . ":" . intval(($time-(intval($time/3600)*3600))/60) . ":" . sprintf("%01.3f", ($time-(intval($time/60)*60)));
// debug (" Time: ", $time);
}
$browser = (isset($_GET[&#39;browser&#39;])) ? strval($_GET[&#39;browser&#39;]) : &#39;true&#39;;
// debug (" Browser: ", $browser);
if ($browser == "true")
{
  header(&#39;Content-Type: image/png&#39;);
  exec("/usr/bin/ffmpeg -vcodec png -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 -");
//header(&#39;Content-Type: image/jpeg&#39;);
//exec("/usr/bin/ffmpeg -vcodec mjpeg -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 -");
}
else
{
  exec("/usr/bin/ffmpeg -vcodec png -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 \"" . $image . "\"%d.png");
//exec("/usr/bin/ffmpeg -vcodec mjpeg -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 \"" . $image . "\"%d.jpg");
}
?>

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's learning.

Related recommendations:

Basic knowledge of streams in PHP

The definition of the static keyword in PHP, late binding and the self key The difference between words

The concept and characteristics of PHP singleton mode

The above is the detailed content of How to use php to operate flv files to obtain screenshots. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn