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


Posted in PHP onMay 03, 2016

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

$movie = new ffmpeg_movie('4.mp4');
$width=$movie->getFrameWidth();
$height=$movie->getFrameHeight();
$count= $movie->getFrameCount();
print $count . '';
$n = round ( $count/16 );
print $n . '';
for ( $i = 1; $i <= 1; $i ++ ) {
  $img = 'screencap' . $i . '.png';
  $x = $n * $i;
  $f = $movie->getFrame($x);
  $gd_image = $f->toGDImage();
  imagepng($gd_image, $img);
  imagedestroy($gd_image);
  echo "
\n";
}
$extension = "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;
// load extension
if (!extension_loaded($extension)) {
  dl($extension_soname) or die("Can't load extension $extension_fullname\n");
}
if (php_sapi_name() != 'cli') {
  echo '
';
}
printf("ffmpeg-php version string: %s\n", FFMPEG_PHP_VERSION_STRING);
printf("ffmpeg-php build date string: %s\n", FFMPEG_PHP_BUILD_DATE_STRING);
printf("libavcodec build number: %d\n", LIBAVCODEC_BUILD_NUMBER);
printf("libavcodec version number: %d\n", LIBAVCODEC_VERSION_NUMBER);
print_class_methods("ffmpeg_movie");
print_class_methods("ffmpeg_frame");
// get an array for movies from the test media directory
$movies = getDirFiles(dirname(__FILE__) . '/tests/test_media');
echo "--------------------\n\n";
foreach($movies as $movie) {
  $mov = new ffmpeg_movie($movie);
  printf("file name = %s\n", $mov->getFileName());
  printf("duration = %s seconds\n", $mov->getDuration());
  printf("frame count = %s\n", $mov->getFrameCount());
  printf("frame rate = %0.3f fps\n", $mov->getFrameRate());
  printf("comment = %s\n", $mov->getComment());
  printf("title = %s\n", $mov->getTitle());
  printf("author = %s\n", $mov->getAuthor());
  printf("copyright = %s\n", $mov->getCopyright());
  printf("get bit rate = %d\n", $mov->getBitRate());
  printf("has audio = %s\n", $mov->hasAudio() == 0 ? 'No' : 'Yes');
  if ($mov->hasAudio()) {
    printf("get audio stream id= %s\n", $mov->getAudioStreamId());
    printf("get audio codec = %s\n", $mov->getAudioCodec());
    printf("get audio bit rate = %d\n", $mov->getAudioBitRate());
    printf("get audio sample rate = %d \n", $mov->getAudioSampleRate());
    printf("get audio channels = %s\n", $mov->getAudioChannels());
  }
  printf("has video = %s\n", $mov->hasVideo() == 0 ? 'No' : 'Yes');
  if ($mov->hasVideo()) {
    printf("frame height = %d pixels\n", $mov->getFrameHeight());
    printf("frame width = %d pixels\n", $mov->getFrameWidth());
    printf("get video stream id= %s\n", $mov->getVideoStreamId());
    printf("get video codec = %s\n", $mov->getVideoCodec());
    printf("get video bit rate = %d\n", $mov->getVideoBitRate());
    printf("get pixel format = %s\n", $mov->getPixelFormat());
    printf("get pixel aspect ratio = %s\n", $mov->getPixelAspectRatio());
    $frame = $mov->getFrame(10);
    printf("get frame = %s\n", is_object($frame) ? 'true' : 'false');
    printf(" get frame number = %d\n", $mov->getFrameNumber());
    printf(" get frame width = %d\n", $frame->getWidth());
    printf(" get frame height = %d\n", $frame->getHeight());
  }
  echo "\n--------------------\n\n";
}
if (php_sapi_name() != 'cli') {
  echo '';
}
/* FUNCTIONS */
function print_class_methods($class) {
  echo "\nMethods available in class '$class':\n";
  $methods = get_class_methods($class);
  if (is_array($methods)) {
    foreach($methods as $method) {
      echo $method . "\n";
    }
  } else {
    echo "No Methods Defined\n";
  }
}
function getDirFiles($dirPath)
{
  if ($handle = opendir($dirPath))
  {
    while (false !== ($file = readdir($handle))) {
      $fullpath = $dirPath . '/' . $file;
      if (!is_dir($fullpath) && $file != "CVS" && $file != "." && $file != "..")
        $filesArr[] = trim($fullpath);
    }
    closedir($handle);
  }
  return $filesArr;
}
?>

运行效果如下图所示:

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

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP array操作10个小技巧分享
Jun 23 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
php检测url是否存在的方法
Apr 14 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
基于php数组中的索引数组和关联数组详解
Mar 12 PHP
Linux环境下php实现给网站截图的方法
May 03 #PHP
PHPExcel笔记, mpdf导出
May 03 #PHP
PHP实现的进度条效果详解
May 03 #PHP
php实现按天数、星期、月份查询的搜索框
May 02 #PHP
php支持断点续传、分块下载的类
May 02 #PHP
php数组分页实现方法
Apr 30 #PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 #PHP
You might like
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
javascript简易画板开发
2020/04/12 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
[48:51]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第一场 11.28
2020/12/02 DOTA
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
Python3.5运算符操作实例详解
2019/04/25 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
团日活动总结范文
2014/04/25 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
Golang map映射的用法
2022/04/22 Golang