PHP从FLV文件获取视频预览图的方法


Posted in PHP onMarch 12, 2015

本文实例讲述了PHP从FLV文件获取视频预览图的方法。分享给大家供大家参考。具体实现方法如下:

<?php

// references http://www.longtailvideo.com/support/forum/Modules/12661/External-PHP-with-FFmpeg-using-readfile-

// generate a preview image from an FLV file on-the-fly, or to save

// call with: ffmpeg_image.php?file=video.flv&time=00:00:05&browser=true

// call with: ffmpeg_image.php?file=video.flv&percent=75.3&browser=true

// no time defaults to "00:00:01" (one second), no browser defaults to "true"

$videofile = (isset($_GET['file'])) ? strval($_GET['file']) : 'video.flv';

$image = substr($videofile, 0, strlen($videofile) - 4);

$time = (isset($_GET['time'])) ? strval($_GET['time']) : '00:00:01';

// debug ("  File: ", $videofile);

// debug (" Image: ", $image);

// debug ("  Time: ", $time);

// check time format

if (!preg_match('/\d\d:\d\d:\d\d/', $time))

{

  $time = "00:00:00";

}

if (isset($_GET['percent']))

{

  $percent = $_GET['percent'];

// debug (" Percent: ", $percent);

  ob_start();

  exec("/usr/bin/ffmpeg -i \"". $videofile . "\" 2>&1");

  $duration = ob_get_contents();

  ob_end_clean();

  // debug ("Duration: ", $duration);

  preg_match('/Duration: (.*?),/', $duration, $matches);

  $duration = $matches[1];

// debug ("Duration: ", $duration);

  $duration_array = split(':', $duration);

  $duration = $duration_array[0] * 3600 + $duration_array[1] * 60 + $duration_array[2];

  $time = $duration * $percent / 100;

// debug (" Time: ", $time);

  $time = intval($time/3600) . ":" . intval(($time-(intval($time/3600)*3600))/60) . ":" . sprintf("%01.3f", ($time-(intval($time/60)*60)));

// debug (" Time: ", $time);

}

$browser = (isset($_GET['browser'])) ? strval($_GET['browser']) : 'true';

// debug (" Browser: ", $browser);

if ($browser == "true")

{

  header('Content-Type: image/png');

  exec("/usr/bin/ffmpeg -vcodec png -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 -");

//header('Content-Type: image/jpeg');

//exec("/usr/bin/ffmpeg -vcodec mjpeg -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 -");

}

else

{

  exec("/usr/bin/ffmpeg -vcodec png -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 \"" . $image . "\"%d.png");

//exec("/usr/bin/ffmpeg -vcodec mjpeg -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 \"" . $image . "\"%d.jpg");

}

?>

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

PHP 相关文章推荐
关于页面优化和伪静态
Oct 11 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php实现多张图片上传加水印技巧
Apr 18 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
浅谈PHP的反射API
Feb 26 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
Laravel 连接(Join)示例
Oct 16 PHP
PHP简单获取视频预览图的方法
Mar 12 #PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 #PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 #PHP
PHP实现从远程下载文件的方法
Mar 12 #PHP
PHP判断网络文件是否存在的方法
Mar 12 #PHP
php实现过滤UBB代码的类
Mar 12 #PHP
PHP列出MySQL中所有数据库的方法
Mar 12 #PHP
You might like
source.php查看源文件
2006/12/09 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
js实现五星评价功能
2017/03/08 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Django choices下拉列表绑定实例
2020/03/13 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
人事任命书格式
2014/06/05 职场文书
会计求职简历自我评价
2015/03/10 职场文书
学风建设主题班会
2015/08/17 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
浅谈MySQL中的六种日志
2022/03/23 MySQL