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 相关文章推荐
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
php读取excel文件的简单实例
Aug 26 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
微信支付开发维权通知实例
Jul 12 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
搜索引擎技术核心揭密
2006/10/09 PHP
多数据表共用一个页的新闻发布
2006/10/09 PHP
php导出CSV抽象类实例
2014/09/24 PHP
Yii核心验证器api详解
2016/11/23 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
javascript制作2048游戏
2015/03/30 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
Vue.use源码分析
2017/04/22 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
Champion官网:美国冠军运动服装
2017/01/25 全球购物
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
开办饭店创业计划书
2013/12/28 职场文书
学术会议邀请函范文
2014/01/22 职场文书
廉洁自律个人总结
2015/02/14 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
Golang数据类型和相互转换
2022/04/12 Golang