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 相关文章推荐
简单易用的计数器(数据库)
Oct 09 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
mysql+php分页类(已测)
Mar 31 PHP
火车头discuz6.1 完美采集的php接口文件
Sep 13 PHP
20个PHP常用类库小结
Sep 11 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
Laravel 实现密码重置功能
Feb 23 PHP
php的优点总结 php有哪些优点
Jul 19 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引用返回与取消引用的详解
2013/06/08 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
vue实现分页栏效果
2019/06/28 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python自定义线程池实现方法分析
2018/02/07 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python3 max()函数基础用法
2019/02/19 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
python实现学生成绩测评系统
2020/06/22 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
如何利用python生成MD5并去重
2020/12/07 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
const和static readonly区别
2013/05/20 面试题
党员承诺书内容
2014/03/26 职场文书
出国留学英文自荐信
2015/03/25 职场文书
四群教育工作总结
2015/08/10 职场文书
Python实现仓库管理系统
2022/05/30 Python