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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
php中定时计划任务的实现原理
Jan 08 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
如何实现php图片等比例缩放
Jul 28 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 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
香妃
2021/03/03 冲泡冲煮
PHP登录验证码的实现与使用方法
2016/07/07 PHP
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
高性能装备提升营地:Kammok
2019/02/27 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
购房意向书范本
2014/04/01 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
期末评语大全
2014/05/04 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
高三英语教学反思
2016/03/03 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python