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 split汉字
Jun 05 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
PHP的PDO预定义常量讲解
Jan 24 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
Sony CFR 320 修复改造
2020/03/14 无线电
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
JavaScript中常用的运算符小结
2012/01/18 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
python实现红包裂变算法
2016/02/16 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
浅析python的Lambda表达式
2019/02/27 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
三个Unix的命令面试题
2015/04/12 面试题
自荐信的五个重要部分
2013/10/29 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
反腐倡廉标语
2014/06/24 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
个人作风建设自查报告
2014/10/22 职场文书
关于安全的广播稿
2014/10/23 职场文书
民政局未婚证明
2015/06/15 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js