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.ini中文版(1)
Oct 09 PHP
php 文件状态缓存带来的问题
Dec 14 PHP
用PHP将数据导入到Foxmail的实现代码
Sep 05 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
php使用json_encode对变量json编码
Apr 07 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP中的float类型使用说明
2010/07/27 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
全民健身日活动方案
2014/01/29 职场文书
标准自荐信范文
2014/01/29 职场文书
小学生美德少年事迹
2014/02/02 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
投标担保书范文
2014/04/02 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python