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的字符串用法小结
Jun 08 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
php操作xml入门之cdata区段
Jan 23 PHP
Laravel实现用户注册和登录
Jan 23 PHP
PHP进程同步代码实例
Feb 12 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
php自动加载方式集合
Apr 04 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
微信自定义分享php代码分析
Nov 24 PHP
php 读写json文件及修改json的方法
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
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
如何在PHP中使用数组
2020/06/09 PHP
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
python ssh 执行shell命令的示例
2020/09/29 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
家长寄语大全
2014/04/02 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS
python标准库ElementTree处理xml
2022/05/20 Python