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中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
提高PHP编程效率的方法
Nov 07 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
php图片裁剪函数
Oct 31 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 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
?生?D片??C字串
2006/12/06 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
js实现简单计算器
2015/11/22 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
JS验证码实现代码
2017/09/14 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
python实现tail -f 功能
2020/01/17 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
总经理助理的八要求
2013/11/12 职场文书
活动总结书
2014/05/08 职场文书
营销团队口号
2014/06/06 职场文书