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过滤危险html代码
Aug 18 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
最常用的8款PHP调试工具
Jul 06 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 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/10/27 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
详解PHP归并排序的实现
2016/10/18 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
浅析JS运动
2015/12/28 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
python实现音乐下载的统计
2018/06/20 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
python中列表的含义及用法
2020/05/26 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
舞蹈教师自荐信
2014/01/27 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
白岩松演讲
2014/05/21 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
delete in子查询不走索引问题分析
2022/07/07 MySQL