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 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
php里array_work用法实例分析
Jul 13 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
Yii框架分页技术实例分析
Aug 30 PHP
PHP的Trait机制原理与用法分析
Oct 18 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Python检测网络延迟的代码
2018/05/15 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
优秀学生自我鉴定范例
2013/12/18 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
房屋买卖协议样本
2014/11/16 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
公司借款担保书
2015/09/22 职场文书
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技