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

php使用ffmpeg获取视频信息并截图的实现方法

发布:smiling 来源: PHP粉丝网  添加日期:2019-08-12 15:06:51 浏览: 评论:0 

本文实例讲述了php使用ffmpeg获取视频信息并截图的方法。分享给大家供大家参考,具体如下:

  1. $movie = new ffmpeg_movie('4.mp4'); 
  2.  
  3. $width=$movie->getFrameWidth(); 
  4.  
  5. $height=$movie->getFrameHeight(); 
  6.  
  7. $count$movie->getFrameCount(); 
  8.  
  9. print $count . ''
  10.  
  11. $n = round ( $count/16 ); 
  12.  
  13. print $n . ''
  14.  
  15. for ( $i = 1; $i <= 1; $i ++ ) { 
  16.  
  17.   $img = 'screencap' . $i . '.png'
  18.  
  19.   $x = $n * $i
  20.  
  21.   $f = $movie->getFrame($x); 
  22.  
  23.   $gd_image = $f->toGDImage(); 
  24.  
  25.   imagepng($gd_image$img); 
  26.  
  27.   imagedestroy($gd_image); 
  28.  
  29.   echo " 
  30.  
  31. \n"; 
  32.  
  33.  
  34. $extension = "ffmpeg"
  35.  
  36. $extension_soname = $extension . "." . PHP_SHLIB_SUFFIX; 
  37.  
  38. $extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname
  39.  
  40. // load extension 
  41.  
  42. if (!extension_loaded($extension)) { 
  43.  
  44.   dl($extension_sonameor die("Can't load extension $extension_fullname\n"); 
  45.  
  46.  
  47. if (php_sapi_name() != 'cli') { 
  48.  
  49.   echo ' 
  50.  
  51. '; 
  52.  
  53.  
  54. printf("ffmpeg-php version string: %s\n", FFMPEG_PHP_VERSION_STRING); 
  55.  
  56. printf("ffmpeg-php build date string: %s\n", FFMPEG_PHP_BUILD_DATE_STRING); 
  57.  
  58. printf("libavcodec build number: %d\n", LIBAVCODEC_BUILD_NUMBER); 
  59.  
  60. printf("libavcodec version number: %d\n", LIBAVCODEC_VERSION_NUMBER); 
  61.  
  62. print_class_methods("ffmpeg_movie"); 
  63.  
  64. print_class_methods("ffmpeg_frame"); 
  65.  
  66. // get an array for movies from the test media directory 
  67.  
  68. $movies = getDirFiles(dirname(__FILE__) . '/tests/test_media'); 
  69.  
  70. echo "--------------------\n\n"
  71.  
  72. foreach($movies as $movie) { 
  73.  
  74.   $mov = new ffmpeg_movie($movie); 
  75.  
  76.   printf("file name = %s\n"$mov->getFileName()); 
  77.  
  78.   printf("duration = %s seconds\n"$mov->getDuration()); 
  79.  
  80.   printf("frame count = %s\n"$mov->getFrameCount()); 
  81.  
  82.   printf("frame rate = %0.3f fps\n"$mov->getFrameRate()); 
  83.  
  84.   printf("comment = %s\n"$mov->getComment()); 
  85.  
  86.   printf("title = %s\n"$mov->getTitle()); 
  87.  
  88.   printf("author = %s\n"$mov->getAuthor()); 
  89.  
  90.   printf("copyright = %s\n"$mov->getCopyright()); 
  91.  
  92.   printf("get bit rate = %d\n"$mov->getBitRate()); 
  93.  
  94.   printf("has audio = %s\n"$mov->hasAudio() == 0 ? 'No' : 'Yes'); 
  95.  
  96.   if ($mov->hasAudio()) { 
  97.  
  98.     printf("get audio stream id= %s\n"$mov->getAudioStreamId()); 
  99.  
  100.     printf("get audio codec = %s\n"$mov->getAudioCodec()); 
  101.  
  102.     printf("get audio bit rate = %d\n"$mov->getAudioBitRate()); 
  103.  
  104.     printf("get audio sample rate = %d \n"$mov->getAudioSampleRate()); 
  105.  
  106.     printf("get audio channels = %s\n"$mov->getAudioChannels()); 
  107.  
  108.   } 
  109.  
  110.   printf("has video = %s\n"$mov->hasVideo() == 0 ? 'No' : 'Yes'); 
  111.  
  112.   if ($mov->hasVideo()) { 
  113.  
  114.     printf("frame height = %d pixels\n"$mov->getFrameHeight()); 
  115.  
  116.     printf("frame width = %d pixels\n"$mov->getFrameWidth()); 
  117.  
  118.     printf("get video stream id= %s\n"$mov->getVideoStreamId()); 
  119.  
  120.     printf("get video codec = %s\n"$mov->getVideoCodec()); 
  121.  
  122.     printf("get video bit rate = %d\n"$mov->getVideoBitRate()); 
  123.  
  124.     printf("get pixel format = %s\n"$mov->getPixelFormat()); 
  125.  
  126.     printf("get pixel aspect ratio = %s\n"$mov->getPixelAspectRatio()); 
  127.  
  128.     $frame = $mov->getFrame(10); 
  129.  
  130.     printf("get frame = %s\n"is_object($frame) ? 'true' : 'false'); 
  131.  
  132.     printf(" get frame number = %d\n"$mov->getFrameNumber()); 
  133.  
  134.     printf(" get frame width = %d\n"$frame->getWidth()); 
  135.  
  136.     printf(" get frame height = %d\n"$frame->getHeight()); 
  137.  
  138.   } 
  139.  
  140.   echo "\n--------------------\n\n"
  141.  
  142.  
  143. if (php_sapi_name() != 'cli') { 
  144.  
  145.   echo ''
  146.  
  147.  
  148. /* FUNCTIONS */ 
  149.  
  150. function print_class_methods($class) { 
  151.  
  152.   echo "\nMethods available in class '$class':\n"
  153.  
  154.   $methods = get_class_methods($class); 
  155.  
  156.   if (is_array($methods)) { 
  157.  
  158.     foreach($methods as $method) { 
  159.  
  160.       echo $method . "\n"
  161.  
  162.     } 
  163.  
  164.   } else { 
  165.  
  166.     echo "No Methods Defined\n"
  167.  
  168.   } 
  169.  
  170.  
  171. function getDirFiles($dirPath
  172.  
  173.  
  174.   if ($handle = opendir($dirPath)) 
  175.  
  176.   { 
  177.  
  178.     while (false !== ($file = readdir($handle))) { 
  179.  
  180.       $fullpath = $dirPath . '/' . $file
  181.  
  182.       if (!is_dir($fullpath) && $file != "CVS" && $file != "." && $file != ".."
  183.  
  184.         $filesArr[] = trim($fullpath); 
  185. //phpfensi.com 
  186.     } 
  187.  
  188.     closedir($handle); 
  189.  
  190.   } 
  191.  
  192.   return $filesArr
  193.  
  194.  
  195. ?> 

Tags: php截图 ffmpeg

分享到: