当前位置: 首页 > 编程笔记 >

php使用ffmpeg获取视频信息并截图的实现方法

姜泳
2023-03-14
本文向大家介绍php使用ffmpeg获取视频信息并截图的实现方法,包括了php使用ffmpeg获取视频信息并截图的实现方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

 类似资料:
  • 读取视频信息 如需获取分P,需要以不同页码多次调用本接口 — @fython 调用地址 http://api.bilibili.cn/view 需要 App Key 参数 字段 必选 类型 说明 id true int AV号 page true int 页码 fav false int 是否读取会员收藏状态 (默认 0) 返回 返回值字段 字段类型 字段说明 play int 播放次数 revi

  • 通过该接口可以获取指定用户的有效视频的信息,目前共六个版本,最新版本为V6: a.当地址为https://spark.bokecc.com/api/video/v6 需要传递以下参数 参数 说明 userid 用户 id,不可为空 videoid 视频 id,不可为空 imagetype 返回封面截图的类型,默认值:0(0:小图;1:大图) format 返回格式,xml 或 json 返回数据v

  • 本文向大家介绍PHP中使用php5-ffmpeg撷取视频图片实例,包括了PHP中使用php5-ffmpeg撷取视频图片实例的使用技巧和注意事项,需要的朋友参考一下 前几天在玩 FFmpeg 的时后,突然发现 Ubuntu 上多了 php5-ffmpeg 这个扩充套件,就想来玩玩看,看好不好用,有两个结论: 读取影片取决于 FFmpeg 的支援性,如果想要什么格式都支援的话,建议自己重新编译 FFm

  • 本文向大家介绍js+HTML5实现视频截图的方法,包括了js+HTML5实现视频截图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js+HTML5实现视频截图的方法。分享给大家供大家参考。具体如下: 1. HTML部分: 2. 点击按钮时触发如下代码: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍C#实现通过ffmpeg从flv视频文件中截图的方法,包括了C#实现通过ffmpeg从flv视频文件中截图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现通过ffmpeg从flv视频文件中截图的方法。分享给大家供大家参考。具体分析如下: 需要先下载ffmpeg,这是开源的,代码如下所示: 希望本文所述对大家的C#程序设计有所帮助。

  • 读取视频排行信息 调用地址 http://api.bilibili.cn/list 需要 App Key 参数 字段 必选 类型 说明 tid true int 分类编号 new排序为必填 其他为可选 exclude_tid false int 排除分类编号 不可与tid同时使用 mid false int 只显示该帐号投稿 begin false date 起始搜索日期 (格式:YYYY-mm-